From f6cb5bbba1e16a7e4299d82e4b3f47e92073a52a Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 14 Jan 2022 23:07:21 +0800 Subject: [PATCH 01/69] Added passport and namespace --- Cargo.lock | 402 ++++++++++++++++-- contracts/cw-cyber-airdrop/Cargo.toml | 12 +- contracts/cw-cyber-airdrop/README.md | 10 +- contracts/cw-cyber-passport/.cargo/config | 4 + contracts/cw-cyber-passport/Cargo.toml | 56 +++ contracts/cw-cyber-passport/README.md | 1 + .../cw-cyber-passport/examples/schema.rs | 20 + .../cw-cyber-passport/schema/execute_msg.json | 123 ++++++ .../schema/instantiate_msg.json | 33 ++ .../cw-cyber-passport/schema/query_msg.json | 18 + contracts/cw-cyber-passport/schema/route.json | 17 + contracts/cw-cyber-passport/schema/state.json | 57 +++ contracts/cw-cyber-passport/src/contract.rs | 207 +++++++++ contracts/cw-cyber-passport/src/error.rs | 14 + contracts/cw-cyber-passport/src/lib.rs | 6 + contracts/cw-cyber-passport/src/msg.rs | 41 ++ contracts/cw-cyber-passport/src/state.rs | 20 + contracts/cw721-namespace/.cargo/config | 5 + contracts/cw721-namespace/Cargo.toml | 34 ++ contracts/cw721-namespace/README.md | 1 + contracts/cw721-namespace/build.sh | 4 + contracts/cw721-namespace/examples/schema.rs | 41 ++ .../schema/all_nft_info_response.json | 166 ++++++++ .../schema/approval_response.json | 94 ++++ .../schema/approvals_response.json | 97 +++++ .../schema/contract_info_response.json | 17 + .../cw721-namespace/schema/execute_msg.json | 397 +++++++++++++++++ .../schema/instantiate_msg.json | 24 ++ .../schema/minter_response.json | 14 + .../schema/nft_info_response.json | 42 ++ .../schema/num_tokens_response.json | 15 + .../schema/operators_response.json | 97 +++++ .../schema/owner_of_response.json | 103 +++++ .../cw721-namespace/schema/query_msg.json | 284 +++++++++++++ .../schema/tokens_response.json | 17 + contracts/cw721-namespace/src/contract.rs | 95 +++++ contracts/cw721-namespace/src/error.rs | 33 ++ contracts/cw721-namespace/src/execute.rs | 129 ++++++ contracts/cw721-namespace/src/lib.rs | 6 + contracts/cw721-namespace/src/msg.rs | 241 +++++++++++ contracts/cw721-namespace/src/query.rs | 7 + contracts/cw721-namespace/src/state.rs | 21 + 42 files changed, 2967 insertions(+), 58 deletions(-) create mode 100644 contracts/cw-cyber-passport/.cargo/config create mode 100644 contracts/cw-cyber-passport/Cargo.toml create mode 100644 contracts/cw-cyber-passport/README.md create mode 100644 contracts/cw-cyber-passport/examples/schema.rs create mode 100644 contracts/cw-cyber-passport/schema/execute_msg.json create mode 100644 contracts/cw-cyber-passport/schema/instantiate_msg.json create mode 100644 contracts/cw-cyber-passport/schema/query_msg.json create mode 100644 contracts/cw-cyber-passport/schema/route.json create mode 100644 contracts/cw-cyber-passport/schema/state.json create mode 100644 contracts/cw-cyber-passport/src/contract.rs create mode 100644 contracts/cw-cyber-passport/src/error.rs create mode 100644 contracts/cw-cyber-passport/src/lib.rs create mode 100644 contracts/cw-cyber-passport/src/msg.rs create mode 100644 contracts/cw-cyber-passport/src/state.rs create mode 100644 contracts/cw721-namespace/.cargo/config create mode 100644 contracts/cw721-namespace/Cargo.toml create mode 100644 contracts/cw721-namespace/README.md create mode 100644 contracts/cw721-namespace/build.sh create mode 100644 contracts/cw721-namespace/examples/schema.rs create mode 100644 contracts/cw721-namespace/schema/all_nft_info_response.json create mode 100644 contracts/cw721-namespace/schema/approval_response.json create mode 100644 contracts/cw721-namespace/schema/approvals_response.json create mode 100644 contracts/cw721-namespace/schema/contract_info_response.json create mode 100644 contracts/cw721-namespace/schema/execute_msg.json create mode 100644 contracts/cw721-namespace/schema/instantiate_msg.json create mode 100644 contracts/cw721-namespace/schema/minter_response.json create mode 100644 contracts/cw721-namespace/schema/nft_info_response.json create mode 100644 contracts/cw721-namespace/schema/num_tokens_response.json create mode 100644 contracts/cw721-namespace/schema/operators_response.json create mode 100644 contracts/cw721-namespace/schema/owner_of_response.json create mode 100644 contracts/cw721-namespace/schema/query_msg.json create mode 100644 contracts/cw721-namespace/schema/tokens_response.json create mode 100644 contracts/cw721-namespace/src/contract.rs create mode 100644 contracts/cw721-namespace/src/error.rs create mode 100644 contracts/cw721-namespace/src/execute.rs create mode 100644 contracts/cw721-namespace/src/lib.rs create mode 100644 contracts/cw721-namespace/src/msg.rs create mode 100644 contracts/cw721-namespace/src/query.rs create mode 100644 contracts/cw721-namespace/src/state.rs diff --git a/Cargo.lock b/Cargo.lock index 3e5d590..c0dc9af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,12 +8,67 @@ version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "base-x" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" + [[package]] name = "base64" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake2s_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if 0.1.10", + "constant_time_eq", + "crypto-mac 0.8.0", + "digest", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -36,23 +91,52 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +[[package]] +name = "cc" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cid" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b8976b33648136e969aafa6eb33d58ff0d301fa0b4e8d513db58fd32cd81aa" +dependencies = [ + "multibase", + "multihash", + "unsigned-varint", +] + [[package]] name = "const-oid" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b" +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + [[package]] name = "cosmwasm-crypto" -version = "1.0.0-beta3" +version = "1.0.0-beta4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a380b87642204557629c9b72988c47b55fbfe6d474960adba56b22331504956a" +checksum = "f903ebbabc0d4880dbc76148efb8be8fc29fa4bf294c440c3d70da1c8bcafff7" dependencies = [ "digest", "ed25519-zebra", @@ -63,18 +147,18 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.0.0-beta3" +version = "1.0.0-beta4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866713b2fe13f23038c7d8824c3059d1f28dd94685fb406d1533c4eeeefeefae" +checksum = "832bebef577ecb394603de8e2bf0de429b74aa364e17dec18e15ce37e71b0cae" dependencies = [ "syn", ] [[package]] name = "cosmwasm-schema" -version = "1.0.0-beta3" +version = "1.0.0-beta4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "818b928263c09a3269c2bed22494a62107a43ef87900e273af8ad2cb9f7e4440" +checksum = "e5de9749a4a933c34c59db83a77935a79cd705f93ae2b1cfbe40821f32751f75" dependencies = [ "schemars", "serde_json", @@ -82,9 +166,9 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.0.0-beta3" +version = "1.0.0-beta4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dbb9939b31441dfa9af3ec9740c8a24d585688401eff1b6b386abb7ad0d10a8" +checksum = "6238c45840cc9de5a39f0f619e3a4f7c38c5d2c6ac9e3e4d72751ee045e6d7da" dependencies = [ "base64", "cosmwasm-crypto", @@ -96,6 +180,16 @@ dependencies = [ "uint", ] +[[package]] +name = "cosmwasm-storage" +version = "1.0.0-beta4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f472c0bfd584a4510702537d0b65c5331095e76099586a12f749fd69afda9c5e" +dependencies = [ + "cosmwasm-std", + "serde", +] + [[package]] name = "cpufeatures" version = "0.2.1" @@ -123,6 +217,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + [[package]] name = "crypto-mac" version = "0.11.1" @@ -148,17 +252,16 @@ dependencies = [ [[package]] name = "cw-cyber-airdrop" -version = "0.1.0" +version = "0.0.1" dependencies = [ "anyhow", "base64", - "cosmwasm-crypto", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus", + "cw-storage-plus 0.10.3", "cw-utils", "cw0", - "cw2", + "cw2 0.11.1", "cw20", "hex", "schemars", @@ -169,6 +272,23 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cw-cyber-passport" +version = "0.0.1" +dependencies = [ + "cid", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-storage-plus 0.10.3", + "cw2 0.10.3", + "cw721-base", + "cw721-namespace", + "schemars", + "serde", + "thiserror", +] + [[package]] name = "cw-storage-plus" version = "0.10.3" @@ -180,6 +300,17 @@ dependencies = [ "serde", ] +[[package]] +name = "cw-storage-plus" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d7ee1963302b0ac2a9d42fe0faec826209c17452bfd36fbfd9d002a88929261" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", +] + [[package]] name = "cw-utils" version = "0.11.1" @@ -211,21 +342,103 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7002e6f9c1a1ef3915dca704a6306ba00c39495efd928551d6077c734f9a3d8" dependencies = [ "cosmwasm-std", - "cw-storage-plus", + "cw-storage-plus 0.10.3", + "schemars", + "serde", +] + +[[package]] +name = "cw2" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1d81d7c359d6c1fba3aa83dad7ec6f999e512571380ae62f81257c3db569743" +dependencies = [ + "cosmwasm-std", + "cw-storage-plus 0.11.1", "schemars", "serde", ] [[package]] name = "cw20" -version = "0.10.3" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9671d7edef5608acaf5b2f1e473ee3f501eced2cd4f7392e2106c8cf02ba0720" +dependencies = [ + "cosmwasm-std", + "cw-utils", + "schemars", + "serde", +] + +[[package]] +name = "cw721" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e031c47a592cbdbed3cb05bff041b1754914098d1e4c361a5e4b9dd7b27c8c31" +dependencies = [ + "cosmwasm-std", + "cw-utils", + "schemars", + "serde", +] + +[[package]] +name = "cw721-base" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56fc9d54b9b365801beb101a5c0375dceaa5a285bfc14438a7b6007f9d362142" +checksum = "49c1616718f5410330dfca1f964795be9baefcc8d4ef45e3193d3bdb40a2290b" dependencies = [ "cosmwasm-std", + "cw-storage-plus 0.11.1", + "cw-utils", + "cw2 0.11.1", + "cw721", + "schemars", + "serde", + "thiserror", +] + +[[package]] +name = "cw721-namespace" +version = "0.0.1" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.10.3", "cw0", + "cw2 0.10.3", + "cw721", + "cw721-base", "schemars", "serde", + "thiserror", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "data-encoding-macro" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029aca" +dependencies = [ + "data-encoding", + "data-encoding-macro-internal", +] + +[[package]] +name = "data-encoding-macro-internal" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db" +dependencies = [ + "data-encoding", + "syn", ] [[package]] @@ -306,9 +519,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", "version_check", @@ -320,18 +533,18 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.10.2+wasi-snapshot-preview1", ] @@ -359,7 +572,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac", + "crypto-mac 0.11.1", "digest", ] @@ -375,7 +588,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "903ae2481bcdfdb7b68e0a9baa4b7c9aff600b9ae2e8e5bb5833b8c91ab851ea" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "ecdsa", "elliptic-curve", "sha2", @@ -393,6 +606,48 @@ version = "0.2.112" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" +[[package]] +name = "multibase" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +dependencies = [ + "base-x", + "data-encoding", + "data-encoding-macro", +] + +[[package]] +name = "multihash" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" +dependencies = [ + "blake2b_simd", + "blake2s_simd", + "blake3", + "digest", + "generic-array", + "multihash-derive", + "sha2", + "sha3", + "unsigned-varint", +] + +[[package]] +name = "multihash-derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "opaque-debug" version = "0.3.0" @@ -409,20 +664,54 @@ dependencies = [ "spki", ] +[[package]] +name = "proc-macro-crate" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +dependencies = [ + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro2" -version = "1.0.34" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f84e92c0f7c9d58328b85a78557813e4bd845130db68d7184635344399423b1" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] [[package]] name = "quote" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" +checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" dependencies = [ "proc-macro2", ] @@ -442,7 +731,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", ] [[package]] @@ -477,9 +766,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.131" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ad69dfbd3e45369132cc64e6748c2d65cdfb001a2b1c232d128b4ad60561c1" +checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a" dependencies = [ "serde_derive", ] @@ -495,9 +784,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.131" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b710a83c4e0dff6a3d511946b95274ad9ca9e5d3ae497b63fda866ac955358d2" +checksum = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537" dependencies = [ "proc-macro2", "quote", @@ -517,9 +806,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" +checksum = "ee2bb9cd061c5865d345bb02ca49fcef1391741b672b54a0bf7b679badec3142" dependencies = [ "itoa", "ryu", @@ -528,12 +817,12 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer", - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest", "opaque-debug", @@ -584,15 +873,27 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.82" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" +checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" dependencies = [ "proc-macro2", "quote", "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + [[package]] name = "thiserror" version = "1.0.30" @@ -613,11 +914,20 @@ dependencies = [ "syn", ] +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + [[package]] name = "typenum" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "uint" @@ -637,11 +947,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "unsigned-varint" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" + [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasi" diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index 4e9c266..9f2ef22 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cw-cyber-airdrop" -version = "0.1.0" -authors = ["Orkun Külçe "] +version = "0.0.1" +authors = ["CyberHead"] edition = "2018" exclude = [ @@ -41,12 +41,12 @@ optimize = """docker run --rm -v "$(pwd)":/code \ [dependencies] anyhow = "1" -cw0 = "0.10" -cw2 = "0.10" -cw20 = "0.10" +cw0 = "0.10.3" +cw2 = "0.11" +cw20 = "0.11" cosmwasm-std = { version = "1.0.0-beta" } cw-utils = { version = "0.11.0" } -cosmwasm-crypto = { version = "1.0.0-beta" } +#cosmwasm-crypto = { version = "1.0.0-beta" } cw-storage-plus = "0.10" schemars = "0.8.3" serde = { version = "1.0.103", default-features = false, features = ["derive"] } diff --git a/contracts/cw-cyber-airdrop/README.md b/contracts/cw-cyber-airdrop/README.md index 619bede..99591a6 100644 --- a/contracts/cw-cyber-airdrop/README.md +++ b/contracts/cw-cyber-airdrop/README.md @@ -1,9 +1 @@ -# cw-cyber-airdrop - -Claim msg input: - -- nickname -- avatar_cid -- claimer_addr -- target_addr -- relay_reward +# cw-cybergift diff --git a/contracts/cw-cyber-passport/.cargo/config b/contracts/cw-cyber-passport/.cargo/config new file mode 100644 index 0000000..336b618 --- /dev/null +++ b/contracts/cw-cyber-passport/.cargo/config @@ -0,0 +1,4 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +unit-test = "test --lib" +schema = "run --example schema" diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml new file mode 100644 index 0000000..30ae70b --- /dev/null +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -0,0 +1,56 @@ +[package] +name = "cw-cyber-passport" +version = "0.0.1" +authors = ["CyberHead"] +edition = "2018" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib", "rlib"] + +[profile.release] +opt-level = 3 +debug = false +rpath = false +lto = true +debug-assertions = false +codegen-units = 1 +panic = 'abort' +incremental = false +overflow-checks = true + +[features] +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[package.metadata.scripts] +optimize = """docker run --rm -v "$(pwd)":/code \ + --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ + --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ + cosmwasm/rust-optimizer:0.12.4 +""" + +[dependencies] +cosmwasm-std = { version = "1.0.0-beta" } +cosmwasm-storage = { version = "1.0.0-beta" } +cw-storage-plus = "0.10" +cw2 = "0.10" +cw721-namespace = { path = "../cw721-namespace", features = ["library"]} +schemars = "0.8.3" +serde = { version = "1.0.127", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.26" } +cid = "0.7.0" +cw721-base = { version = "0.11", features = ["library"] } +#multihash = "0.10" + +[dev-dependencies] +cosmwasm-schema = { version = "1.0.0-beta" } diff --git a/contracts/cw-cyber-passport/README.md b/contracts/cw-cyber-passport/README.md new file mode 100644 index 0000000..e4f2ae4 --- /dev/null +++ b/contracts/cw-cyber-passport/README.md @@ -0,0 +1 @@ +# cw-passport diff --git a/contracts/cw-cyber-passport/examples/schema.rs b/contracts/cw-cyber-passport/examples/schema.rs new file mode 100644 index 0000000..b20f572 --- /dev/null +++ b/contracts/cw-cyber-passport/examples/schema.rs @@ -0,0 +1,20 @@ +use std::env::current_dir; +use std::fs::create_dir_all; + +use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; + +use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use cw_cyber_passport::state::{Route, State}; + +fn main() { + let mut out_dir = current_dir().unwrap(); + out_dir.push("schema"); + create_dir_all(&out_dir).unwrap(); + remove_schemas(&out_dir).unwrap(); + + export_schema(&schema_for!(InstantiateMsg), &out_dir); + export_schema(&schema_for!(ExecuteMsg), &out_dir); + export_schema(&schema_for!(QueryMsg), &out_dir); + export_schema(&schema_for!(State), &out_dir); + export_schema(&schema_for!(Route), &out_dir); +} diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json new file mode 100644 index 0000000..6b6ace8 --- /dev/null +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -0,0 +1,123 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "update_namespaces" + ], + "properties": { + "update_namespaces": { + "type": "object", + "required": [ + "namespaces" + ], + "properties": { + "namespaces": { + "type": "array", + "items": { + "$ref": "#/definitions/Route" + } + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_passport" + ], + "properties": { + "create_passport": { + "type": "object", + "required": [ + "citizen", + "routes" + ], + "properties": { + "citizen": { + "type": "string" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/RouteData" + } + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_gift" + ], + "properties": { + "set_gift": { + "type": "object", + "required": [ + "gift" + ], + "properties": { + "gift": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Metadata": { + "type": "object", + "required": [ + "parent", + "target" + ], + "properties": { + "parent": { + "type": "string" + }, + "target": { + "type": "string" + } + } + }, + "Route": { + "type": "object", + "required": [ + "address", + "namespace" + ], + "properties": { + "address": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "RouteData": { + "type": "object", + "required": [ + "data", + "namespace" + ], + "properties": { + "data": { + "$ref": "#/definitions/Metadata" + }, + "namespace": { + "type": "string" + } + } + } + } +} diff --git a/contracts/cw-cyber-passport/schema/instantiate_msg.json b/contracts/cw-cyber-passport/schema/instantiate_msg.json new file mode 100644 index 0000000..562fba4 --- /dev/null +++ b/contracts/cw-cyber-passport/schema/instantiate_msg.json @@ -0,0 +1,33 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "required": [ + "namespaces" + ], + "properties": { + "namespaces": { + "type": "array", + "items": { + "$ref": "#/definitions/Route" + } + } + }, + "definitions": { + "Route": { + "type": "object", + "required": [ + "address", + "namespace" + ], + "properties": { + "address": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + } + } +} diff --git a/contracts/cw-cyber-passport/schema/query_msg.json b/contracts/cw-cyber-passport/schema/query_msg.json new file mode 100644 index 0000000..dcef84a --- /dev/null +++ b/contracts/cw-cyber-passport/schema/query_msg.json @@ -0,0 +1,18 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "namespaces_list" + ], + "properties": { + "namespaces_list": { + "type": "object" + } + }, + "additionalProperties": false + } + ] +} diff --git a/contracts/cw-cyber-passport/schema/route.json b/contracts/cw-cyber-passport/schema/route.json new file mode 100644 index 0000000..e0c58fb --- /dev/null +++ b/contracts/cw-cyber-passport/schema/route.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Route", + "type": "object", + "required": [ + "address", + "namespace" + ], + "properties": { + "address": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-passport/schema/state.json b/contracts/cw-cyber-passport/schema/state.json new file mode 100644 index 0000000..c95dd29 --- /dev/null +++ b/contracts/cw-cyber-passport/schema/state.json @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "State", + "type": "object", + "required": [ + "namespaces" + ], + "properties": { + "cybergift": { + "anyOf": [ + { + "$ref": "#/definitions/Addr" + }, + { + "type": "null" + } + ] + }, + "namespaces": { + "type": "array", + "items": { + "$ref": "#/definitions/Route" + } + }, + "owner": { + "anyOf": [ + { + "$ref": "#/definitions/Addr" + }, + { + "type": "null" + } + ] + } + }, + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Route": { + "type": "object", + "required": [ + "address", + "namespace" + ], + "properties": { + "address": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + } + } +} diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs new file mode 100644 index 0000000..0b87fb9 --- /dev/null +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -0,0 +1,207 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{attr, to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, CosmosMsg, WasmMsg, Empty}; +use cw2::set_contract_version; + +use crate::error::ContractError; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, NamespacesListResponse, RouteData}; +use crate::state::{State, STATE}; +use cw721_namespace::{ + msg::ExecuteMsg as Cw721ExecuteMsg, msg::MintMsg, +}; +use cw721_namespace::state::{Extension, Metadata}; +use crate::state::Route; + +use cid::multihash::{Code, MultihashDigest}; +use cid::Cid; + +pub type NamespaceContract<'a> = cw721_base::Cw721Contract<'a, Extension, Empty>; + +// version info for migration info +const CONTRACT_NAME: &str = "crates.io:cw-cyber-passport"; +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + let state = State { + owner: Some(info.sender.clone()), + namespaces: msg.namespaces, // TODO add map_validate + cybergift: None, + }; + STATE.save(deps.storage, &state)?; + Ok(Response::default()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::CreatePassport { + citizen, + routes + } => execute_create_passport(deps, env, info, citizen, routes), + ExecuteMsg::UpdateNamespaces{ namespaces } => execute_update_namespaces(deps, env, info, namespaces), + ExecuteMsg::SetGift { gift } => execute_set_gift(deps, env, info, gift), + } +} + +pub fn execute_create_passport( + deps: DepsMut, + env: Env, + info: MessageInfo, + citizen: String, + routes_data: Vec +) -> Result { + + let state = STATE.load(deps.storage)?; + + let cybergift = state.cybergift.ok_or(ContractError::Unauthorized {})?; + let owner = state.owner.ok_or(ContractError::Unauthorized {})?; + + if info.sender != cybergift || info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + for route in routes_data { + _add_to_namespace(&deps, &env, citizen.clone(), route.clone())?; + } + + Ok(Response::new().add_attributes([ + attr("method", "created_passport"), + ])) +} + +fn _add_to_namespace( + deps: &DepsMut, + _env: &Env, + citizen: String, + route: RouteData, +) -> Result { + let state = STATE.load(deps.storage)?; + + let namespace_route = deps.api.addr_validate(&route.namespace)?; + + let namespace: &Route = state.namespaces + .iter() + .find(|&r| r.namespace == namespace_route) + .ok_or(ContractError::Unauthorized {})?; + + let h = Code::Sha2_256.digest(&route.clone().data.parent.as_bytes()); + let token_id_cid = Cid::new_v0(h).unwrap(); + let mint_msg = Cw721ExecuteMsg::Mint(MintMsg { + token_id: token_id_cid.to_string(), + owner: citizen, + token_uri: None, + extension: Metadata { + parent: route.data.parent, + target: route.data.target, + }, + }); + + let callback = CosmosMsg::Wasm(WasmMsg::Execute { + contract_addr: namespace.address.to_string(), + msg: to_binary(&mint_msg)?, + funds: vec![], + }); + + + Ok(Response::new().add_message(callback)) +} + +pub fn execute_update_namespaces( + deps: DepsMut, + _env: Env, + info: MessageInfo, + namespaces: Vec, +) -> Result { + + let mut state = STATE.load(deps.storage)?; + + let owner = state.clone().owner.ok_or(ContractError::Unauthorized {})?; + + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + state.namespaces = namespaces; + STATE.save(deps.storage, &state)?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "updated_namespaces") + ])) +} + +pub fn execute_set_gift( + deps: DepsMut, + _env: Env, + info: MessageInfo, + gift: String, +) -> Result { + + let mut state = STATE.load(deps.storage)?; + + let owner = state.clone().owner.ok_or(ContractError::Unauthorized {})?; + + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + state.cybergift = Some(deps.api.addr_validate(&gift)?); + STATE.save(deps.storage, &state)?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "updated_gift") + ])) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::NamespacesList {} => to_binary(&query_namespaces_list(deps)?) + } +} + +pub fn query_namespaces_list(deps: Deps) -> StdResult { + let state = STATE.load(deps.storage)?; + Ok(NamespacesListResponse { + namespaces: state.namespaces.into_iter().map(|a| a.into()).collect(), + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; + use cosmwasm_std::{coins, from_binary}; + + #[test] + fn proper_initialization() { + assert_eq!(true, true); + } + + #[test] + fn proper_create_passport() { + assert_eq!(true, true); + } + + #[test] + fn proper_update_namespaces() { + assert_eq!(true, true); + } + + #[test] + fn proper_set_gift() { + assert_eq!(true, true); + } +} diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs new file mode 100644 index 0000000..5b6749a --- /dev/null +++ b/contracts/cw-cyber-passport/src/error.rs @@ -0,0 +1,14 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Unauthorized")] + Unauthorized {}, + + #[error("Invalid namespace")] + InvalidNamespace {}, +} diff --git a/contracts/cw-cyber-passport/src/lib.rs b/contracts/cw-cyber-passport/src/lib.rs new file mode 100644 index 0000000..dfedc9d --- /dev/null +++ b/contracts/cw-cyber-passport/src/lib.rs @@ -0,0 +1,6 @@ +pub mod contract; +mod error; +pub mod msg; +pub mod state; + +pub use crate::error::ContractError; diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs new file mode 100644 index 0000000..c818a03 --- /dev/null +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -0,0 +1,41 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; +use cw721_namespace::state::Metadata; +use crate::state::Route; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub struct InstantiateMsg { + pub namespaces: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct RouteData { + pub namespace: String, + pub data: Metadata, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + UpdateNamespaces { namespaces: Vec }, + CreatePassport { + citizen: String, + routes: Vec, + }, + SetGift { gift: String }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + NamespacesList {} +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub struct NamespacesListResponse { + pub namespaces: Vec +} + + diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs new file mode 100644 index 0000000..8d509be --- /dev/null +++ b/contracts/cw-cyber-passport/src/state.rs @@ -0,0 +1,20 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use cosmwasm_std::Addr; +use cw_storage_plus::Item; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct Route { + pub namespace: String, + pub address: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct State { + pub owner: Option, + pub cybergift: Option, + pub namespaces: Vec, +} + +pub const STATE: Item = Item::new("state"); diff --git a/contracts/cw721-namespace/.cargo/config b/contracts/cw721-namespace/.cargo/config new file mode 100644 index 0000000..7d1a066 --- /dev/null +++ b/contracts/cw721-namespace/.cargo/config @@ -0,0 +1,5 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +schema = "run --example schema" diff --git a/contracts/cw721-namespace/Cargo.toml b/contracts/cw721-namespace/Cargo.toml new file mode 100644 index 0000000..a0a9956 --- /dev/null +++ b/contracts/cw721-namespace/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "cw721-namespace" +version = "0.0.1" +authors = ["CyberHead"] +edition = "2018" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "artifacts/*", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[dependencies] +cw0 = { version = "0.10" } +cw2 = { version = "0.10" } +cw721 = { version = "0.11" } +cw721-base = { version = "0.11", features = ["library"] } +cw-storage-plus = { version = "0.10" } +cosmwasm-std = { version = "1.0.0-beta" } +schemars = "0.8.6" +serde = { version = "1.0.130", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.30" } + +[dev-dependencies] +cosmwasm-schema = { version = "1.0.0-beta" } diff --git a/contracts/cw721-namespace/README.md b/contracts/cw721-namespace/README.md new file mode 100644 index 0000000..4af91c7 --- /dev/null +++ b/contracts/cw721-namespace/README.md @@ -0,0 +1 @@ +# cw-namespace diff --git a/contracts/cw721-namespace/build.sh b/contracts/cw721-namespace/build.sh new file mode 100644 index 0000000..f3b96c0 --- /dev/null +++ b/contracts/cw721-namespace/build.sh @@ -0,0 +1,4 @@ +docker run --rm -v "$(pwd)":/code \ + --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ + --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ + cosmwasm/rust-optimizer:0.12.4 diff --git a/contracts/cw721-namespace/examples/schema.rs b/contracts/cw721-namespace/examples/schema.rs new file mode 100644 index 0000000..18f8215 --- /dev/null +++ b/contracts/cw721-namespace/examples/schema.rs @@ -0,0 +1,41 @@ +use std::env::current_dir; +use std::fs::create_dir_all; + +use cosmwasm_schema::{export_schema, export_schema_with_title, remove_schemas, schema_for}; + +use cw721::{ + AllNftInfoResponse, ApprovalResponse, ApprovalsResponse, ContractInfoResponse, NftInfoResponse, + NumTokensResponse, OperatorsResponse, OwnerOfResponse, TokensResponse, +}; +use cw721_base::{InstantiateMsg, MinterResponse}; +use cw721_namespace::msg::{ExecuteMsg, QueryMsg}; +use cw721_namespace::state::Extension; + +fn main() { + let mut out_dir = current_dir().unwrap(); + out_dir.push("schema"); + create_dir_all(&out_dir).unwrap(); + remove_schemas(&out_dir).unwrap(); + + export_schema(&schema_for!(InstantiateMsg), &out_dir); + export_schema_with_title(&schema_for!(ExecuteMsg), &out_dir, "ExecuteMsg"); + export_schema(&schema_for!(QueryMsg), &out_dir); + export_schema_with_title( + &schema_for!(AllNftInfoResponse), + &out_dir, + "AllNftInfoResponse", + ); + export_schema(&schema_for!(ApprovalResponse), &out_dir); + export_schema(&schema_for!(ApprovalsResponse), &out_dir); + export_schema(&schema_for!(OperatorsResponse), &out_dir); + export_schema(&schema_for!(ContractInfoResponse), &out_dir); + export_schema(&schema_for!(MinterResponse), &out_dir); + export_schema_with_title( + &schema_for!(NftInfoResponse), + &out_dir, + "NftInfoResponse", + ); + export_schema(&schema_for!(NumTokensResponse), &out_dir); + export_schema(&schema_for!(OwnerOfResponse), &out_dir); + export_schema(&schema_for!(TokensResponse), &out_dir); +} diff --git a/contracts/cw721-namespace/schema/all_nft_info_response.json b/contracts/cw721-namespace/schema/all_nft_info_response.json new file mode 100644 index 0000000..cee08b3 --- /dev/null +++ b/contracts/cw721-namespace/schema/all_nft_info_response.json @@ -0,0 +1,166 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AllNftInfoResponse", + "type": "object", + "required": [ + "access", + "info" + ], + "properties": { + "access": { + "description": "Who can transfer the token", + "allOf": [ + { + "$ref": "#/definitions/OwnerOfResponse" + } + ] + }, + "info": { + "description": "Data on the token itself,", + "allOf": [ + { + "$ref": "#/definitions/NftInfoResponse_for_Metadata" + } + ] + } + }, + "definitions": { + "Approval": { + "type": "object", + "required": [ + "expires", + "spender" + ], + "properties": { + "expires": { + "description": "When the Approval expires (maybe Expiration::never)", + "allOf": [ + { + "$ref": "#/definitions/Expiration" + } + ] + }, + "spender": { + "description": "Account that can transfer/send the token", + "type": "string" + } + } + }, + "Expiration": { + "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", + "oneOf": [ + { + "description": "AtHeight will expire when `env.block.height` >= height", + "type": "object", + "required": [ + "at_height" + ], + "properties": { + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "AtTime will expire when `env.block.time` >= time", + "type": "object", + "required": [ + "at_time" + ], + "properties": { + "at_time": { + "$ref": "#/definitions/Timestamp" + } + }, + "additionalProperties": false + }, + { + "description": "Never will never expire. Used to express the empty variant", + "type": "object", + "required": [ + "never" + ], + "properties": { + "never": { + "type": "object" + } + }, + "additionalProperties": false + } + ] + }, + "Metadata": { + "type": "object", + "required": [ + "parent", + "target" + ], + "properties": { + "parent": { + "type": "string" + }, + "target": { + "type": "string" + } + } + }, + "NftInfoResponse_for_Metadata": { + "type": "object", + "required": [ + "extension" + ], + "properties": { + "extension": { + "description": "You can add any custom metadata here when you extend cw721-base", + "allOf": [ + { + "$ref": "#/definitions/Metadata" + } + ] + }, + "token_uri": { + "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", + "type": [ + "string", + "null" + ] + } + } + }, + "OwnerOfResponse": { + "type": "object", + "required": [ + "approvals", + "owner" + ], + "properties": { + "approvals": { + "description": "If set this address is approved to transfer/send the token as well", + "type": "array", + "items": { + "$ref": "#/definitions/Approval" + } + }, + "owner": { + "description": "Owner of the token", + "type": "string" + } + } + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/approval_response.json b/contracts/cw721-namespace/schema/approval_response.json new file mode 100644 index 0000000..4f45b42 --- /dev/null +++ b/contracts/cw721-namespace/schema/approval_response.json @@ -0,0 +1,94 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ApprovalResponse", + "type": "object", + "required": [ + "approval" + ], + "properties": { + "approval": { + "$ref": "#/definitions/Approval" + } + }, + "definitions": { + "Approval": { + "type": "object", + "required": [ + "expires", + "spender" + ], + "properties": { + "expires": { + "description": "When the Approval expires (maybe Expiration::never)", + "allOf": [ + { + "$ref": "#/definitions/Expiration" + } + ] + }, + "spender": { + "description": "Account that can transfer/send the token", + "type": "string" + } + } + }, + "Expiration": { + "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", + "oneOf": [ + { + "description": "AtHeight will expire when `env.block.height` >= height", + "type": "object", + "required": [ + "at_height" + ], + "properties": { + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "AtTime will expire when `env.block.time` >= time", + "type": "object", + "required": [ + "at_time" + ], + "properties": { + "at_time": { + "$ref": "#/definitions/Timestamp" + } + }, + "additionalProperties": false + }, + { + "description": "Never will never expire. Used to express the empty variant", + "type": "object", + "required": [ + "never" + ], + "properties": { + "never": { + "type": "object" + } + }, + "additionalProperties": false + } + ] + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/approvals_response.json b/contracts/cw721-namespace/schema/approvals_response.json new file mode 100644 index 0000000..8d8e39e --- /dev/null +++ b/contracts/cw721-namespace/schema/approvals_response.json @@ -0,0 +1,97 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ApprovalsResponse", + "type": "object", + "required": [ + "approvals" + ], + "properties": { + "approvals": { + "type": "array", + "items": { + "$ref": "#/definitions/Approval" + } + } + }, + "definitions": { + "Approval": { + "type": "object", + "required": [ + "expires", + "spender" + ], + "properties": { + "expires": { + "description": "When the Approval expires (maybe Expiration::never)", + "allOf": [ + { + "$ref": "#/definitions/Expiration" + } + ] + }, + "spender": { + "description": "Account that can transfer/send the token", + "type": "string" + } + } + }, + "Expiration": { + "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", + "oneOf": [ + { + "description": "AtHeight will expire when `env.block.height` >= height", + "type": "object", + "required": [ + "at_height" + ], + "properties": { + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "AtTime will expire when `env.block.time` >= time", + "type": "object", + "required": [ + "at_time" + ], + "properties": { + "at_time": { + "$ref": "#/definitions/Timestamp" + } + }, + "additionalProperties": false + }, + { + "description": "Never will never expire. Used to express the empty variant", + "type": "object", + "required": [ + "never" + ], + "properties": { + "never": { + "type": "object" + } + }, + "additionalProperties": false + } + ] + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/contract_info_response.json b/contracts/cw721-namespace/schema/contract_info_response.json new file mode 100644 index 0000000..a167125 --- /dev/null +++ b/contracts/cw721-namespace/schema/contract_info_response.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ContractInfoResponse", + "type": "object", + "required": [ + "name", + "symbol" + ], + "properties": { + "name": { + "type": "string" + }, + "symbol": { + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/execute_msg.json b/contracts/cw721-namespace/schema/execute_msg.json new file mode 100644 index 0000000..e2b7617 --- /dev/null +++ b/contracts/cw721-namespace/schema/execute_msg.json @@ -0,0 +1,397 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "set_minter" + ], + "properties": { + "set_minter": { + "type": "object", + "required": [ + "minter" + ], + "properties": { + "minter": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_owner" + ], + "properties": { + "set_owner": { + "type": "object", + "properties": { + "owner": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_fee" + ], + "properties": { + "set_fee": { + "type": "object", + "required": [ + "fee" + ], + "properties": { + "fee": { + "$ref": "#/definitions/Coin" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Transfer is a base message to move a token to another account without triggering actions", + "type": "object", + "required": [ + "transfer_nft" + ], + "properties": { + "transfer_nft": { + "type": "object", + "required": [ + "recipient", + "token_id" + ], + "properties": { + "recipient": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Send is a base message to transfer a token to a contract and trigger an action on the receiving contract.", + "type": "object", + "required": [ + "send_nft" + ], + "properties": { + "send_nft": { + "type": "object", + "required": [ + "contract", + "msg", + "token_id" + ], + "properties": { + "contract": { + "type": "string" + }, + "msg": { + "$ref": "#/definitions/Binary" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Mint a new NFT, can only be called by the contract minter", + "type": "object", + "required": [ + "mint" + ], + "properties": { + "mint": { + "$ref": "#/definitions/MintMsg_for_Metadata" + } + }, + "additionalProperties": false + }, + { + "description": "Burn an NFT the sender has access to", + "type": "object", + "required": [ + "burn" + ], + "properties": { + "burn": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Allows operator to transfer / send the token from the owner's account. If expiration is set, then this allowance has a time/height limit", + "type": "object", + "required": [ + "approve" + ], + "properties": { + "approve": { + "type": "object", + "required": [ + "spender", + "token_id" + ], + "properties": { + "expires": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "spender": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Remove previously granted Approval", + "type": "object", + "required": [ + "revoke" + ], + "properties": { + "revoke": { + "type": "object", + "required": [ + "spender", + "token_id" + ], + "properties": { + "spender": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Allows operator to transfer / send any token from the owner's account. If expiration is set, then this allowance has a time/height limit", + "type": "object", + "required": [ + "approve_all" + ], + "properties": { + "approve_all": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "expires": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "operator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Remove previously granted ApproveAll permission", + "type": "object", + "required": [ + "revoke_all" + ], + "properties": { + "revoke_all": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Binary": { + "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec", + "type": "string" + }, + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + } + }, + "Expiration": { + "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", + "oneOf": [ + { + "description": "AtHeight will expire when `env.block.height` >= height", + "type": "object", + "required": [ + "at_height" + ], + "properties": { + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "AtTime will expire when `env.block.time` >= time", + "type": "object", + "required": [ + "at_time" + ], + "properties": { + "at_time": { + "$ref": "#/definitions/Timestamp" + } + }, + "additionalProperties": false + }, + { + "description": "Never will never expire. Used to express the empty variant", + "type": "object", + "required": [ + "never" + ], + "properties": { + "never": { + "type": "object" + } + }, + "additionalProperties": false + } + ] + }, + "Metadata": { + "type": "object", + "required": [ + "parent", + "target" + ], + "properties": { + "parent": { + "type": "string" + }, + "target": { + "type": "string" + } + } + }, + "MintMsg_for_Metadata": { + "type": "object", + "required": [ + "extension", + "owner", + "token_id" + ], + "properties": { + "extension": { + "description": "Any custom extension used by this contract", + "allOf": [ + { + "$ref": "#/definitions/Metadata" + } + ] + }, + "owner": { + "description": "The owner of the newly minter NFT", + "type": "string" + }, + "token_id": { + "description": "Unique ID of the NFT", + "type": "string" + }, + "token_uri": { + "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", + "type": [ + "string", + "null" + ] + } + } + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/instantiate_msg.json b/contracts/cw721-namespace/schema/instantiate_msg.json new file mode 100644 index 0000000..b024c82 --- /dev/null +++ b/contracts/cw721-namespace/schema/instantiate_msg.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "required": [ + "minter", + "name", + "symbol" + ], + "properties": { + "minter": { + "description": "The minter is the only one who can create new NFTs. This is designed for a base NFT that is controlled by an external program or contract. You will likely replace this with custom logic in custom NFTs", + "type": "string" + }, + "name": { + "description": "Name of the NFT contract", + "type": "string" + }, + "symbol": { + "description": "Symbol of the NFT contract", + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/minter_response.json b/contracts/cw721-namespace/schema/minter_response.json new file mode 100644 index 0000000..a20e0d7 --- /dev/null +++ b/contracts/cw721-namespace/schema/minter_response.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MinterResponse", + "description": "Shows who can mint these tokens", + "type": "object", + "required": [ + "minter" + ], + "properties": { + "minter": { + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/nft_info_response.json b/contracts/cw721-namespace/schema/nft_info_response.json new file mode 100644 index 0000000..0df4f30 --- /dev/null +++ b/contracts/cw721-namespace/schema/nft_info_response.json @@ -0,0 +1,42 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NftInfoResponse", + "type": "object", + "required": [ + "extension" + ], + "properties": { + "extension": { + "description": "You can add any custom metadata here when you extend cw721-base", + "allOf": [ + { + "$ref": "#/definitions/Metadata" + } + ] + }, + "token_uri": { + "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", + "type": [ + "string", + "null" + ] + } + }, + "definitions": { + "Metadata": { + "type": "object", + "required": [ + "parent", + "target" + ], + "properties": { + "parent": { + "type": "string" + }, + "target": { + "type": "string" + } + } + } + } +} diff --git a/contracts/cw721-namespace/schema/num_tokens_response.json b/contracts/cw721-namespace/schema/num_tokens_response.json new file mode 100644 index 0000000..4647c23 --- /dev/null +++ b/contracts/cw721-namespace/schema/num_tokens_response.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NumTokensResponse", + "type": "object", + "required": [ + "count" + ], + "properties": { + "count": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } +} diff --git a/contracts/cw721-namespace/schema/operators_response.json b/contracts/cw721-namespace/schema/operators_response.json new file mode 100644 index 0000000..5370307 --- /dev/null +++ b/contracts/cw721-namespace/schema/operators_response.json @@ -0,0 +1,97 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "OperatorsResponse", + "type": "object", + "required": [ + "operators" + ], + "properties": { + "operators": { + "type": "array", + "items": { + "$ref": "#/definitions/Approval" + } + } + }, + "definitions": { + "Approval": { + "type": "object", + "required": [ + "expires", + "spender" + ], + "properties": { + "expires": { + "description": "When the Approval expires (maybe Expiration::never)", + "allOf": [ + { + "$ref": "#/definitions/Expiration" + } + ] + }, + "spender": { + "description": "Account that can transfer/send the token", + "type": "string" + } + } + }, + "Expiration": { + "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", + "oneOf": [ + { + "description": "AtHeight will expire when `env.block.height` >= height", + "type": "object", + "required": [ + "at_height" + ], + "properties": { + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "AtTime will expire when `env.block.time` >= time", + "type": "object", + "required": [ + "at_time" + ], + "properties": { + "at_time": { + "$ref": "#/definitions/Timestamp" + } + }, + "additionalProperties": false + }, + { + "description": "Never will never expire. Used to express the empty variant", + "type": "object", + "required": [ + "never" + ], + "properties": { + "never": { + "type": "object" + } + }, + "additionalProperties": false + } + ] + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/owner_of_response.json b/contracts/cw721-namespace/schema/owner_of_response.json new file mode 100644 index 0000000..1258d67 --- /dev/null +++ b/contracts/cw721-namespace/schema/owner_of_response.json @@ -0,0 +1,103 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "OwnerOfResponse", + "type": "object", + "required": [ + "approvals", + "owner" + ], + "properties": { + "approvals": { + "description": "If set this address is approved to transfer/send the token as well", + "type": "array", + "items": { + "$ref": "#/definitions/Approval" + } + }, + "owner": { + "description": "Owner of the token", + "type": "string" + } + }, + "definitions": { + "Approval": { + "type": "object", + "required": [ + "expires", + "spender" + ], + "properties": { + "expires": { + "description": "When the Approval expires (maybe Expiration::never)", + "allOf": [ + { + "$ref": "#/definitions/Expiration" + } + ] + }, + "spender": { + "description": "Account that can transfer/send the token", + "type": "string" + } + } + }, + "Expiration": { + "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", + "oneOf": [ + { + "description": "AtHeight will expire when `env.block.height` >= height", + "type": "object", + "required": [ + "at_height" + ], + "properties": { + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "AtTime will expire when `env.block.time` >= time", + "type": "object", + "required": [ + "at_time" + ], + "properties": { + "at_time": { + "$ref": "#/definitions/Timestamp" + } + }, + "additionalProperties": false + }, + { + "description": "Never will never expire. Used to express the empty variant", + "type": "object", + "required": [ + "never" + ], + "properties": { + "never": { + "type": "object" + } + }, + "additionalProperties": false + } + ] + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw721-namespace/schema/query_msg.json b/contracts/cw721-namespace/schema/query_msg.json new file mode 100644 index 0000000..cd97370 --- /dev/null +++ b/contracts/cw721-namespace/schema/query_msg.json @@ -0,0 +1,284 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "owner_of" + ], + "properties": { + "owner_of": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "approval" + ], + "properties": { + "approval": { + "type": "object", + "required": [ + "spender", + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "spender": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "approvals" + ], + "properties": { + "approvals": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "all_operators" + ], + "properties": { + "all_operators": { + "type": "object", + "required": [ + "owner" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "owner": { + "type": "string" + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "num_tokens" + ], + "properties": { + "num_tokens": { + "type": "object" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract_info" + ], + "properties": { + "contract_info": { + "type": "object" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "nft_info" + ], + "properties": { + "nft_info": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "all_nft_info" + ], + "properties": { + "all_nft_info": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "tokens" + ], + "properties": { + "tokens": { + "type": "object", + "required": [ + "owner" + ], + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "owner": { + "type": "string" + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "all_tokens" + ], + "properties": { + "all_tokens": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "minter" + ], + "properties": { + "minter": { + "type": "object" + } + }, + "additionalProperties": false + } + ] +} diff --git a/contracts/cw721-namespace/schema/tokens_response.json b/contracts/cw721-namespace/schema/tokens_response.json new file mode 100644 index 0000000..b8e3d75 --- /dev/null +++ b/contracts/cw721-namespace/schema/tokens_response.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "TokensResponse", + "type": "object", + "required": [ + "tokens" + ], + "properties": { + "tokens": { + "description": "Contains all token_ids in lexicographical ordering If there are more than `limit`, use `start_from` in future queries to achieve pagination.", + "type": "array", + "items": { + "type": "string" + } + } + } +} diff --git a/contracts/cw721-namespace/src/contract.rs b/contracts/cw721-namespace/src/contract.rs new file mode 100644 index 0000000..2a3f9ad --- /dev/null +++ b/contracts/cw721-namespace/src/contract.rs @@ -0,0 +1,95 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; + +use cw2::{get_contract_version, set_contract_version}; +pub use cw721_base::{MintMsg, MinterResponse}; +use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use crate::state::NamespaceContract; + +use crate::execute::{execute_mint, execute_burn, execute_set_minter, execute_set_owner, execute_set_fee, execute_transfer_nft, execute_send_nft}; + +use crate::query::{query_config}; +use crate::state::{Config, CONFIG}; +use crate::{error::ContractError}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: InstantiateMsg, +) -> StdResult { + let owner = msg.clone() + .owner + .map_or(Ok(info.clone().sender), |o| deps.api.addr_validate(&o))?; + + let config = Config { + fee: msg.clone().fee, + owner: Some(owner) + }; + + CONFIG.save(deps.storage, &config)?; + + NamespaceContract::default().instantiate(deps, env, info, msg.into()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), + ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), + ExecuteMsg::SetFee { fee } => execute_set_fee(deps, env, info, fee), + // Overwrite CW721 methods + ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), + ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), + ExecuteMsg::Burn { token_id } => execute_burn(deps, env, info, token_id), + ExecuteMsg::Mint(mint_msg) => execute_mint(deps, env, info, mint_msg), + // CW721 methods + _ => NamespaceContract::default() + .execute(deps, env, info, msg.into()) + .map_err(|err| err.into()), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Config {} => to_binary(&query_config(deps)?), + // CW721 methods + _ => NamespaceContract::default().query(deps, env, msg.into()), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn migrate( + deps: DepsMut, + _env: Env, + msg: MigrateMsg, +) -> Result { + match msg { + MigrateMsg { version, config } => try_migrate(deps, version, config), + } +} + +fn try_migrate( + deps: DepsMut, + version: String, + config: Option, +) -> Result { + let contract_version = get_contract_version(deps.storage)?; + set_contract_version(deps.storage, contract_version.contract, version)?; + + if config.is_some() { + CONFIG.save(deps.storage, &config.unwrap())? + } + + Ok(Response::new() + .add_attribute("method", "try_migrate") + .add_attribute("version", contract_version.version)) +} diff --git a/contracts/cw721-namespace/src/error.rs b/contracts/cw721-namespace/src/error.rs new file mode 100644 index 0000000..1c5a28b --- /dev/null +++ b/contracts/cw721-namespace/src/error.rs @@ -0,0 +1,33 @@ +use cosmwasm_std::StdError; +use thiserror::Error; +use cw721_base::ContractError as CW721ContractError; + +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Unauthorized")] + Unauthorized {}, + + #[error("token_id already claimed")] + Claimed {}, + + #[error("Cannot set approval that is already expired")] + Expired {}, + + #[error("Approval not found for: {spender}")] + ApprovalNotFound { spender: String }, +} + +impl From for ContractError { + fn from(msg: CW721ContractError) -> ContractError { + match msg { + CW721ContractError::Std(e) => ContractError::Std(e), + CW721ContractError::Unauthorized {} => ContractError::Unauthorized {}, + CW721ContractError::Claimed {} => ContractError::Claimed {}, + CW721ContractError::Expired {} => ContractError::Expired {}, + CW721ContractError::ApprovalNotFound {spender} => ContractError::ApprovalNotFound {spender} + } + } +} diff --git a/contracts/cw721-namespace/src/execute.rs b/contracts/cw721-namespace/src/execute.rs new file mode 100644 index 0000000..bb0eeea --- /dev/null +++ b/contracts/cw721-namespace/src/execute.rs @@ -0,0 +1,129 @@ +use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, Coin, StdResult, attr, Binary}; +use cw721::Cw721Execute; +use cw721_base::{MintMsg}; +use crate::state::{Extension, NamespaceContract}; + +use crate::error::ContractError; +use crate::state::{Config, CONFIG}; + +pub fn execute_transfer_nft( + deps: DepsMut, + env: Env, + info: MessageInfo, + recipient: String, + token_id: String, +) -> Result { + let cw721_contract = NamespaceContract::default(); + + let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; + Ok(response) +} + +pub fn execute_send_nft( + deps: DepsMut, + env: Env, + info: MessageInfo, + contract: String, + token_id: String, + msg: Binary +) -> Result { + let cw721_contract = NamespaceContract::default(); + + let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; + Ok(response) +} + +pub fn execute_mint( + deps: DepsMut, + env: Env, + info: MessageInfo, + mint_msg: MintMsg, +) -> Result { + let cw721_contract = NamespaceContract::default(); + + let response = cw721_contract.mint(deps, env, info, mint_msg)?; + Ok(response) +} + +pub fn execute_burn( + deps: DepsMut, + env: Env, + info: MessageInfo, + token_id: String, +) -> Result { + let cw721_contract = NamespaceContract::default(); + + let response = cw721_contract.burn(deps, env, info, token_id)?; + Ok(response) +} + +pub fn execute_set_minter( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_minter: String, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let owner = config.owner.ok_or(ContractError::Unauthorized {})?; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + let new_minter = deps.api.addr_validate(&new_minter)?; + let cw721_contract = NamespaceContract::default(); + cw721_contract.minter.save(deps.storage, &new_minter)?; + + Ok(Response::new().add_attribute("action", "set_minter")) +} + +pub fn execute_set_owner( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_owner: Option, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let owner = config.owner.ok_or(ContractError::Unauthorized {})?; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + let mut tmp_owner = None; + if let Some(addr) = new_owner { + tmp_owner = Some(deps.api.addr_validate(&addr)?) + } + + CONFIG.update(deps.storage, |mut exists| -> StdResult<_> { + exists.owner = tmp_owner; + Ok(exists) + })?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "update_owner") + ])) +} + +pub fn execute_set_fee( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_fee: Coin, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let owner = config.owner.ok_or(ContractError::Unauthorized {})?; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + CONFIG.update( + deps.storage, + |mut config| -> Result { + config.fee = new_fee; + Ok(config) + }, + )?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "set_fee") + ])) +} diff --git a/contracts/cw721-namespace/src/lib.rs b/contracts/cw721-namespace/src/lib.rs new file mode 100644 index 0000000..c1bf9bf --- /dev/null +++ b/contracts/cw721-namespace/src/lib.rs @@ -0,0 +1,6 @@ +pub mod contract; +pub mod error; +pub mod execute; +pub mod query; +pub mod state; +pub mod msg; diff --git a/contracts/cw721-namespace/src/msg.rs b/contracts/cw721-namespace/src/msg.rs new file mode 100644 index 0000000..a459e79 --- /dev/null +++ b/contracts/cw721-namespace/src/msg.rs @@ -0,0 +1,241 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use cosmwasm_std::{Binary, Coin}; +use cw721::Expiration; +use cw721_base::{ + msg::{ + ExecuteMsg as CW721ExecuteMsg, InstantiateMsg as CW721InstantiateMsg, + QueryMsg as CW721QueryMsg, + }, + MintMsg as CW721MintMsg, +}; + +use crate::state::Extension; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct InstantiateMsg { + /// Name of the NFT contract + pub name: String, + /// Symbol of the NFT contract + pub symbol: String, + + /// The minter is the only one who can create new NFTs. + /// This is designed for a base NFT that is controlled by an external program + /// or contract. You will likely replace this with custom logic in custom NFTs + pub minter: String, + + pub fee: Coin, + pub owner: Option, +} + +impl From for CW721InstantiateMsg { + fn from(msg: InstantiateMsg) -> CW721InstantiateMsg { + CW721InstantiateMsg { + name: msg.name, + symbol: msg.symbol, + minter: msg.minter, + } + } +} + +pub type MintMsg = CW721MintMsg; + +// Extended CW721 ExecuteMsg, added the ability to update, burn, and finalize nft +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + SetMinter { minter: String }, + SetOwner { owner: Option }, + SetFee { fee: Coin }, + + // Overwrite Standard CW721 ExecuteMsg + + /// Transfer is a base message to move a token to another account without triggering actions + TransferNft { + recipient: String, + token_id: String, + }, + /// Send is a base message to transfer a token to a contract and trigger an action + /// on the receiving contract. + SendNft { + contract: String, + token_id: String, + msg: Binary, + }, + + /// Mint a new NFT, can only be called by the contract minter + Mint(MintMsg), + + /// Burn an NFT the sender has access to + Burn { token_id: String }, + + // Standard CW721 ExecuteMsg + + /// Allows operator to transfer / send the token from the owner's account. + /// If expiration is set, then this allowance has a time/height limit + Approve { + spender: String, + token_id: String, + expires: Option, + }, + /// Remove previously granted Approval + Revoke { + spender: String, + token_id: String, + }, + /// Allows operator to transfer / send any token from the owner's account. + /// If expiration is set, then this allowance has a time/height limit + ApproveAll { + operator: String, + expires: Option, + }, + /// Remove previously granted ApproveAll permission + RevokeAll { + operator: String, + }, +} + +impl From for CW721ExecuteMsg { + fn from(msg: ExecuteMsg) -> CW721ExecuteMsg { + match msg { + ExecuteMsg::Approve { + spender, + token_id, + expires, + } => CW721ExecuteMsg::Approve { + spender, + token_id, + expires, + }, + ExecuteMsg::Revoke { spender, token_id } => { + CW721ExecuteMsg::Revoke { spender, token_id } + } + ExecuteMsg::ApproveAll { operator, expires } => { + CW721ExecuteMsg::ApproveAll { operator, expires } + } + ExecuteMsg::RevokeAll { operator } => CW721ExecuteMsg::RevokeAll { operator }, + _ => panic!("cannot covert {:?} to CW721ExecuteMsg", msg), + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + Config {}, + + // Standard CW721 queries + OwnerOf { + token_id: String, + include_expired: Option, + }, + Approval { + token_id: String, + spender: String, + include_expired: Option, + }, + Approvals { + token_id: String, + include_expired: Option, + }, + AllOperators { + owner: String, + include_expired: Option, + start_after: Option, + limit: Option, + }, + NumTokens {}, + ContractInfo {}, + NftInfo { + token_id: String, + }, + AllNftInfo { + token_id: String, + include_expired: Option, + }, + Tokens { + owner: String, + start_after: Option, + limit: Option, + }, + AllTokens { + start_after: Option, + limit: Option, + }, + Minter {}, +} + +impl From for CW721QueryMsg { + fn from(msg: QueryMsg) -> CW721QueryMsg { + match msg { + QueryMsg::OwnerOf { + token_id, + include_expired, + } => CW721QueryMsg::OwnerOf { + token_id, + include_expired, + }, + QueryMsg::Approval { + token_id, + spender, + include_expired, + } => CW721QueryMsg::Approval { + token_id, + spender, + include_expired + }, + QueryMsg::Approvals { + token_id, + include_expired, + } => CW721QueryMsg::Approvals { + token_id, + include_expired + }, + QueryMsg::AllOperators { + owner, + include_expired, + start_after, + limit, + } => CW721QueryMsg::AllOperators { + owner, + include_expired, + start_after, + limit, + }, + QueryMsg::NumTokens {} => CW721QueryMsg::NumTokens {}, + QueryMsg::ContractInfo {} => CW721QueryMsg::ContractInfo {}, + QueryMsg::NftInfo { token_id } => CW721QueryMsg::NftInfo { token_id }, + QueryMsg::AllNftInfo { + token_id, + include_expired, + } => CW721QueryMsg::AllNftInfo { + token_id, + include_expired, + }, + QueryMsg::Tokens { + owner, + start_after, + limit, + } => CW721QueryMsg::Tokens { + owner, + start_after, + limit, + }, + QueryMsg::AllTokens { start_after, limit } => { + CW721QueryMsg::AllTokens { start_after, limit } + }, + QueryMsg::Minter {} => { + CW721QueryMsg::Minter {} + } + _ => panic!("cannot covert {:?} to CW721QueryMsg", msg), + } + } +} + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub struct MigrateMsg { + pub version: String, + pub config: Option, +} diff --git a/contracts/cw721-namespace/src/query.rs b/contracts/cw721-namespace/src/query.rs new file mode 100644 index 0000000..6b0db84 --- /dev/null +++ b/contracts/cw721-namespace/src/query.rs @@ -0,0 +1,7 @@ +use cosmwasm_std::{Deps, StdResult}; + +use crate::state::{Config, CONFIG}; + +pub fn query_config(deps: Deps) -> StdResult { + CONFIG.load(deps.storage) +} diff --git a/contracts/cw721-namespace/src/state.rs b/contracts/cw721-namespace/src/state.rs new file mode 100644 index 0000000..5938b65 --- /dev/null +++ b/contracts/cw721-namespace/src/state.rs @@ -0,0 +1,21 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; +use cosmwasm_std::{Addr, Empty, Coin}; +use cw_storage_plus::Item; + +pub type NamespaceContract<'a> = cw721_base::Cw721Contract<'a, Extension, Empty>; +pub type Extension = Metadata; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct Config { + pub fee: Coin, + pub owner: Option, +} + +pub const CONFIG: Item = Item::new("config"); + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)] +pub struct Metadata { + pub parent: String, + pub target: String, +} From ca9aeacd6e62179a6c9056231cad08ae4714cd6a Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Mon, 17 Jan 2022 18:55:35 +0800 Subject: [PATCH 02/69] Updated schema of gift contract --- Cargo.lock | 4 +- contracts/cw-cyber-airdrop/examples/schema.rs | 2 +- .../schema/config_response.json | 22 ++++++- .../cw-cyber-airdrop/schema/execute_msg.json | 61 ++++++++++++++++++- .../schema/instantiate_msg.json | 14 ++++- .../cw-cyber-airdrop/schema/query_msg.json | 20 ++++++ contracts/cw-cyber-passport/src/contract.rs | 1 + contracts/cw721-namespace/src/contract.rs | 42 +++++++++++++ 8 files changed, 159 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c0dc9af..6551fb7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -806,9 +806,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.74" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2bb9cd061c5865d345bb02ca49fcef1391741b672b54a0bf7b679badec3142" +checksum = "c059c05b48c5c0067d4b4b2b4f0732dd65feb52daf7e0ea09cd87e7dadc1af79" dependencies = [ "itoa", "ryu", diff --git a/contracts/cw-cyber-airdrop/examples/schema.rs b/contracts/cw-cyber-airdrop/examples/schema.rs index 51f4e6e..d0fd8b4 100644 --- a/contracts/cw-cyber-airdrop/examples/schema.rs +++ b/contracts/cw-cyber-airdrop/examples/schema.rs @@ -8,7 +8,7 @@ use cw_cyber_airdrop::msg::{ fn main() { let mut out_dir = current_dir().unwrap(); - out_dir.push("../schema"); + out_dir.push("schema"); create_dir_all(&out_dir).unwrap(); remove_schemas(&out_dir).unwrap(); diff --git a/contracts/cw-cyber-airdrop/schema/config_response.json b/contracts/cw-cyber-airdrop/schema/config_response.json index 1d6b80c..08cf9a3 100644 --- a/contracts/cw-cyber-airdrop/schema/config_response.json +++ b/contracts/cw-cyber-airdrop/schema/config_response.json @@ -4,16 +4,23 @@ "type": "object", "required": [ "allowed_native", + "claims", "coefficient", "coefficient_down", "coefficient_up", "current_balance", - "initial_balance" + "initial_balance", + "passport", + "releases", + "target_claim" ], "properties": { "allowed_native": { "type": "string" }, + "claims": { + "$ref": "#/definitions/Uint64" + }, "coefficient": { "$ref": "#/definitions/Decimal" }, @@ -34,6 +41,15 @@ "string", "null" ] + }, + "passport": { + "type": "string" + }, + "releases": { + "$ref": "#/definitions/Uint64" + }, + "target_claim": { + "$ref": "#/definitions/Uint64" } }, "definitions": { @@ -44,6 +60,10 @@ "Uint128": { "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" } } } diff --git a/contracts/cw-cyber-airdrop/schema/execute_msg.json b/contracts/cw-cyber-airdrop/schema/execute_msg.json index 7397eba..282a1be 100644 --- a/contracts/cw-cyber-airdrop/schema/execute_msg.json +++ b/contracts/cw-cyber-airdrop/schema/execute_msg.json @@ -5,10 +5,10 @@ { "type": "object", "required": [ - "update_config" + "update_owner" ], "properties": { - "update_config": { + "update_owner": { "type": "object", "properties": { "new_owner": { @@ -23,6 +23,47 @@ }, "additionalProperties": false }, + { + "description": "Allows to easily debug", + "type": "object", + "required": [ + "update_passport_addr" + ], + "properties": { + "update_passport_addr": { + "type": "object", + "required": [ + "new_passport_addr" + ], + "properties": { + "new_passport_addr": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "update_target" + ], + "properties": { + "update_target": { + "type": "object", + "required": [ + "new_target" + ], + "properties": { + "new_target": { + "$ref": "#/definitions/Uint64" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -80,6 +121,18 @@ } }, "additionalProperties": false + }, + { + "type": "object", + "required": [ + "release" + ], + "properties": { + "release": { + "type": "object" + } + }, + "additionalProperties": false } ], "definitions": { @@ -132,6 +185,10 @@ "Uint128": { "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" } } } diff --git a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json index 4a00d87..7b58752 100644 --- a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json +++ b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json @@ -7,7 +7,9 @@ "coefficient", "coefficient_down", "coefficient_up", - "initial_balance" + "initial_balance", + "passport", + "target_claim" ], "properties": { "allowed_native": { @@ -31,12 +33,22 @@ "string", "null" ] + }, + "passport": { + "type": "string" + }, + "target_claim": { + "$ref": "#/definitions/Uint64" } }, "definitions": { "Uint128": { "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" } } } diff --git a/contracts/cw-cyber-airdrop/schema/query_msg.json b/contracts/cw-cyber-airdrop/schema/query_msg.json index d25bd55..0831b4a 100644 --- a/contracts/cw-cyber-airdrop/schema/query_msg.json +++ b/contracts/cw-cyber-airdrop/schema/query_msg.json @@ -45,6 +45,26 @@ } }, "additionalProperties": false + }, + { + "type": "object", + "required": [ + "release_state" + ], + "properties": { + "release_state": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + } + } + } + }, + "additionalProperties": false } ] } diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 0b87fb9..bd653a3 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -92,6 +92,7 @@ fn _add_to_namespace( let namespace_route = deps.api.addr_validate(&route.namespace)?; + // TODO refactor this let namespace: &Route = state.namespaces .iter() .find(|&r| r.namespace == namespace_route) diff --git a/contracts/cw721-namespace/src/contract.rs b/contracts/cw721-namespace/src/contract.rs index 2a3f9ad..c1fb64c 100644 --- a/contracts/cw721-namespace/src/contract.rs +++ b/contracts/cw721-namespace/src/contract.rs @@ -93,3 +93,45 @@ fn try_migrate( .add_attribute("method", "try_migrate") .add_attribute("version", contract_version.version)) } + +#[cfg(test)] +mod tests { + use super::*; + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; + use cosmwasm_std::{coins, from_binary}; + + #[test] + fn proper_transfer_nft() { + assert_eq!(true, true); + } + + #[test] + fn proper_send_nft() { + assert_eq!(true, true); + } + + #[test] + fn proper_burn() { + assert_eq!(true, true); + } + + #[test] + fn proper_mint() { + assert_eq!(true, true); + } + + #[test] + fn proper_set_minter() { + assert_eq!(true, true); + } + + #[test] + fn proper_set_owner() { + assert_eq!(true, true); + } + + #[test] + fn proper_set_fee() { + assert_eq!(true, true); + } +} From 073f0e44615df1d92aa28fb372fe841c7875057b Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Wed, 2 Feb 2022 13:19:17 +0800 Subject: [PATCH 03/69] Alpha of passport --- Cargo.lock | 109 ++- Cargo.toml | 4 +- contracts/cw-cyber-passport/Cargo.toml | 13 +- .../cw-cyber-passport/examples/schema.rs | 6 +- .../schema/{state.json => config.json} | 44 +- .../cw-cyber-passport/schema/execute_msg.json | 456 +++++++++++-- .../schema/instantiate_msg.json | 41 +- .../schema/passport_metadata.json | 26 + .../cw-cyber-passport/schema/query_msg.json | 342 +++++++++- contracts/cw-cyber-passport/schema/route.json | 17 - contracts/cw-cyber-passport/src/contract.rs | 219 ++---- contracts/cw-cyber-passport/src/error.rs | 92 ++- contracts/cw-cyber-passport/src/execute.rs | 631 ++++++++++++++++++ contracts/cw-cyber-passport/src/helpers.rs | 213 ++++++ contracts/cw-cyber-passport/src/lib.rs | 10 +- contracts/cw-cyber-passport/src/msg.rs | 272 +++++++- contracts/cw-cyber-passport/src/query.rs | 37 + contracts/cw-cyber-passport/src/state.rs | 32 +- contracts/cw-cyber-passport/src/tests.rs | 258 +++++++ contracts/cw721-namespace/src/contract.rs | 31 +- contracts/cw721-namespace/src/execute.rs | 55 +- contracts/cw721-namespace/src/msg.rs | 7 +- contracts/cw721-namespace/src/state.rs | 11 +- 23 files changed, 2456 insertions(+), 470 deletions(-) rename contracts/cw-cyber-passport/schema/{state.json => config.json} (60%) create mode 100644 contracts/cw-cyber-passport/schema/passport_metadata.json delete mode 100644 contracts/cw-cyber-passport/schema/route.json create mode 100644 contracts/cw-cyber-passport/src/execute.rs create mode 100644 contracts/cw-cyber-passport/src/helpers.rs create mode 100644 contracts/cw-cyber-passport/src/query.rs create mode 100644 contracts/cw-cyber-passport/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 6551fb7..d2ebdd8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,12 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "anyhow" -version = "1.0.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" - [[package]] name = "arrayref" version = "0.3.6" @@ -32,6 +26,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "bech32" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" + [[package]] name = "blake2b_simd" version = "0.5.11" @@ -250,42 +250,29 @@ dependencies = [ "zeroize", ] -[[package]] -name = "cw-cyber-airdrop" -version = "0.0.1" -dependencies = [ - "anyhow", - "base64", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.10.3", - "cw-utils", - "cw0", - "cw2 0.11.1", - "cw20", - "hex", - "schemars", - "serde", - "serde_json", - "sha2", - "sha3", - "thiserror", -] - [[package]] name = "cw-cyber-passport" version = "0.0.1" dependencies = [ + "base64", + "bech32", "cid", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", "cw-storage-plus 0.10.3", + "cw-utils", "cw2 0.10.3", + "cw721", "cw721-base", - "cw721-namespace", + "cyber-std", + "hex", + "primitive-types", + "ripemd160", "schemars", "serde", + "sha2", + "sha3", "thiserror", ] @@ -323,18 +310,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw0" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae676b6cced78a3d38ad4b01ab4ed66fc78ac191c3c0d6bfd5372cb2efd473b" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", - "thiserror", -] - [[package]] name = "cw2" version = "0.10.3" @@ -359,18 +334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw20" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9671d7edef5608acaf5b2f1e473ee3f501eced2cd4f7392e2106c8cf02ba0720" -dependencies = [ - "cosmwasm-std", - "cw-utils", - "schemars", - "serde", -] - [[package]] name = "cw721" version = "0.11.0" @@ -400,19 +363,14 @@ dependencies = [ ] [[package]] -name = "cw721-namespace" -version = "0.0.1" +name = "cyber-std" +version = "0.1.0" dependencies = [ "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.10.3", - "cw0", - "cw2 0.10.3", "cw721", - "cw721-base", "schemars", "serde", - "thiserror", ] [[package]] @@ -517,6 +475,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "static_assertions", +] + [[package]] name = "generic-array" version = "0.14.5" @@ -664,6 +632,16 @@ dependencies = [ "spki", ] +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash", + "uint", +] + [[package]] name = "proc-macro-crate" version = "1.1.0" @@ -734,6 +712,17 @@ dependencies = [ "getrandom 0.2.4", ] +[[package]] +name = "ripemd160" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" +dependencies = [ + "block-buffer", + "digest", + "opaque-debug", +] + [[package]] name = "ryu" version = "1.0.9" diff --git a/Cargo.toml b/Cargo.toml index 7ecca8e..1b53caf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] -members = ["contracts/*"] +members = ["contracts/cw-cyber-passport"] -[profile.release.package.cw721-marketplace ] +[profile.release.package.cw721-marketplace] codegen-units = 1 incremental = false diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index 30ae70b..ea91aec 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -44,13 +44,22 @@ cosmwasm-std = { version = "1.0.0-beta" } cosmwasm-storage = { version = "1.0.0-beta" } cw-storage-plus = "0.10" cw2 = "0.10" -cw721-namespace = { path = "../cw721-namespace", features = ["library"]} +cw721 = { version = "0.11" } schemars = "0.8.3" serde = { version = "1.0.127", default-features = false, features = ["derive"] } thiserror = { version = "1.0.26" } cid = "0.7.0" +cyber-std = { path = "../cyber-std" } +cw-utils = { version = "0.11.1" } +hex = "0.4" +sha2 = { version = "0.9.5", default-features = false } +sha3 = "0.9" +bech32 = "0.8.1" cw721-base = { version = "0.11", features = ["library"] } -#multihash = "0.10" +primitive-types = {version = "0.10.1", default-features = false, features = ["byteorder"]} +ripemd160 = "0.9.1" +base64 = "0.13" [dev-dependencies] cosmwasm-schema = { version = "1.0.0-beta" } + diff --git a/contracts/cw-cyber-passport/examples/schema.rs b/contracts/cw-cyber-passport/examples/schema.rs index b20f572..0036dac 100644 --- a/contracts/cw-cyber-passport/examples/schema.rs +++ b/contracts/cw-cyber-passport/examples/schema.rs @@ -4,7 +4,7 @@ use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; -use cw_cyber_passport::state::{Route, State}; +use cw_cyber_passport::state::{Config, PassportMetadata}; fn main() { let mut out_dir = current_dir().unwrap(); @@ -15,6 +15,6 @@ fn main() { export_schema(&schema_for!(InstantiateMsg), &out_dir); export_schema(&schema_for!(ExecuteMsg), &out_dir); export_schema(&schema_for!(QueryMsg), &out_dir); - export_schema(&schema_for!(State), &out_dir); - export_schema(&schema_for!(Route), &out_dir); + export_schema(&schema_for!(Config), &out_dir); + export_schema(&schema_for!(PassportMetadata), &out_dir); } diff --git a/contracts/cw-cyber-passport/schema/state.json b/contracts/cw-cyber-passport/schema/config.json similarity index 60% rename from contracts/cw-cyber-passport/schema/state.json rename to contracts/cw-cyber-passport/schema/config.json index c95dd29..92b5b28 100644 --- a/contracts/cw-cyber-passport/schema/state.json +++ b/contracts/cw-cyber-passport/schema/config.json @@ -1,57 +1,19 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "State", + "title": "Config", "type": "object", "required": [ - "namespaces" + "owner" ], "properties": { - "cybergift": { - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - }, - "namespaces": { - "type": "array", - "items": { - "$ref": "#/definitions/Route" - } - }, "owner": { - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] + "$ref": "#/definitions/Addr" } }, "definitions": { "Addr": { "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" - }, - "Route": { - "type": "object", - "required": [ - "address", - "namespace" - ], - "properties": { - "address": { - "type": "string" - }, - "namespace": { - "type": "string" - } - } } } } diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index 6b6ace8..4cbb866 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -5,20 +5,21 @@ { "type": "object", "required": [ - "update_namespaces" + "create_passport" ], "properties": { - "update_namespaces": { + "create_passport": { "type": "object", "required": [ - "namespaces" + "avatar", + "nickname" ], "properties": { - "namespaces": { - "type": "array", - "items": { - "$ref": "#/definitions/Route" - } + "avatar": { + "type": "string" + }, + "nickname": { + "type": "string" } } } @@ -28,24 +29,21 @@ { "type": "object", "required": [ - "create_passport" + "update_name" ], "properties": { - "create_passport": { + "update_name": { "type": "object", "required": [ - "citizen", - "routes" + "new_nickname", + "old_nickname" ], "properties": { - "citizen": { + "new_nickname": { "type": "string" }, - "routes": { - "type": "array", - "items": { - "$ref": "#/definitions/RouteData" - } + "old_nickname": { + "type": "string" } } } @@ -55,69 +53,439 @@ { "type": "object", "required": [ - "set_gift" + "update_avatar" ], "properties": { - "set_gift": { + "update_avatar": { "type": "object", "required": [ - "gift" + "new_avatar", + "nickname" ], "properties": { - "gift": { + "new_avatar": { + "type": "string" + }, + "nickname": { "type": "string" } } } }, "additionalProperties": false - } - ], - "definitions": { - "Metadata": { + }, + { "type": "object", "required": [ - "parent", - "target" + "proof_address" ], "properties": { - "parent": { - "type": "string" + "proof_address": { + "type": "object", + "required": [ + "address", + "nickname", + "signature" + ], + "properties": { + "address": { + "type": "string" + }, + "nickname": { + "type": "string" + }, + "signature": { + "$ref": "#/definitions/Binary" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "remove_address" + ], + "properties": { + "remove_address": { + "type": "object", + "required": [ + "address", + "nickname" + ], + "properties": { + "address": { + "type": "string" + }, + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_minter" + ], + "properties": { + "set_minter": { + "type": "object", + "required": [ + "minter" + ], + "properties": { + "minter": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_owner" + ], + "properties": { + "set_owner": { + "type": "object", + "required": [ + "owner" + ], + "properties": { + "owner": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Transfer is a base message to move a token to another account without triggering actions", + "type": "object", + "required": [ + "transfer_nft" + ], + "properties": { + "transfer_nft": { + "type": "object", + "required": [ + "recipient", + "token_id" + ], + "properties": { + "recipient": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Send is a base message to transfer a token to a contract and trigger an action on the receiving contract.", + "type": "object", + "required": [ + "send_nft" + ], + "properties": { + "send_nft": { + "type": "object", + "required": [ + "contract", + "msg", + "token_id" + ], + "properties": { + "contract": { + "type": "string" + }, + "msg": { + "$ref": "#/definitions/Binary" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Mint a new NFT, can only be called by the contract minter", + "type": "object", + "required": [ + "mint" + ], + "properties": { + "mint": { + "$ref": "#/definitions/MintMsg_for_PassportMetadata" + } + }, + "additionalProperties": false + }, + { + "description": "Burn an NFT the sender has access to", + "type": "object", + "required": [ + "burn" + ], + "properties": { + "burn": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Allows operator to transfer / send the token from the owner's account. If expiration is set, then this allowance has a time/height limit", + "type": "object", + "required": [ + "approve" + ], + "properties": { + "approve": { + "type": "object", + "required": [ + "spender", + "token_id" + ], + "properties": { + "expires": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "spender": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Remove previously granted Approval", + "type": "object", + "required": [ + "revoke" + ], + "properties": { + "revoke": { + "type": "object", + "required": [ + "spender", + "token_id" + ], + "properties": { + "spender": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Allows operator to transfer / send any token from the owner's account. If expiration is set, then this allowance has a time/height limit", + "type": "object", + "required": [ + "approve_all" + ], + "properties": { + "approve_all": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "expires": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "operator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Remove previously granted ApproveAll permission", + "type": "object", + "required": [ + "revoke_all" + ], + "properties": { + "revoke_all": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Binary": { + "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec", + "type": "string" + }, + "Expiration": { + "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", + "oneOf": [ + { + "description": "AtHeight will expire when `env.block.height` >= height", + "type": "object", + "required": [ + "at_height" + ], + "properties": { + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false }, - "target": { - "type": "string" + { + "description": "AtTime will expire when `env.block.time` >= time", + "type": "object", + "required": [ + "at_time" + ], + "properties": { + "at_time": { + "$ref": "#/definitions/Timestamp" + } + }, + "additionalProperties": false + }, + { + "description": "Never will never expire. Used to express the empty variant", + "type": "object", + "required": [ + "never" + ], + "properties": { + "never": { + "type": "object" + } + }, + "additionalProperties": false } - } + ] }, - "Route": { + "MintMsg_for_PassportMetadata": { "type": "object", "required": [ - "address", - "namespace" + "extension", + "owner", + "token_id" ], "properties": { - "address": { + "extension": { + "description": "Any custom extension used by this contract", + "allOf": [ + { + "$ref": "#/definitions/PassportMetadata" + } + ] + }, + "owner": { + "description": "The owner of the newly minter NFT", "type": "string" }, - "namespace": { + "token_id": { + "description": "Unique ID of the NFT", "type": "string" + }, + "token_uri": { + "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", + "type": [ + "string", + "null" + ] } } }, - "RouteData": { + "PassportMetadata": { "type": "object", "required": [ - "data", - "namespace" + "avatar", + "nickname" ], "properties": { - "data": { - "$ref": "#/definitions/Metadata" + "addresses": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, + "avatar": { + "type": "string" }, - "namespace": { + "nickname": { "type": "string" } } + }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" } } } diff --git a/contracts/cw-cyber-passport/schema/instantiate_msg.json b/contracts/cw-cyber-passport/schema/instantiate_msg.json index 562fba4..dc9ceef 100644 --- a/contracts/cw-cyber-passport/schema/instantiate_msg.json +++ b/contracts/cw-cyber-passport/schema/instantiate_msg.json @@ -3,31 +3,26 @@ "title": "InstantiateMsg", "type": "object", "required": [ - "namespaces" + "minter", + "name", + "owner", + "symbol" ], "properties": { - "namespaces": { - "type": "array", - "items": { - "$ref": "#/definitions/Route" - } - } - }, - "definitions": { - "Route": { - "type": "object", - "required": [ - "address", - "namespace" - ], - "properties": { - "address": { - "type": "string" - }, - "namespace": { - "type": "string" - } - } + "minter": { + "description": "The minter is the only one who can create new NFTs. This is designed for a base NFT that is controlled by an external program or contract. You will likely replace this with custom logic in custom NFTs", + "type": "string" + }, + "name": { + "description": "Name of the NFT contract", + "type": "string" + }, + "owner": { + "type": "string" + }, + "symbol": { + "description": "Symbol of the NFT contract", + "type": "string" } } } diff --git a/contracts/cw-cyber-passport/schema/passport_metadata.json b/contracts/cw-cyber-passport/schema/passport_metadata.json new file mode 100644 index 0000000..f276cee --- /dev/null +++ b/contracts/cw-cyber-passport/schema/passport_metadata.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PassportMetadata", + "type": "object", + "required": [ + "avatar", + "nickname" + ], + "properties": { + "addresses": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, + "avatar": { + "type": "string" + }, + "nickname": { + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-passport/schema/query_msg.json b/contracts/cw-cyber-passport/schema/query_msg.json index dcef84a..24373ef 100644 --- a/contracts/cw-cyber-passport/schema/query_msg.json +++ b/contracts/cw-cyber-passport/schema/query_msg.json @@ -5,10 +5,348 @@ { "type": "object", "required": [ - "namespaces_list" + "config" ], "properties": { - "namespaces_list": { + "config": { + "type": "object" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "portid" + ], + "properties": { + "portid": { + "type": "object" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "address_by_nickname" + ], + "properties": { + "address_by_nickname": { + "type": "object", + "required": [ + "nickname" + ], + "properties": { + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "passport_by_nickname" + ], + "properties": { + "passport_by_nickname": { + "type": "object", + "required": [ + "nickname" + ], + "properties": { + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "metadata_by_nickname" + ], + "properties": { + "metadata_by_nickname": { + "type": "object", + "required": [ + "nickname" + ], + "properties": { + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "owner_of" + ], + "properties": { + "owner_of": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "approval" + ], + "properties": { + "approval": { + "type": "object", + "required": [ + "spender", + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "spender": { + "type": "string" + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "approvals" + ], + "properties": { + "approvals": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "all_operators" + ], + "properties": { + "all_operators": { + "type": "object", + "required": [ + "owner" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "owner": { + "type": "string" + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "num_tokens" + ], + "properties": { + "num_tokens": { + "type": "object" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract_info" + ], + "properties": { + "contract_info": { + "type": "object" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "nft_info" + ], + "properties": { + "nft_info": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "all_nft_info" + ], + "properties": { + "all_nft_info": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "include_expired": { + "type": [ + "boolean", + "null" + ] + }, + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "tokens" + ], + "properties": { + "tokens": { + "type": "object", + "required": [ + "owner" + ], + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "owner": { + "type": "string" + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "all_tokens" + ], + "properties": { + "all_tokens": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "minter" + ], + "properties": { + "minter": { "type": "object" } }, diff --git a/contracts/cw-cyber-passport/schema/route.json b/contracts/cw-cyber-passport/schema/route.json deleted file mode 100644 index e0c58fb..0000000 --- a/contracts/cw-cyber-passport/schema/route.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Route", - "type": "object", - "required": [ - "address", - "namespace" - ], - "properties": { - "address": { - "type": "string" - }, - "namespace": { - "type": "string" - } - } -} diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index bd653a3..992b687 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -1,42 +1,31 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{attr, to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, CosmosMsg, WasmMsg, Empty}; -use cw2::set_contract_version; +use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, StdResult, to_binary}; +use cyber_std::CyberMsgWrapper; use crate::error::ContractError; -use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, NamespacesListResponse, RouteData}; -use crate::state::{State, STATE}; -use cw721_namespace::{ - msg::ExecuteMsg as Cw721ExecuteMsg, msg::MintMsg, -}; -use cw721_namespace::state::{Extension, Metadata}; -use crate::state::Route; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_minter, execute_set_owner, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate}; +use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use crate::query::{query_address_by_nickname, query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; +use crate::state::{Config, CONFIG, PassportContract, PORTID}; -use cid::multihash::{Code, MultihashDigest}; -use cid::Cid; - -pub type NamespaceContract<'a> = cw721_base::Cw721Contract<'a, Extension, Empty>; - -// version info for migration info -const CONTRACT_NAME: &str = "crates.io:cw-cyber-passport"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); +type Response = cosmwasm_std::Response; #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( deps: DepsMut, - _env: Env, + env: Env, info: MessageInfo, msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - let state = State { - owner: Some(info.sender.clone()), - namespaces: msg.namespaces, // TODO add map_validate - cybergift: None, +) -> StdResult { + let config = Config { + owner: deps.api.addr_validate(&msg.clone().owner)?, }; - STATE.save(deps.storage, &state)?; - Ok(Response::default()) + + CONFIG.save(deps.storage, &config)?; + PORTID.save(deps.storage, &0u64)?; + + PassportContract::default().instantiate(deps, env, info, msg.into()) } #[cfg_attr(not(feature = "library"), entry_point)] @@ -47,162 +36,46 @@ pub fn execute( msg: ExecuteMsg, ) -> Result { match msg { - ExecuteMsg::CreatePassport { - citizen, - routes - } => execute_create_passport(deps, env, info, citizen, routes), - ExecuteMsg::UpdateNamespaces{ namespaces } => execute_update_namespaces(deps, env, info, namespaces), - ExecuteMsg::SetGift { gift } => execute_set_gift(deps, env, info, gift), - } -} - -pub fn execute_create_passport( - deps: DepsMut, - env: Env, - info: MessageInfo, - citizen: String, - routes_data: Vec -) -> Result { - - let state = STATE.load(deps.storage)?; + ExecuteMsg::CreatePassport {nickname, avatar} => execute_create_passport(deps, env, info, nickname, avatar), + ExecuteMsg::UpdateName { old_nickname, new_nickname} => execute_update_name(deps, env, info, old_nickname, new_nickname), + ExecuteMsg::UpdateAvatar { nickname, new_avatar} => execute_update_avatar(deps, env, info, nickname, new_avatar), + ExecuteMsg::ProofAddress { nickname, address, signature } => execute_proof_address(deps, env, info, nickname, address, signature), + ExecuteMsg::RemoveAddress {nickname, address } => execute_remove_address(deps, env, info, nickname, address), + ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), + ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), + // Overwrite CW721 methods + ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), + ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), + ExecuteMsg::Burn { token_id } => execute_burn(deps, env, info, token_id), + ExecuteMsg::Mint(mint_msg) => execute_mint(deps, env, info, mint_msg), + // CW721 methods + _ => PassportContract::default() + .execute(deps, env, info, msg.into()) + .map_err(|err| err.into()), - let cybergift = state.cybergift.ok_or(ContractError::Unauthorized {})?; - let owner = state.owner.ok_or(ContractError::Unauthorized {})?; - - if info.sender != cybergift || info.sender != owner { - return Err(ContractError::Unauthorized {}); - } - - for route in routes_data { - _add_to_namespace(&deps, &env, citizen.clone(), route.clone())?; } - - Ok(Response::new().add_attributes([ - attr("method", "created_passport"), - ])) -} - -fn _add_to_namespace( - deps: &DepsMut, - _env: &Env, - citizen: String, - route: RouteData, -) -> Result { - let state = STATE.load(deps.storage)?; - - let namespace_route = deps.api.addr_validate(&route.namespace)?; - - // TODO refactor this - let namespace: &Route = state.namespaces - .iter() - .find(|&r| r.namespace == namespace_route) - .ok_or(ContractError::Unauthorized {})?; - - let h = Code::Sha2_256.digest(&route.clone().data.parent.as_bytes()); - let token_id_cid = Cid::new_v0(h).unwrap(); - let mint_msg = Cw721ExecuteMsg::Mint(MintMsg { - token_id: token_id_cid.to_string(), - owner: citizen, - token_uri: None, - extension: Metadata { - parent: route.data.parent, - target: route.data.target, - }, - }); - - let callback = CosmosMsg::Wasm(WasmMsg::Execute { - contract_addr: namespace.address.to_string(), - msg: to_binary(&mint_msg)?, - funds: vec![], - }); - - - Ok(Response::new().add_message(callback)) } -pub fn execute_update_namespaces( - deps: DepsMut, - _env: Env, - info: MessageInfo, - namespaces: Vec, -) -> Result { - - let mut state = STATE.load(deps.storage)?; - - let owner = state.clone().owner.ok_or(ContractError::Unauthorized {})?; - - if info.sender != owner { - return Err(ContractError::Unauthorized {}); +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Config {} => to_binary(&query_config(deps)?), + QueryMsg::Portid {} => to_binary(&query_portid(deps)?), + QueryMsg::AddressByNickname {nickname} => to_binary(&query_address_by_nickname(deps, nickname)?), + QueryMsg::PassportByNickname {nickname} => to_binary(&query_passport_by_nickname(deps, nickname)?), + QueryMsg::MetadataByNickname {nickname} => to_binary(&query_metadata_by_nickname(deps, nickname)?), + // CW721 methods + _ => PassportContract::default().query(deps, env, msg.into()), } - - state.namespaces = namespaces; - STATE.save(deps.storage, &state)?; - - Ok(Response::new().add_attributes(vec![ - attr("action", "updated_namespaces") - ])) } -pub fn execute_set_gift( +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn migrate( deps: DepsMut, _env: Env, - info: MessageInfo, - gift: String, + msg: MigrateMsg, ) -> Result { - - let mut state = STATE.load(deps.storage)?; - - let owner = state.clone().owner.ok_or(ContractError::Unauthorized {})?; - - if info.sender != owner { - return Err(ContractError::Unauthorized {}); - } - - state.cybergift = Some(deps.api.addr_validate(&gift)?); - STATE.save(deps.storage, &state)?; - - Ok(Response::new().add_attributes(vec![ - attr("action", "updated_gift") - ])) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { - QueryMsg::NamespacesList {} => to_binary(&query_namespaces_list(deps)?) - } -} - -pub fn query_namespaces_list(deps: Deps) -> StdResult { - let state = STATE.load(deps.storage)?; - Ok(NamespacesListResponse { - namespaces: state.namespaces.into_iter().map(|a| a.into()).collect(), - }) -} - -#[cfg(test)] -mod tests { - use super::*; - use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; - use cosmwasm_std::{coins, from_binary}; - - #[test] - fn proper_initialization() { - assert_eq!(true, true); - } - - #[test] - fn proper_create_passport() { - assert_eq!(true, true); - } - - #[test] - fn proper_update_namespaces() { - assert_eq!(true, true); - } - - #[test] - fn proper_set_gift() { - assert_eq!(true, true); + MigrateMsg { version, config } => try_migrate(deps, version, config), } } diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 5b6749a..59e328f 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -1,7 +1,11 @@ -use cosmwasm_std::StdError; +#[cfg(feature = "backtraces")] +use std::backtrace::Backtrace; + +use cosmwasm_std::{RecoverPubkeyError, StdError}; +use cw721_base::ContractError as CW721ContractError; use thiserror::Error; -#[derive(Error, Debug)] +#[derive(Error, Debug, PartialEq)] pub enum ContractError { #[error("{0}")] Std(#[from] StdError), @@ -9,6 +13,86 @@ pub enum ContractError { #[error("Unauthorized")] Unauthorized {}, - #[error("Invalid namespace")] - InvalidNamespace {}, + #[error("token_id already claimed")] + Claimed {}, + + #[error("Cannot set approval that is already expired")] + Expired {}, + + #[error("Approval not found for: {spender}")] + ApprovalNotFound { spender: String }, + + // ----- + + #[error("Invalid particle")] + InvalidParticle {}, + + #[error("Invalid particle version")] + InvalidParticleVersion {}, + + #[error("Invalid initialization")] + InvalidInitialization {}, + + #[error("Wrong amount for the name")] + WrongAmountForName {}, + + #[error("Nickname already exists")] + NicknameAlreadyExists {}, + + #[error("Nickname not found")] + NicknameNotFound {}, + + #[error("Token not found")] + TokenNotFound {}, + + #[error("Address is not eligible to claim airdrop, {msg}")] + IsNotEligible { msg: String }, + + // ----- + + #[error("Invalid hash format")] + InvalidHashFormat, + + #[error("Invalid signature format")] + InvalidSignatureFormat, + + #[error("Invalid recovery parameter. Supported values: 0 and 1.")] + + InvalidRecoveryParam, + #[error("Unknown error: {error_code}")] + + UnknownErr { + error_code: u32, + #[cfg(feature = "backtraces")] + backtrace: Backtrace, + }, +} + +impl From for ContractError { + fn from(msg: CW721ContractError) -> ContractError { + match msg { + CW721ContractError::Std(e) => ContractError::Std(e), + CW721ContractError::Unauthorized {} => ContractError::Unauthorized {}, + CW721ContractError::Claimed {} => ContractError::Claimed {}, + CW721ContractError::Expired {} => ContractError::Expired {}, + CW721ContractError::ApprovalNotFound {spender} => ContractError::ApprovalNotFound {spender} + } + } +} + +impl From for ContractError { + fn from(msg: RecoverPubkeyError) -> ContractError { + match msg { + RecoverPubkeyError::InvalidHashFormat {} => ContractError::InvalidHashFormat{}, + RecoverPubkeyError::InvalidSignatureFormat {} => ContractError::InvalidHashFormat{}, + RecoverPubkeyError::InvalidRecoveryParam {} => ContractError::InvalidHashFormat{}, + RecoverPubkeyError::UnknownErr { + error_code, .. + } => ContractError::UnknownErr { + error_code, + #[cfg(feature = "backtraces")] + backtrace + }, + } + } } diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs new file mode 100644 index 0000000..b0cc35b --- /dev/null +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -0,0 +1,631 @@ +use std::ops::{Add, Mul}; +use std::str::FromStr; + +use cid::{Cid, Version}; +use cid::multihash::{Code, MultihashDigest}; +use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, Uint128}; +use cw2::{get_contract_version, set_contract_version}; +use cw721::{Cw721Execute, Cw721Query}; +use cw721_base::MintMsg; +use cw_utils::must_pay; + +use cyber_std::{ + create_cyberlink_msg, CyberMsgWrapper, Link, +}; + +use crate::error::ContractError; +use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address}; +use crate::state::{AddressPortID, Extension, NICKNAMES, PassportContract, PassportMetadata, PORTID}; +use crate::state::{Config, CONFIG}; + +type Response = cosmwasm_std::Response; + +// TODO discuss and make this configurable in config +const CONSTITUTION: &str = "QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV"; + +pub fn execute_create_passport( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + avatar: String, +) -> Result { + if NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameAlreadyExists {}); + } + + let cw721_contract = PassportContract::default(); + + let nickname_length = nickname.clone().len(); + if nickname_length < 9 { + let must_pay = must_pay(&info, "boot").unwrap_or_default(); + let to_pay = Uint128::new(1_000_000_000).checked_pow(9-nickname_length as u32).unwrap(); + if must_pay != to_pay { + return Err(ContractError::WrongAmountForName {}); + } + } + + let nick_particle = _prepare_particle(nickname.clone()); + let avatar_particle = _check_particle(avatar.clone())?; + let address_particle = _prepare_particle(info.clone().sender.into()); + + // nickname <-> address <-> avatar + // NOTE if one of cyberlinks from the set is exist it will revert whole message and other links + // TODO split in separate submessages? + let links= vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ]; + + let contract = env.clone().contract.address; + let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + + let last_portid = PORTID.load(deps.storage).unwrap().add(1); + let mint_msg = MintMsg { + token_id: last_portid.to_string(), + owner: info.clone().sender.into(), + token_uri: None, + extension: PassportMetadata { + addresses: None, + avatar, + nickname: nickname.clone() + }, + }; + + PORTID.save(deps.storage, &last_portid)?; + + NICKNAMES.save( + deps.storage, + &nickname, + &AddressPortID{ + address: info.sender, + portid: last_portid.to_string() + } + )?; + + // // let sub = SubMsg::reply_on_success(msg, CYBERLINK_ID).with_gas_limit(128_000); + // let response = cw721_contract.mint(deps, env, info, mint_msg)?; + // // https://github.com/cybercongress/go-cyber/blob/main/x/graph/types/errors.go#L8 + // // TODO run transaction if cyberlink already exist (graph error) + // // TODO fail transaction in all other error cases (graph errors) or ignore this case + // // Ok(response.add_submessage(sub)) + + let internal_info = MessageInfo { + sender: env.clone().contract.address, + funds: info.funds, + }; + + let response = cw721_contract.mint(deps, env, internal_info, mint_msg)?; + + Ok(response.add_message(cyberlink_msg)) +} + +fn _prepare_particle(input: String) -> Cid { + let h = Code::Sha2_256.digest(&input.as_bytes()); + let particle = Cid::new_v0(h).unwrap(); + particle +} + +fn _check_particle(input: String) -> Result { + let particle:Cid; + let try_particle = Cid::from_str(&input.clone()); + if try_particle.is_ok() { + particle = try_particle.unwrap(); + if particle.version() != Version::V0 { + return Err(ContractError::InvalidParticleVersion {}); + } + } else { + return Err(ContractError::InvalidParticle {}); + } + Ok(particle) +} + +pub fn execute_update_name( + deps: DepsMut, + env: Env, + info: MessageInfo, + old_name: String, + new_name: String +) -> Result { + if NICKNAMES.has(deps.storage, &new_name.clone()) { + return Err(ContractError::NicknameAlreadyExists {}); + } + + if !NICKNAMES.has(deps.storage, &old_name.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let nickname_length = new_name.clone().len(); + if nickname_length < 8 { + let must_pay = must_pay(&info, "boot").unwrap_or_default(); + let mul = 10u64.checked_pow(8-nickname_length as u32).unwrap(); + let to_pay = Uint128::new(1_000_000).mul(Uint128::from(mul)); + if must_pay != to_pay { + return Err(ContractError::WrongAmountForName {}); + } + } + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &old_name.clone())?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env.clone(), address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + cw721_contract + .tokens + .update(deps.storage, &address_portid.clone().portid, |token| match token { + Some(mut token_info) => { + token_info.extension.nickname = new_name.clone(); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + NICKNAMES.remove(deps.storage, old_name.as_str()); + NICKNAMES.save( + deps.storage, + &new_name.clone(), + &AddressPortID{ + address: info.clone().sender, + portid: address_portid.portid + } + )?; + + let nick_particle = _prepare_particle(new_name.clone()); + let address_particle = _prepare_particle(info.clone().sender.into()); + + // nickname <-> address + // NOTE if one of cyberlinks from set is exist it will revert whole message and other links + // TODO split in separate messages? + let links= vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + } + ]; + + let contract = env.clone().contract.address; + let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + + Ok(Response::new() + .add_message(cyberlink_msg) + .add_attributes(vec![ + attr("action", "update_nickname"), + attr("old_name", old_name), + attr("new_name", new_name), + ])) +} + +pub fn execute_update_avatar( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + new_avatar: String +) -> Result { + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env.clone(), address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + cw721_contract + .tokens + .update(deps.storage, &address_portid.clone().portid, |token| match token { + Some(mut token_info) => { + token_info.extension.avatar = new_avatar.clone(); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + let avatar_particle = _check_particle(new_avatar.clone())?; + let address_particle = _prepare_particle(info.clone().sender.into()); + + // nickname <-> address + // NOTE if one of cyberlinks from set is exist it will revert whole message and other links + // TODO split in separate messages? + let links= vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into(), + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ]; + + let contract = env.clone().contract.address; + let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + + Ok(Response::new() + .add_message(cyberlink_msg) + .add_attributes(vec![ + attr("action", "update_avatar"), + attr("nickname", nickname), + attr("new_avatar", new_avatar), + ])) +} + +pub fn execute_proof_address( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + address: String, + signature: Binary +) -> Result { + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env.clone(), address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + let proof_res:bool; + if decode_address(&address).is_err() { + proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), CONSTITUTION.into(), signature) + .map_err(|err| ContractError::IsNotEligible { + msg: err.to_string(), + })?; + } else { + proof_res = proof_address_ethereum(deps.as_ref(), address.clone(), CONSTITUTION.into(), signature) + .map_err(|err| ContractError::IsNotEligible { + msg: err.to_string(), + })?; + } + + + if proof_res { + let mut token_info = cw721_contract.tokens.load(deps.storage, &address_portid.clone().portid)?; + if token_info.extension.addresses.is_some() { + let mut addresses = token_info.extension.addresses.unwrap(); + if addresses.len() > 7 { + return Err(ContractError::IsNotEligible { + msg: "Too many addresses".to_string(), + }); + } + if addresses.iter().position(|x| *x == address.clone()).is_some() { + return Err(ContractError::IsNotEligible { + msg: "Address already exist".to_string(), + }); + } + addresses.push(address.clone()); + token_info.extension.addresses = Some(addresses); + } else { + token_info.extension.addresses = Some(vec![address.clone()]); + }; + cw721_contract.tokens.save(deps.storage, &address_portid.clone().portid, &token_info)?; + } else { + return Err(ContractError::IsNotEligible { + msg: "Address is not eligible".to_string(), + }); + } + + let proved_address_particle = _prepare_particle(address.clone()); + let address_particle = _prepare_particle(info.clone().sender.into()); + + // prooved_address <-> address + // NOTE if one of cyberlinks from set is exist it will revert whole message and other links + // TODO split in separate messages? + let links= vec![ + Link{ + from: address_particle.clone().into(), + to: proved_address_particle.clone().into(), + }, + Link{ + from: proved_address_particle.clone().into(), + to: address_particle.clone().into() + } + ]; + + let contract = env.clone().contract.address; + let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + + Ok(Response::new() + .add_message(cyberlink_msg) + .add_attributes(vec![ + attr("action", "proof_address"), + attr("nickname", nickname), + attr("address", address), + ])) +} + +pub fn execute_remove_address( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + address: String, +) -> Result { + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &nickname.clone())?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env, address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + cw721_contract + .tokens + .update(deps.storage, &address_portid.clone().portid, |token| match token { + Some(mut token_info) => { + let mut addresses = token_info.clone().extension.addresses.unwrap(); + let index = addresses.iter().position(|x| *x == address.clone()).unwrap(); + addresses.remove(index); + token_info.extension.addresses = Some(addresses); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + Ok(Response::new() + .add_attributes(vec![ + attr("action", "remove_address"), + attr("nickname", nickname), + attr("address", address), + ])) +} + +// proved addresses are empty during mint +// allow owner to mint passports +pub fn execute_mint( + deps: DepsMut, + env: Env, + info: MessageInfo, + mint_msg: MintMsg, +) -> Result { + let config = CONFIG.load(deps.storage)?; + if info.clone().sender != config.owner { + return Err(ContractError::Unauthorized {}); + } + + if mint_msg.clone().extension.addresses.is_some() { + return Err(ContractError::InvalidInitialization {}); + } + + let internal_info = MessageInfo { + sender: env.clone().contract.address, + funds: info.funds, + }; + + let cw721_contract = PassportContract::default(); + let response = cw721_contract.mint(deps, env, internal_info, mint_msg)?; + Ok(response) +} + +pub fn execute_transfer_nft( + deps: DepsMut, + env: Env, + info: MessageInfo, + recipient: String, + token_id: String, +) -> Result { + let cw721_contract = PassportContract::default(); + + let mut nickname = String::default(); + let mut avatar = String::default(); + cw721_contract + .tokens + .update(deps.storage, &token_id.clone(), |token| match token { + Some(mut token_info) => { + nickname = token_info.clone().extension.nickname; + avatar = token_info.clone().extension.avatar; + token_info.extension.addresses = Some(vec![]); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + NICKNAMES.save( + deps.storage, + &nickname.clone(), + &AddressPortID{ + address: info.clone().sender, + portid: token_id.clone() + } + )?; + + let nick_particle = _prepare_particle(nickname.clone()); + let avatar_particle = _check_particle(avatar.clone())?; + let address_particle = _prepare_particle(info.clone().sender.into()); + + // nickname <-> address <-> avatar + // NOTE if one of cyberlinks from set is exist it will revert whole message and other links + // TODO split in separate messages? + let links= vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ]; + + let contract = env.clone().contract.address; + let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + + let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; + + Ok(response + .add_message(cyberlink_msg) + ) +} + +pub fn execute_send_nft( + deps: DepsMut, + env: Env, + info: MessageInfo, + contract: String, + token_id: String, + msg: Binary +) -> Result { + let cw721_contract = PassportContract::default(); + + // TODO remove proved addresses + // TODO think about contract as passport holder (cyberlinks/nickname?) + + let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; + Ok(response) +} + +pub fn execute_burn( + deps: DepsMut, + env: Env, + info: MessageInfo, + token_id: String, +) -> Result { + let cw721_contract = PassportContract::default(); + + + // TODO link to cyberhole + + let token_info = cw721_contract.tokens.load(deps.storage, &token_id.clone())?; + + if !NICKNAMES.has(deps.storage, &token_info.clone().extension.nickname) { + return Err(ContractError::NicknameNotFound {}); + }; + NICKNAMES.remove(deps.storage, &token_info.clone().extension.nickname); + + let nick_particle = _prepare_particle(token_info.clone().extension.nickname); + let cyberhole_particle = _prepare_particle("cyberhole".into()); + + // avatar <-> cyberhole <-> nickname + // NOTE if one of cyberlinks from set is exist it will revert whole message and other links + // TODO split in separate messages? + let links= vec![ + Link{ + from: cyberhole_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: cyberhole_particle.clone().into() + }, + Link{ + from: cyberhole_particle.clone().into(), + to: token_info.extension.avatar.clone().into() + }, + Link{ + from: token_info.extension.avatar.clone().into(), + to: cyberhole_particle.clone().into() + } + ]; + + let contract = env.clone().contract.address; + let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + + let response = cw721_contract.burn(deps, env, info, token_id)?; + + Ok(response + .add_message(cyberlink_msg) + ) +} + +pub fn execute_set_minter( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_minter: String, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let owner = config.owner; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + let new_minter = deps.api.addr_validate(&new_minter)?; + let cw721_contract = PassportContract::default(); + cw721_contract.minter.save(deps.storage, &new_minter)?; + + Ok(Response::new().add_attribute("action", "set_minter")) +} + +pub fn execute_set_owner( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_owner: String, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let owner = config.owner; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + let owner = deps.api.addr_validate(&new_owner)?; + + CONFIG.update( + deps.storage, + |mut config| -> Result { + config.owner = owner; + Ok(config) + }, + )?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "update_owner") + ])) +} + +pub fn try_migrate( + deps: DepsMut, + version: String, + config: Option, +) -> Result { + let contract_version = get_contract_version(deps.storage)?; + set_contract_version(deps.storage, contract_version.contract, version)?; + + if config.is_some() { + CONFIG.save(deps.storage, &config.unwrap())? + } + + Ok(Response::new() + .add_attribute("method", "try_migrate") + .add_attribute("version", contract_version.version)) +} diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs new file mode 100644 index 0000000..693872c --- /dev/null +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -0,0 +1,213 @@ +use std::convert::TryInto; + +use bech32::{ToBase32, Variant}; +use cosmwasm_std::{Addr, Binary, Deps, from_binary, StdError, StdResult}; +use primitive_types::H256; +use ripemd160::Digest as Ripemd160Digest; +use ripemd160::Ripemd160; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; +use sha2::Sha256; +use sha3::Keccak256; + +use crate::error::ContractError; + +pub fn proof_address_ethereum( + deps: Deps, + address: String, + message: String, + signature: Binary, +) -> Result { + let mut hasher = Keccak256::new(); + + // TODO add address:particle as sign message, where address is passport holder address + hasher.update(format!("\x19Ethereum Signed Message:\n{}", message.len())); + hasher.update(message); + let hash = hasher.finalize(); + let sig = decode_signature(&signature.clone().to_string())?; + + // Decompose signature + let (v, rs) = match sig.split_last() { + Some(pair) => pair, + None => { + return Err(ContractError::IsNotEligible { + msg: "Signature must not be empty".to_string(), + }) + } + }; + let recovery = get_recovery_param(*v)?; + + // Verification + let calculated_pubkey = deps.api.secp256k1_recover_pubkey(&hash, rs, recovery)?; + let calculated_address = ethereum_address_raw(&calculated_pubkey)?; + let signer_address = decode_address(address.clone().as_str())?; + if signer_address != calculated_address { + return Err(ContractError::IsNotEligible { + msg: "signer address is not calculated addr".to_string(), + }); + } + deps.api + .secp256k1_verify(&hash, rs, &calculated_pubkey) + .map_err(|err| ContractError::IsNotEligible { + msg: err.to_string(), + }) +} + +fn get_recovery_param(v: u8) -> StdResult { + match v { + 27 => Ok(0), + 28 => Ok(1), + _ => Err(StdError::generic_err("Values of v other than 27 and 28 not supported. Replay protection (EIP-155) cannot be used here.")) + } +} + +/// Returns a raw 20 byte Ethereum address +fn ethereum_address_raw(pubkey: &[u8]) -> StdResult<[u8; 20]> { + let (tag, data) = match pubkey.split_first() { + Some(pair) => pair, + None => return Err(StdError::generic_err("Public key must not be empty")), + }; + if *tag != 0x04 { + return Err(StdError::generic_err("Public key must start with 0x04")); + } + if data.len() != 64 { + return Err(StdError::generic_err("Public key must be 65 bytes long")); + } + + let hash = Keccak256::digest(data); + Ok(hash[hash.len() - 20..].try_into().unwrap()) +} + +/// Returns a raw 20 byte Ethereum address from hex +pub fn decode_address(input: &str) -> StdResult<[u8; 20]> { + if input.len() != 42 { + return Err(StdError::generic_err( + "Ethereum address must be 42 characters long", + )); + } + if !input.starts_with("0x") { + return Err(StdError::generic_err("Ethereum address must start wit 0x")); + } + let data = hex::decode(&input[2..]).map_err(|_| StdError::generic_err("hex decoding error"))?; + Ok(data.try_into().unwrap()) +} + +/// Returns a raw 65 byte Ethereum signature from hex +pub fn decode_signature(input: &str) -> StdResult<[u8; 65]> { + if input.len() != 132 { + return Err(StdError::generic_err( + "Ethereum signature must be 132 characters long", + )); + } + if !input.starts_with("0x") { + return Err(StdError::generic_err( + "Ethereum signature must start wit 0x", + )); + } + let data = hex::decode(&input[2..]).map_err(|_| StdError::generic_err("hex decoding error"))?; + Ok(data.try_into().unwrap()) +} + +pub fn proof_address_cosmos( + deps: Deps, + address: String, + _message: String, + signature: Binary, +) -> Result { + // build ADR-36 tx, not supported by cosmwasm because json imports float operations inside + // let obj = json!( + // { + // "account_number":"0", + // "chain_id":"", + // "fee":{"amount":[],"gas":"0"}, + // "memo":"", + // "msgs":[ + // { + // "type":"sign/MsgSignData", + // "value":{ + // "data": base64::encode(message), + // "signer": address + // } + // }], + // "sequence":"0" + // }); + + // message already included + // TODO add address:particle as sign message, where address is passport holder address + let mut adr_36_with_message:Vec = vec![123,34,97,99,99,111,117,110,116,95,110,117,109,98,101,114,34,58,34,48,34,44,34,99,104,97,105,110,95,105,100,34,58,34,34,44,34,102,101,101,34,58,123,34,97,109,111,117,110,116,34,58,91,93,44,34,103,97,115,34,58,34,48,34,125,44,34,109,101,109,111,34,58,34,34,44,34,109,115,103,115,34,58,91,123,34,116,121,112,101,34,58,34,115,105,103,110,47,77,115,103,83,105,103,110,68,97,116,97,34,44,34,118,97,108,117,101,34,58,123,34,100,97,116,97,34,58,34,85,87,49,83,87,68,104,120,87,87,100,108,87,109,57,90,84,84,78,78,78,88,112,54,85,87,70,88,82,88,66,87,82,109,82,119,97,87,52,50,82,110,90,87,87,72,90,119,78,108,74,81,85,85,115,122,98,51,86,109,86,103,61,61,34,44,34,115,105,103,110,101,114,34,58,34]; + let mut adr_36_postfix:Vec = vec![34,125,125,93,44,34,115,101,113,117,101,110,99,101,34,58,34,48,34,125]; + adr_36_with_message.append(&mut address.clone().as_bytes().to_vec()); + adr_36_with_message.append(&mut adr_36_postfix); + + // println!("raw {:?}", adr_36_prefix_with_message.as_slice()); + // println!("json {:?}", obj.to_string().as_bytes()); + let hash = Sha256::digest(&adr_36_with_message); + let sig: CosmosSignature = from_binary(&signature).unwrap(); + + deps.api.addr_validate(&address.clone())?; + let (prefix, _, _) = bech32::decode(&address.clone()).unwrap(); + + let address_sig = pub_key_to_address(&deps, &sig.pub_key, &prefix)?; + + if address != address_sig.to_string() { + return Err(ContractError::Unauthorized {}) + } + + let result = deps + .api + .secp256k1_verify( + hash.as_ref(), + &sig.signature.as_slice(), + &sig.pub_key.as_slice(), + ) + .map_err(|err| ContractError::IsNotEligible { + msg: err.to_string(), + }); + return result; +} + +/// Converts user pubkey into Addr with given prefix +fn pub_key_to_address(deps: &Deps, pub_key: &[u8], prefix: &str) -> StdResult { + let compressed_pub_key = to_compressed_pub_key(pub_key)?; + let mut ripemd160_hasher = Ripemd160::new(); + ripemd160_hasher.update(Sha256::digest(&compressed_pub_key)); + let addr_bytes = ripemd160_hasher.finalize().to_vec(); + let addr_str = bech32::encode(prefix, addr_bytes.to_base32(), Variant::Bech32).unwrap(); + deps.api.addr_validate(&addr_str) +} + +/// Converts uncompressed pub key into compressed one +fn to_compressed_pub_key(pub_key: &[u8]) -> StdResult> { + match pub_key.len() { + // compressed + 33 => Ok(pub_key.to_vec()), + // uncompressed + 65 => { + let y = H256::from_slice(&pub_key[33..]); + let mut pub_key_compressed = pub_key[1..33].to_vec(); + + // Check whether even or odd + if y & H256::from_low_u64_be(1) == H256::zero() { + // 0x02 + pub_key_compressed.insert(0, 2); + } else { + // 0x03 + pub_key_compressed.insert(0, 3); + } + + Ok(pub_key_compressed) + } + _ => Err(StdError::generic_err("PubKeyLengthIsNotValid" )) + } +} + +// { +// pub_key: "A+MXFp7YeLMvoVlAU66Uu0z3Wtc9Cuwq0eocUhtNOmnw", +// signature: "9O89CUdRRZj011BphnTs5JnYM9/0O0ch+XLG2DNiWqtYnA4xA5B0wmFQDOQogOxL5xKWILVMnv1IA/7s05QsIA==" +// }; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct CosmosSignature { + pub_key: Binary, + signature: Binary, +} diff --git a/contracts/cw-cyber-passport/src/lib.rs b/contracts/cw-cyber-passport/src/lib.rs index dfedc9d..2ecaaae 100644 --- a/contracts/cw-cyber-passport/src/lib.rs +++ b/contracts/cw-cyber-passport/src/lib.rs @@ -1,6 +1,8 @@ pub mod contract; -mod error; -pub mod msg; +pub mod error; +pub mod execute; +pub mod query; pub mod state; - -pub use crate::error::ContractError; +pub mod msg; +pub mod helpers; +mod tests; diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index c818a03..f1ee2a6 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -1,41 +1,283 @@ +use cosmwasm_std::Binary; +use cw721::Expiration; +use cw721_base::{ + MintMsg as CW721MintMsg, + msg::{ + ExecuteMsg as CW721ExecuteMsg, InstantiateMsg as CW721InstantiateMsg, + QueryMsg as CW721QueryMsg, + }, +}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use cw721_namespace::state::Metadata; -use crate::state::Route; + +use crate::state::Extension; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub struct InstantiateMsg { - pub namespaces: Vec, + /// Name of the NFT contract + pub name: String, + /// Symbol of the NFT contract + pub symbol: String, + + /// The minter is the only one who can create new NFTs. + /// This is designed for a base NFT that is controlled by an external program + /// or contract. You will likely replace this with custom logic in custom NFTs + pub minter: String, + + pub owner: String, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct RouteData { - pub namespace: String, - pub data: Metadata, +impl From for CW721InstantiateMsg { + fn from(msg: InstantiateMsg) -> CW721InstantiateMsg { + CW721InstantiateMsg { + name: msg.name, + symbol: msg.symbol, + minter: msg.minter, + } + } } +pub type MintMsg = CW721MintMsg; + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { - UpdateNamespaces { namespaces: Vec }, CreatePassport { - citizen: String, - routes: Vec, + nickname: String, + avatar: String, + }, + UpdateName{ + old_nickname: String, + new_nickname: String + }, + UpdateAvatar{ + nickname: String, + new_avatar: String + }, + ProofAddress{ + nickname: String, + address: String, + signature: Binary, + }, + RemoveAddress{ + nickname: String, + address: String, + }, + SetMinter { minter: String }, + SetOwner { owner: String }, + + // Overwrite Standard CW721 ExecuteMsg + + /// Transfer is a base message to move a token to another account without triggering actions + TransferNft { + recipient: String, + token_id: String, + }, + /// Send is a base message to transfer a token to a contract and trigger an action + /// on the receiving contract. + SendNft { + contract: String, + token_id: String, + msg: Binary, + }, + + /// Mint a new NFT, can only be called by the contract minter + Mint(MintMsg), + + /// Burn an NFT the sender has access to + Burn { token_id: String }, + + // Standard CW721 ExecuteMsg + + /// Allows operator to transfer / send the token from the owner's account. + /// If expiration is set, then this allowance has a time/height limit + Approve { + spender: String, + token_id: String, + expires: Option, + }, + /// Remove previously granted Approval + Revoke { + spender: String, + token_id: String, + }, + /// Allows operator to transfer / send any token from the owner's account. + /// If expiration is set, then this allowance has a time/height limit + ApproveAll { + operator: String, + expires: Option, + }, + /// Remove previously granted ApproveAll permission + RevokeAll { + operator: String, }, - SetGift { gift: String }, +} + +impl From for CW721ExecuteMsg { + fn from(msg: ExecuteMsg) -> CW721ExecuteMsg { + match msg { + ExecuteMsg::Approve { + spender, + token_id, + expires, + } => CW721ExecuteMsg::Approve { + spender, + token_id, + expires, + }, + ExecuteMsg::Revoke { spender, token_id } => { + CW721ExecuteMsg::Revoke { spender, token_id } + } + ExecuteMsg::ApproveAll { operator, expires } => { + CW721ExecuteMsg::ApproveAll { operator, expires } + } + ExecuteMsg::RevokeAll { operator } => CW721ExecuteMsg::RevokeAll { operator }, + _ => panic!("cannot covert {:?} to CW721ExecuteMsg", msg), + } + } } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum QueryMsg { - NamespacesList {} + Config {}, + Portid {}, + AddressByNickname { nickname: String }, + PassportByNickname { nickname: String }, + MetadataByNickname { nickname: String }, + + // Standard CW721 queries + OwnerOf { + token_id: String, + include_expired: Option, + }, + Approval { + token_id: String, + spender: String, + include_expired: Option, + }, + Approvals { + token_id: String, + include_expired: Option, + }, + AllOperators { + owner: String, + include_expired: Option, + start_after: Option, + limit: Option, + }, + NumTokens {}, + ContractInfo {}, + NftInfo { + token_id: String, + }, + AllNftInfo { + token_id: String, + include_expired: Option, + }, + Tokens { + owner: String, + start_after: Option, + limit: Option, + }, + AllTokens { + start_after: Option, + limit: Option, + }, + Minter {}, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +impl From for CW721QueryMsg { + fn from(msg: QueryMsg) -> CW721QueryMsg { + match msg { + QueryMsg::OwnerOf { + token_id, + include_expired, + } => CW721QueryMsg::OwnerOf { + token_id, + include_expired, + }, + QueryMsg::Approval { + token_id, + spender, + include_expired, + } => CW721QueryMsg::Approval { + token_id, + spender, + include_expired + }, + QueryMsg::Approvals { + token_id, + include_expired, + } => CW721QueryMsg::Approvals { + token_id, + include_expired + }, + QueryMsg::AllOperators { + owner, + include_expired, + start_after, + limit, + } => CW721QueryMsg::AllOperators { + owner, + include_expired, + start_after, + limit, + }, + QueryMsg::NumTokens {} => CW721QueryMsg::NumTokens {}, + QueryMsg::ContractInfo {} => CW721QueryMsg::ContractInfo {}, + QueryMsg::NftInfo { token_id } => CW721QueryMsg::NftInfo { token_id }, + QueryMsg::AllNftInfo { + token_id, + include_expired, + } => CW721QueryMsg::AllNftInfo { + token_id, + include_expired, + }, + QueryMsg::Tokens { + owner, + start_after, + limit, + } => CW721QueryMsg::Tokens { + owner, + start_after, + limit, + }, + QueryMsg::AllTokens { start_after, limit } => { + CW721QueryMsg::AllTokens { start_after, limit } + }, + QueryMsg::Minter {} => { + CW721QueryMsg::Minter {} + } + _ => panic!("cannot covert {:?} to CW721QueryMsg", msg), + } + } +} + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub struct ConfigResponse { + pub owner: String, +} + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub struct PortidResponse { + pub portid: u64, +} + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub struct AddressResponse { + pub address: String, +} + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] #[serde(rename_all = "snake_case")] -pub struct NamespacesListResponse { - pub namespaces: Vec +pub struct MigrateMsg { + pub version: String, + pub config: Option, } diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs new file mode 100644 index 0000000..a07f6c4 --- /dev/null +++ b/contracts/cw-cyber-passport/src/query.rs @@ -0,0 +1,37 @@ +use cosmwasm_std::{Deps, StdResult}; +use cw721_base::state::TokenInfo; +use crate::msg::{ConfigResponse, PortidResponse, AddressResponse}; +use crate::state::{CONFIG, NICKNAMES, PassportContract, PassportMetadata, PORTID}; + +pub fn query_config(deps: Deps) -> StdResult { + let cfg = CONFIG.load(deps.storage)?; + Ok(ConfigResponse { owner: cfg.owner.into() }) +} + +pub fn query_metadata_by_nickname(deps: Deps, nickname: String) -> StdResult { + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let cw721_contract = PassportContract::default(); + let token_info = cw721_contract + .tokens + .load(deps.storage, address_portid.portid.as_str())?; + Ok(token_info.extension) +} + +pub fn query_passport_by_nickname(deps: Deps, nickname: String) -> StdResult> { + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let cw721_contract = PassportContract::default(); + let token_info = cw721_contract + .tokens + .load(deps.storage, address_portid.portid.as_str())?; + Ok(token_info) +} + +pub fn query_address_by_nickname(deps: Deps, nickname: String) -> StdResult { + let address_portid = NICKNAMES.may_load(deps.storage, &nickname)?; + Ok(AddressResponse { address: address_portid.unwrap().address.into() }) +} + +pub fn query_portid(deps: Deps) -> StdResult { + let portid = PORTID.load(deps.storage)?; + Ok(PortidResponse { portid: portid.into() }) +} diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index 8d509be..b3a266f 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -1,20 +1,32 @@ +use cosmwasm_std::Addr; +use cw_storage_plus::{Item, Map}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use cosmwasm_std::Addr; -use cw_storage_plus::Item; +use cyber_std::CyberMsgWrapper; + +pub type PassportContract<'a> = cw721_base::Cw721Contract<'a, Extension, CyberMsgWrapper>; +pub type Extension = PassportMetadata; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct Route { - pub namespace: String, - pub address: String, +pub struct Config { + pub owner: Addr, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct State { - pub owner: Option, - pub cybergift: Option, - pub namespaces: Vec, +pub struct AddressPortID { + pub address: Addr, + pub portid: String, } -pub const STATE: Item = Item::new("state"); +pub const CONFIG: Item = Item::new("config"); +pub const NICKNAMES: Map<&str, AddressPortID> = Map::new("nicknames"); +pub const PORTID: Item = Item::new("portid"); + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)] +#[serde(rename_all = "snake_case")] +pub struct PassportMetadata { + pub addresses: Option>, + pub avatar: String, + pub nickname: String, +} diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs new file mode 100644 index 0000000..819393c --- /dev/null +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -0,0 +1,258 @@ +#[cfg(test)] +mod tests { + use cosmwasm_std::{Api, Binary, coin}; + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; + use cw721_base::state::TokenInfo; + use crate::msg::{ConfigResponse, ExecuteMsg, InstantiateMsg, PortidResponse}; + use crate::state::PassportMetadata; + use crate::contract::{execute, instantiate}; + use crate::error::ContractError; + use crate::query::{query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; + + #[test] + fn proper_initialization() { + let mut deps = mock_dependencies(); + + let owner = "owner"; + let minter = "cosmos2contract"; + let citizen = "bostrom1wnpak7sfawsfv9c8vqe7naxfa4g99lv77d7c0z"; + + // instantiate the contract + let instantiate_msg = InstantiateMsg { + name: "MoonPassport".to_string(), + symbol: "MP".to_string(), + minter: minter.to_string(), + owner: owner.to_string() + }; + let info = mock_info(&owner, &[]); + instantiate(deps.as_mut(), mock_env(), info, instantiate_msg).unwrap(); + + let expected_config = ConfigResponse { + owner: owner.to_string(), + }; + assert_eq!(query_config(deps.as_ref()).unwrap(), expected_config); + + let expected_portid = PortidResponse { + portid: 0u64 + }; + assert_eq!(query_portid(deps.as_ref()).unwrap(), expected_portid); + + let create_passport_msg = ExecuteMsg::CreatePassport { + nickname: "test_nickname".to_string(), + avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + }; + + let info = mock_info(&citizen, &[]); + execute(deps.as_mut(), mock_env(), info, create_passport_msg).unwrap(); + + let expected_portid = PortidResponse { + portid: 1u64 + }; + assert_eq!(query_portid(deps.as_ref()).unwrap(), expected_portid); + + let expected_passport_metadata = PassportMetadata { + nickname: "test_nickname".to_string(), + avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + addresses: None, + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport_metadata); + + let expected_passport = TokenInfo:: { + owner: deps.api.addr_validate(&citizen).unwrap(), + approvals: vec![], + token_uri: None, + extension: PassportMetadata { + nickname: "test_nickname".to_string(), + avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + addresses: None, + } + }; + assert_eq!(query_passport_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport); + + let update_name_msg = ExecuteMsg::UpdateName { + old_nickname: "test_nickname".to_string(), + new_nickname: "test_nickname_new".to_string(), + }; + + let info = mock_info(&citizen, &[]); + execute(deps.as_mut(), mock_env(), info, update_name_msg).unwrap(); + + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname".into()).is_err(), true); + let expected_passport_metadata = PassportMetadata { + nickname: "test_nickname_new".to_string(), + avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + addresses: None, + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + + let update_avatar_msg = ExecuteMsg::UpdateAvatar { + nickname: "test_nickname_new".to_string(), + new_avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), + }; + + let info = mock_info(&citizen, &[]); + execute(deps.as_mut(), mock_env(), info, update_avatar_msg).unwrap(); + + let expected_passport_metadata = PassportMetadata { + nickname: "test_nickname_new".to_string(), + avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), + addresses: None, + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + + //// check that is available to proof address + + let proof_address_msg = ExecuteMsg::ProofAddress { + nickname: "test_nickname_new".to_string(), + address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), + }; + + let info = mock_info(&citizen, &[]); + execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap(); + + let expected_passport_metadata = PassportMetadata { + nickname: "test_nickname_new".to_string(), + avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), + addresses: Option::from(vec!["0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string()]), + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + + let proof_address_msg = ExecuteMsg::ProofAddress { + nickname: "test_nickname_new".to_string(), + address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), + signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), + }; + + let info = mock_info(&citizen, &[]); + execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap(); + + let expected_passport_metadata = PassportMetadata { + nickname: "test_nickname_new".to_string(), + avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), + addresses: Option::from(vec![ + "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() + ]), + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + + //// check that is not available to proof same address twice + + let proof_address_msg = ExecuteMsg::ProofAddress { + nickname: "test_nickname_new".to_string(), + address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), + }; + + let info = mock_info(&citizen, &[]); + let err = execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap_err(); + + assert_eq!(err, ContractError::IsNotEligible { msg: "Address already exist".to_string() }); + + let proof_address_msg = ExecuteMsg::ProofAddress { + nickname: "test_nickname_new".to_string(), + address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), + signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), + }; + + let info = mock_info(&citizen, &[]); + let err = execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap_err(); + + assert_eq!(err, ContractError::IsNotEligible { msg: "Address already exist".to_string() }); + + // check that is available to delete proved addresses + + let remove_address_msg = ExecuteMsg::RemoveAddress { + nickname: "test_nickname_new".to_string(), + address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + }; + + let info = mock_info(&citizen, &[]); + execute(deps.as_mut(), mock_env(), info, remove_address_msg).unwrap(); + + let expected_passport_metadata = PassportMetadata { + nickname: "test_nickname_new".to_string(), + avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), + addresses: Option::from(vec!["bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string()]), + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + + let remove_address_msg = ExecuteMsg::RemoveAddress { + nickname: "test_nickname_new".to_string(), + address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), + }; + + let info = mock_info(&citizen, &[]); + execute(deps.as_mut(), mock_env(), info, remove_address_msg).unwrap(); + + let expected_passport_metadata = PassportMetadata { + nickname: "test_nickname_new".to_string(), + avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), + addresses: Option::from(vec![]), + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + + // check that is possible to buy name + let update_name_msg = ExecuteMsg::UpdateName { + old_nickname: "test_nickname_new".to_string(), + new_nickname: "name".to_string(), + }; + + let info = mock_info(&citizen, &[coin(10_000_000_000, "boot")]); + execute(deps.as_mut(), mock_env(), info, update_name_msg).unwrap(); + + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname".into()).is_err(), true); + let expected_passport_metadata = PassportMetadata { + nickname: "name".to_string(), + avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), + addresses: Option::from(vec![]), + }; + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "name".into()).unwrap(), expected_passport_metadata); + } + + #[test] + fn proper_set_minter() { + assert_eq!(true, true); + } + + #[test] + fn proper_set_owner() { + assert_eq!(true, true); + } + + #[test] + fn proper_create_passport() { + assert_eq!(true, true); + } + + #[test] + fn proper_update_spaces() { + assert_eq!(true, true); + } + + #[test] + fn proper_transfer_nft() { + assert_eq!(true, true); + } + + #[test] + fn proper_send_nft() { + assert_eq!(true, true); + } + + #[test] + fn proper_burn() { + assert_eq!(true, true); + } + + #[test] + fn proper_mint() { + assert_eq!(true, true); + } + + #[test] + fn proper_proof() { + assert_eq!(true, true); + } +} diff --git a/contracts/cw721-namespace/src/contract.rs b/contracts/cw721-namespace/src/contract.rs index c1fb64c..8fbad7f 100644 --- a/contracts/cw721-namespace/src/contract.rs +++ b/contracts/cw721-namespace/src/contract.rs @@ -5,9 +5,9 @@ use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, use cw2::{get_contract_version, set_contract_version}; pub use cw721_base::{MintMsg, MinterResponse}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; -use crate::state::NamespaceContract; +use crate::state::SpaceContract; -use crate::execute::{execute_mint, execute_burn, execute_set_minter, execute_set_owner, execute_set_fee, execute_transfer_nft, execute_send_nft}; +use crate::execute::{execute_mint, execute_burn, execute_set_minter, execute_set_owner, execute_transfer_nft, execute_send_nft}; use crate::query::{query_config}; use crate::state::{Config, CONFIG}; @@ -20,18 +20,14 @@ pub fn instantiate( info: MessageInfo, msg: InstantiateMsg, ) -> StdResult { - let owner = msg.clone() - .owner - .map_or(Ok(info.clone().sender), |o| deps.api.addr_validate(&o))?; let config = Config { - fee: msg.clone().fee, - owner: Some(owner) + owner: deps.api.addr_validate(&msg.clone().owner)? }; CONFIG.save(deps.storage, &config)?; - NamespaceContract::default().instantiate(deps, env, info, msg.into()) + SpaceContract::default().instantiate(deps, env, info, msg.into()) } #[cfg_attr(not(feature = "library"), entry_point)] @@ -44,14 +40,13 @@ pub fn execute( match msg { ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), - ExecuteMsg::SetFee { fee } => execute_set_fee(deps, env, info, fee), // Overwrite CW721 methods ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), ExecuteMsg::Burn { token_id } => execute_burn(deps, env, info, token_id), ExecuteMsg::Mint(mint_msg) => execute_mint(deps, env, info, mint_msg), // CW721 methods - _ => NamespaceContract::default() + _ => SpaceContract::default() .execute(deps, env, info, msg.into()) .map_err(|err| err.into()), } @@ -62,7 +57,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { QueryMsg::Config {} => to_binary(&query_config(deps)?), // CW721 methods - _ => NamespaceContract::default().query(deps, env, msg.into()), + _ => SpaceContract::default().query(deps, env, msg.into()), } } @@ -101,37 +96,37 @@ mod tests { use cosmwasm_std::{coins, from_binary}; #[test] - fn proper_transfer_nft() { + fn proper_initialization() { assert_eq!(true, true); } #[test] - fn proper_send_nft() { + fn proper_set_minter() { assert_eq!(true, true); } #[test] - fn proper_burn() { + fn proper_set_owner() { assert_eq!(true, true); } #[test] - fn proper_mint() { + fn proper_transfer_nft() { assert_eq!(true, true); } #[test] - fn proper_set_minter() { + fn proper_send_nft() { assert_eq!(true, true); } #[test] - fn proper_set_owner() { + fn proper_burn() { assert_eq!(true, true); } #[test] - fn proper_set_fee() { + fn proper_mint() { assert_eq!(true, true); } } diff --git a/contracts/cw721-namespace/src/execute.rs b/contracts/cw721-namespace/src/execute.rs index bb0eeea..41197ec 100644 --- a/contracts/cw721-namespace/src/execute.rs +++ b/contracts/cw721-namespace/src/execute.rs @@ -1,7 +1,7 @@ use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, Coin, StdResult, attr, Binary}; use cw721::Cw721Execute; use cw721_base::{MintMsg}; -use crate::state::{Extension, NamespaceContract}; +use crate::state::{Extension, SpaceContract}; use crate::error::ContractError; use crate::state::{Config, CONFIG}; @@ -13,7 +13,7 @@ pub fn execute_transfer_nft( recipient: String, token_id: String, ) -> Result { - let cw721_contract = NamespaceContract::default(); + let cw721_contract = SpaceContract::default(); let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; Ok(response) @@ -27,7 +27,7 @@ pub fn execute_send_nft( token_id: String, msg: Binary ) -> Result { - let cw721_contract = NamespaceContract::default(); + let cw721_contract = SpaceContract::default(); let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; Ok(response) @@ -39,7 +39,7 @@ pub fn execute_mint( info: MessageInfo, mint_msg: MintMsg, ) -> Result { - let cw721_contract = NamespaceContract::default(); + let cw721_contract = SpaceContract::default(); let response = cw721_contract.mint(deps, env, info, mint_msg)?; Ok(response) @@ -51,7 +51,7 @@ pub fn execute_burn( info: MessageInfo, token_id: String, ) -> Result { - let cw721_contract = NamespaceContract::default(); + let cw721_contract = SpaceContract::default(); let response = cw721_contract.burn(deps, env, info, token_id)?; Ok(response) @@ -64,13 +64,13 @@ pub fn execute_set_minter( new_minter: String, ) -> Result { let config = CONFIG.load(deps.storage)?; - let owner = config.owner.ok_or(ContractError::Unauthorized {})?; + let owner = config.owner; if info.sender != owner { return Err(ContractError::Unauthorized {}); } let new_minter = deps.api.addr_validate(&new_minter)?; - let cw721_contract = NamespaceContract::default(); + let cw721_contract = SpaceContract::default(); cw721_contract.minter.save(deps.storage, &new_minter)?; Ok(Response::new().add_attribute("action", "set_minter")) @@ -80,50 +80,21 @@ pub fn execute_set_owner( deps: DepsMut, _env: Env, info: MessageInfo, - new_owner: Option, + new_owner: String, ) -> Result { let config = CONFIG.load(deps.storage)?; - let owner = config.owner.ok_or(ContractError::Unauthorized {})?; + let owner = config.owner; if info.sender != owner { return Err(ContractError::Unauthorized {}); } - let mut tmp_owner = None; - if let Some(addr) = new_owner { - tmp_owner = Some(deps.api.addr_validate(&addr)?) - } + let config = Config { + owner: deps.api.addr_validate(&new_owner)? + }; - CONFIG.update(deps.storage, |mut exists| -> StdResult<_> { - exists.owner = tmp_owner; - Ok(exists) - })?; + CONFIG.save(deps.storage, &config)?; Ok(Response::new().add_attributes(vec![ attr("action", "update_owner") ])) } - -pub fn execute_set_fee( - deps: DepsMut, - _env: Env, - info: MessageInfo, - new_fee: Coin, -) -> Result { - let config = CONFIG.load(deps.storage)?; - let owner = config.owner.ok_or(ContractError::Unauthorized {})?; - if info.sender != owner { - return Err(ContractError::Unauthorized {}); - } - - CONFIG.update( - deps.storage, - |mut config| -> Result { - config.fee = new_fee; - Ok(config) - }, - )?; - - Ok(Response::new().add_attributes(vec![ - attr("action", "set_fee") - ])) -} diff --git a/contracts/cw721-namespace/src/msg.rs b/contracts/cw721-namespace/src/msg.rs index a459e79..ff2ae70 100644 --- a/contracts/cw721-namespace/src/msg.rs +++ b/contracts/cw721-namespace/src/msg.rs @@ -14,6 +14,7 @@ use cw721_base::{ use crate::state::Extension; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] pub struct InstantiateMsg { /// Name of the NFT contract pub name: String, @@ -25,8 +26,7 @@ pub struct InstantiateMsg { /// or contract. You will likely replace this with custom logic in custom NFTs pub minter: String, - pub fee: Coin, - pub owner: Option, + pub owner: String, } impl From for CW721InstantiateMsg { @@ -46,8 +46,7 @@ pub type MintMsg = CW721MintMsg; #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { SetMinter { minter: String }, - SetOwner { owner: Option }, - SetFee { fee: Coin }, + SetOwner { owner: String }, // Overwrite Standard CW721 ExecuteMsg diff --git a/contracts/cw721-namespace/src/state.rs b/contracts/cw721-namespace/src/state.rs index 5938b65..79e4a40 100644 --- a/contracts/cw721-namespace/src/state.rs +++ b/contracts/cw721-namespace/src/state.rs @@ -3,19 +3,18 @@ use serde::{Deserialize, Serialize}; use cosmwasm_std::{Addr, Empty, Coin}; use cw_storage_plus::Item; -pub type NamespaceContract<'a> = cw721_base::Cw721Contract<'a, Extension, Empty>; -pub type Extension = Metadata; +pub type SpaceContract<'a> = cw721_base::Cw721Contract<'a, Extension, Empty>; +pub type Extension = SpaceMetadata; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct Config { - pub fee: Coin, - pub owner: Option, + pub owner: Addr, } pub const CONFIG: Item = Item::new("config"); #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)] -pub struct Metadata { - pub parent: String, +pub struct SpaceMetadata { + pub source: String, pub target: String, } From 47583f172441adbb8e3d60521e439c47bb0568b6 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 3 Feb 2022 14:49:24 +0800 Subject: [PATCH 04/69] Alpha of cybergift --- Cargo.lock | 52 ++++ Cargo.toml | 2 +- .../cw-cyber-airdrop/schema/execute_msg.json | 76 ++---- contracts/cw-cyber-airdrop/src/contract.rs | 104 ++++++++ contracts/cw-cyber-airdrop/src/execute.rs | 244 ++++-------------- contracts/cw-cyber-airdrop/src/helpers.rs | 138 +--------- contracts/cw-cyber-airdrop/src/lib.rs | 6 +- contracts/cw-cyber-airdrop/src/msg.rs | 68 ++--- contracts/cw-cyber-airdrop/src/query.rs | 45 ++++ contracts/cw-cyber-airdrop/src/state.rs | 1 + contracts/cw-cyber-passport/src/execute.rs | 28 +- contracts/cw-cyber-passport/src/msg.rs | 6 + contracts/cw-cyber-passport/src/query.rs | 23 +- 13 files changed, 353 insertions(+), 440 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/src/contract.rs create mode 100644 contracts/cw-cyber-airdrop/src/query.rs diff --git a/Cargo.lock b/Cargo.lock index d2ebdd8..7db206a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "anyhow" +version = "1.0.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" + [[package]] name = "arrayref" version = "0.3.6" @@ -250,6 +256,28 @@ dependencies = [ "zeroize", ] +[[package]] +name = "cw-cyber-airdrop" +version = "0.0.1" +dependencies = [ + "anyhow", + "base64", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.10.3", + "cw-utils", + "cw0", + "cw2 0.11.1", + "cw20", + "hex", + "schemars", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", +] + [[package]] name = "cw-cyber-passport" version = "0.0.1" @@ -310,6 +338,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cw0" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae676b6cced78a3d38ad4b01ab4ed66fc78ac191c3c0d6bfd5372cb2efd473b" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", + "thiserror", +] + [[package]] name = "cw2" version = "0.10.3" @@ -334,6 +374,18 @@ dependencies = [ "serde", ] +[[package]] +name = "cw20" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9671d7edef5608acaf5b2f1e473ee3f501eced2cd4f7392e2106c8cf02ba0720" +dependencies = [ + "cosmwasm-std", + "cw-utils", + "schemars", + "serde", +] + [[package]] name = "cw721" version = "0.11.0" diff --git a/Cargo.toml b/Cargo.toml index 1b53caf..835de4f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["contracts/cw-cyber-passport"] +members = ["contracts/cw-cyber-passport", "contracts/cw-cyber-airdrop"] [profile.release.package.cw721-marketplace] codegen-units = 1 diff --git a/contracts/cw-cyber-airdrop/schema/execute_msg.json b/contracts/cw-cyber-airdrop/schema/execute_msg.json index 282a1be..838b129 100644 --- a/contracts/cw-cyber-airdrop/schema/execute_msg.json +++ b/contracts/cw-cyber-airdrop/schema/execute_msg.json @@ -95,17 +95,20 @@ "claim": { "type": "object", "required": [ - "claim_amount", - "claim_msg", - "proof", - "signature" + "gift_amount", + "gift_claiming_address", + "nickname", + "proof" ], "properties": { - "claim_amount": { + "gift_amount": { "$ref": "#/definitions/Uint128" }, - "claim_msg": { - "$ref": "#/definitions/ClaimMsg" + "gift_claiming_address": { + "type": "string" + }, + "nickname": { + "type": "string" }, "proof": { "description": "Proof is hex-encoded merkle proof.", @@ -113,9 +116,6 @@ "items": { "type": "string" } - }, - "signature": { - "$ref": "#/definitions/Binary" } } } @@ -129,59 +129,21 @@ ], "properties": { "release": { - "type": "object" + "type": "object", + "required": [ + "gift_address" + ], + "properties": { + "gift_address": { + "type": "string" + } + } } }, "additionalProperties": false } ], "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec", - "type": "string" - }, - "ClaimMsg": { - "type": "object", - "required": [ - "avatar_cid", - "gift_claiming_address", - "gift_claiming_address_type", - "nickname", - "relay_reward", - "target_address" - ], - "properties": { - "avatar_cid": { - "type": "string" - }, - "gift_claiming_address": { - "type": "string" - }, - "gift_claiming_address_type": { - "$ref": "#/definitions/ClaimerType" - }, - "nickname": { - "type": "string" - }, - "relay_reward": { - "$ref": "#/definitions/Decimal" - }, - "target_address": { - "type": "string" - } - } - }, - "ClaimerType": { - "type": "string", - "enum": [ - "ethereum", - "cosmos" - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, "Uint128": { "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", "type": "string" diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs new file mode 100644 index 0000000..4b3ac4a --- /dev/null +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -0,0 +1,104 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{has_coins, to_binary, Binary, Coin, Decimal, Deps, DepsMut, Env, Response, StdResult, Uint64, MessageInfo}; +use cw2::{get_contract_version, set_contract_version}; + +use crate::error::ContractError; +use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use crate::state::{Config, CONFIG}; +use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target}; +use crate::query::{query_config, query_is_claimed, query_merkle_root, query_release_state}; + +// Version info, for migration info +const CONTRACT_NAME: &str = "crates.io:cw-cyber-gift"; +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + let owner = msg + .owner + .map_or(Ok(info.sender), |o| deps.api.addr_validate(&o))?; + + if !has_coins( + &info.funds, + &Coin { + denom: msg.allowed_native.clone(), + amount: msg.initial_balance, + }, + ) { + return Err(ContractError::InvalidInput {}); + } + + let config = Config { + owner: Some(owner), + passport_addr: deps.api.addr_validate(&msg.passport)?, + target_claim: msg.target_claim, + allowed_native: msg.allowed_native, + current_balance: msg.initial_balance, + initial_balance: msg.initial_balance, + coefficient_up: msg.coefficient_up, + coefficient_down: msg.coefficient_down, + coefficient: Decimal::from_ratio(msg.coefficient, 1u128), + claims: Uint64::zero(), + releases: Uint64::zero(), + }; + CONFIG.save(deps.storage, &config)?; + + Ok(Response::default()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::UpdateOwner { new_owner } => execute_update_owner(deps, env, info, new_owner), + ExecuteMsg::UpdatePassportAddr { new_passport_addr: new_passport } => { + execute_update_passport(deps, env, info, new_passport) + } + ExecuteMsg::UpdateTarget { new_target } => { + execute_update_target(deps, env, info, new_target) + } + ExecuteMsg::RegisterMerkleRoot { merkle_root } => { + execute_register_merkle_root(deps, env, info, merkle_root) + } + ExecuteMsg::Claim { + nickname, + gift_claiming_address, + gift_amount, + proof, + } => execute_claim(deps, env, info, nickname, gift_claiming_address, gift_amount, proof), + ExecuteMsg::Release { gift_address } => execute_release(deps, env, info, gift_address), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Config {} => to_binary(&query_config(deps)?), + QueryMsg::MerkleRoot {} => to_binary(&query_merkle_root(deps)?), + QueryMsg::IsClaimed { address } => to_binary(&query_is_claimed(deps, address)?), + QueryMsg::ReleaseState { address } => to_binary(&query_release_state(deps, address)?), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { + let version = get_contract_version(deps.storage)?; + if version.contract != CONTRACT_NAME { + return Err(ContractError::CannotMigrate { + previous_contract: version.contract, + }); + } + Ok(Response::default()) +} diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 1630a4e..04f8a78 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -1,95 +1,15 @@ -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{ - attr, has_coins, to_binary, BankMsg, Binary, Coin, Decimal, Deps, DepsMut, Env, MessageInfo, - Response, StdResult, Uint128, Uint64, -}; -use cw2::{get_contract_version, set_contract_version}; +use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, Uint128, Uint64}; use crate::error::ContractError; -use crate::helpers; -use crate::helpers::{update_coefficient, verify_cosmos, verify_merkle_proof}; -use crate::msg::{ - ClaimMsg, ClaimerType, ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, - MerkleRootResponse, MigrateMsg, QueryMsg, ReleaseStateResponse, -}; -use crate::state::{Config, ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; -use cw_utils::{Duration, Expiration, Expiration::Never, DAY}; -use std::ops::{Add, Mul, Sub}; - -// Version info, for migration info -const CONTRACT_NAME: &str = "crates.io:cw-cyber-gift"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); -const RELEASE_STAGES: u64 = 9; +use crate::helpers::{update_coefficient, verify_merkle_proof}; +use crate::msg::{PassportSignedQuery, PassportSignedResponse, PassportAddressQuery, PassportAddressResponse}; +use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; +use cw_utils::{Expiration, DAY}; +use std::ops::{Add, Mul}; -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - _env: Env, - info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - let owner = msg - .owner - .map_or(Ok(info.sender), |o| deps.api.addr_validate(&o))?; - - if !has_coins( - &info.funds, - &Coin { - denom: msg.allowed_native.clone(), - amount: msg.initial_balance, - }, - ) { - return Err(ContractError::InvalidInput {}); - } +const RELEASE_STAGES: u64 = 9; - let config = Config { - owner: Some(owner), - passport_addr: deps.api.addr_validate(&msg.passport)?, - target_claim: msg.target_claim, - allowed_native: msg.allowed_native, - current_balance: msg.initial_balance, - initial_balance: msg.initial_balance, - coefficient_up: msg.coefficient_up, - coefficient_down: msg.coefficient_down, - coefficient: Decimal::from_ratio(msg.coefficient, 1u128), - claims: Uint64::zero(), - releases: Uint64::zero(), - }; - CONFIG.save(deps.storage, &config)?; - Ok(Response::default()) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::UpdateOwner { new_owner } => execute_update_owner(deps, env, info, new_owner), - ExecuteMsg::UpdatePassportAddr { new_passport_addr: new_passport } => { - execute_update_passport(deps, env, info, new_passport) - } - ExecuteMsg::UpdateTarget { new_target } => { - execute_update_target(deps, env, info, new_target) - } - ExecuteMsg::RegisterMerkleRoot { merkle_root } => { - execute_register_merkle_root(deps, env, info, merkle_root) - } - ExecuteMsg::Claim { - claim_msg, - signature, - claim_amount, - proof, - } => execute_claim(deps, env, info, claim_msg, signature, claim_amount, proof), - ExecuteMsg::Release {} => execute_release(deps, env, info), - } -} pub fn execute_update_owner( deps: DepsMut, @@ -193,18 +113,18 @@ pub fn execute_claim( deps: DepsMut, _env: Env, info: MessageInfo, - claim_msg: ClaimMsg, - signature: Binary, - amount: Uint128, + nickname: String, + gift_claiming_address: String, + gift_amount: Uint128, proof: Vec, ) -> Result { - let claimed = CLAIM.may_load(deps.storage, claim_msg.target_address.clone())?; + let claimed = CLAIM.may_load(deps.storage, gift_claiming_address.clone())?; if claimed.is_some() { return Err(ContractError::Claimed {}); } let mut config = CONFIG.load(deps.storage)?; - let claim_amount = amount * config.coefficient; + let claim_amount = gift_amount * config.coefficient; // TODO: delete after debug println!("{:?}", "execute_claim"); @@ -215,21 +135,41 @@ pub fn execute_claim( return Err(ContractError::GiftIsOver {}); } - is_eligible(deps.as_ref(), &claim_msg, signature)?; + // is_eligible(deps.as_ref(), &claim_msg, signature)?; + + let res:PassportSignedResponse = deps.querier.query_wasm_smart( + config.clone().passport_addr, + &PassportSignedQuery{ + nickname: nickname.clone(), + address: gift_claiming_address.clone() + } + )?; + + if res.signed == false { + return Err(ContractError::IsNotEligible { msg: "passport isn't assigned".to_string() }); + } verify_merkle_proof( &deps, &info, - claim_msg.clone().gift_claiming_address, - amount, + gift_claiming_address.clone(), + gift_amount.clone(), proof, )?; - CLAIM.save(deps.storage, claim_msg.target_address.clone(), &true)?; + CLAIM.save(deps.storage, gift_claiming_address.clone(), &true)?; update_coefficient(deps.storage, claim_amount, &mut config)?; + let res:PassportAddressResponse = deps.querier.query_wasm_smart( + config.passport_addr, + &PassportAddressQuery{ + nickname: nickname.clone(), + } + )?; + let release_state = ReleaseState { + address: Addr::unchecked(res.clone().address), balance_claim: claim_amount.checked_sub(Uint128::new(CLAIM_BOUNTY))?, stage: Uint64::zero(), stage_expiration: Expiration::Never {}, @@ -237,7 +177,7 @@ pub fn execute_claim( RELEASE.save( deps.storage, - claim_msg.target_address.clone(), + gift_claiming_address.clone(), &release_state, )?; @@ -248,7 +188,7 @@ pub fn execute_claim( let res = Response::new() .add_message(BankMsg::Send { - to_address: claim_msg.clone().target_address, + to_address: res.address.clone(), amount: vec![Coin { denom: config.allowed_native, amount: Uint128::new(CLAIM_BOUNTY), @@ -256,12 +196,8 @@ pub fn execute_claim( }) .add_attributes(vec![ attr("action", "claim"), - attr("original", claim_msg.clone().gift_claiming_address), - attr( - "type", - claim_msg.clone().gift_claiming_address_type.to_string(), - ), - attr("target", claim_msg.clone().target_address), + attr("original", gift_claiming_address), + attr("target", res.address), attr("amount", claim_amount), ]); Ok(res) @@ -271,27 +207,29 @@ pub fn execute_release( deps: DepsMut, env: Env, info: MessageInfo, + gift_address: String ) -> Result { - let claimed = CLAIM.may_load(deps.storage, info.clone().sender.into_string())?; + let claimed = CLAIM.may_load(deps.storage, gift_address.clone())?; if claimed.is_none() { return Err(ContractError::NotClaimed {}); } - let mut config = CONFIG.load(deps.storage)?; + let config = CONFIG.load(deps.storage)?; if config.claims < config.target_claim { return Err(ContractError::NotActivated {}); } - let mut release_state = RELEASE.load(deps.storage, info.clone().sender.into_string())?; + let mut release_state = RELEASE.load(deps.storage, gift_address.clone())?; - let amount: Uint128; - // let expiration:Expiration; - // let stage:u64; + if release_state.address != info.sender { + return Err(ContractError::Unauthorized {}); + } if release_state.balance_claim.is_zero() { return Err(ContractError::GiftReleased {}); } + let amount: Uint128; if release_state.stage.is_zero() { amount = release_state.balance_claim.mul(Decimal::percent(10)); release_state.stage_expiration = DAY.after(&env.block); @@ -318,7 +256,7 @@ pub fn execute_release( RELEASE.save( deps.storage, - info.clone().sender.to_string(), + gift_address.clone(), &release_state, )?; @@ -329,7 +267,7 @@ pub fn execute_release( let res = Response::new() .add_message(BankMsg::Send { - to_address: info.sender.to_string(), + to_address: release_state.clone().address.into(), amount: vec![Coin { denom: config.allowed_native, amount, @@ -337,88 +275,10 @@ pub fn execute_release( }) .add_attributes(vec![ attr("action", "release"), - attr("address", info.sender), + attr("address", release_state.clone().address.to_string()), + attr("gift_address", gift_address), attr("stage", release_state.stage.to_string()), attr("amount", amount), ]); Ok(res) } - -fn is_eligible(deps: Deps, claim_msg: &ClaimMsg, signature: Binary) -> Result { - match claim_msg.gift_claiming_address_type { - ClaimerType::Ethereum => helpers::verify_ethereum(deps, &claim_msg, signature), - ClaimerType::Cosmos => verify_cosmos(deps, &claim_msg, signature), - _ => Err(ContractError::IsNotEligible { - msg: "address prefix not allowed".to_string(), - }), - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Config {} => to_binary(&query_config(deps)?), - QueryMsg::MerkleRoot {} => to_binary(&query_merkle_root(deps)?), - QueryMsg::IsClaimed { address } => to_binary(&query_is_claimed(deps, address)?), - QueryMsg::ReleaseState { address } => to_binary(&query_release_state(deps, address)?), - } -} - -pub fn query_config(deps: Deps) -> StdResult { - let cfg = CONFIG.load(deps.storage)?; - Ok(ConfigResponse { - owner: cfg.owner.map(|o| o.to_string()), - passport: cfg.passport_addr.to_string(), - target_claim: cfg.target_claim, - allowed_native: cfg.allowed_native, - current_balance: cfg.current_balance, - initial_balance: cfg.initial_balance, - coefficient_up: cfg.coefficient_up, - coefficient_down: cfg.coefficient_down, - coefficient: cfg.coefficient, - claims: cfg.claims, - releases: cfg.releases, - }) -} - -pub fn query_merkle_root(deps: Deps) -> StdResult { - let merkle_root = MERKLE_ROOT.load(deps.storage)?; - let resp = MerkleRootResponse { merkle_root }; - - Ok(resp) -} - -pub fn query_is_claimed(deps: Deps, address: String) -> StdResult { - let is_claimed = CLAIM.may_load(deps.storage, address)?.unwrap_or(false); - let resp = IsClaimedResponse { is_claimed }; - - Ok(resp) -} - -pub fn query_release_state(deps: Deps, address: String) -> StdResult { - let release_state = RELEASE - .may_load(deps.storage, address)? - .unwrap_or(ReleaseState { - balance_claim: Default::default(), - stage: Uint64::zero(), - stage_expiration: Default::default(), - }); - let resp = ReleaseStateResponse { - balance_claim: release_state.balance_claim, - stage: release_state.stage, - stage_expiration: release_state.stage_expiration, - }; - - Ok(resp) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - let version = get_contract_version(deps.storage)?; - if version.contract != CONTRACT_NAME { - return Err(ContractError::CannotMigrate { - previous_contract: version.contract, - }); - } - Ok(Response::default()) -} diff --git a/contracts/cw-cyber-airdrop/src/helpers.rs b/contracts/cw-cyber-airdrop/src/helpers.rs index 02532b8..83ffa2a 100644 --- a/contracts/cw-cyber-airdrop/src/helpers.rs +++ b/contracts/cw-cyber-airdrop/src/helpers.rs @@ -1,16 +1,10 @@ -use crate::msg::ClaimMsg; use crate::state::{Config, CONFIG, MERKLE_ROOT}; use crate::ContractError; -use anyhow::Result; use cosmwasm_std::{ - from_binary, to_vec, Binary, Decimal, Deps, DepsMut, MessageInfo, StdError, StdResult, Storage, + Decimal, DepsMut, MessageInfo, StdError, StdResult, Storage, Uint128, VerificationError, }; -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; -use serde_json::to_string; -use sha2::{Digest, Sha256}; -use sha3::Keccak256; +use sha2::Digest; use std::convert::TryInto; use std::ops::{Add, Mul, Sub}; @@ -81,131 +75,3 @@ pub fn verify_merkle_proof( } Ok(true) } - -pub fn verify_ethereum( - deps: Deps, - claim_msg: &ClaimMsg, - signature: Binary, -) -> Result { - let mut hasher = Keccak256::new(); - - let msg = to_string(claim_msg).map_err(|_| ContractError::InvalidInput {})?; - - hasher.update(format!("\x19Ethereum Signed Message:\n{}", msg.len())); - hasher.update(msg); - let hash = hasher.finalize(); - let sig = decode_signature(&signature.clone().to_string())?; - - // Decompose signature - let (v, rs) = match sig.split_last() { - Some(pair) => pair, - None => { - return Err(ContractError::IsNotEligible { - msg: "Signature must not be empty".to_string(), - }) - } - }; - let recovery = get_recovery_param(*v)?; - - // Verification - let calculated_pubkey = deps.api.secp256k1_recover_pubkey(&hash, rs, recovery)?; - let calculated_address = ethereum_address_raw(&calculated_pubkey)?; - let signer_address = decode_address(claim_msg.gift_claiming_address.clone().as_str())?; - if signer_address != calculated_address { - return Err(ContractError::IsNotEligible { - msg: "signer address is not calculated addr".to_string(), - }); - } - deps.api - .secp256k1_verify(&hash, rs, &calculated_pubkey) - .map_err(|err| ContractError::IsNotEligible { - msg: err.to_string(), - }) -} - -fn get_recovery_param(v: u8) -> StdResult { - match v { - 27 => Ok(0), - 28 => Ok(1), - _ => Err(StdError::generic_err("Values of v other than 27 and 28 not supported. Replay protection (EIP-155) cannot be used here.")) - } -} - -/// Returns a raw 20 byte Ethereum address -fn ethereum_address_raw(pubkey: &[u8]) -> StdResult<[u8; 20]> { - let (tag, data) = match pubkey.split_first() { - Some(pair) => pair, - None => return Err(StdError::generic_err("Public key must not be empty")), - }; - if *tag != 0x04 { - return Err(StdError::generic_err("Public key must start with 0x04")); - } - if data.len() != 64 { - return Err(StdError::generic_err("Public key must be 65 bytes long")); - } - - let hash = Keccak256::digest(data); - Ok(hash[hash.len() - 20..].try_into().unwrap()) -} - -/// Returns a raw 20 byte Ethereum address from hex -pub fn decode_address(input: &str) -> StdResult<[u8; 20]> { - if input.len() != 42 { - return Err(StdError::generic_err( - "Ethereum address must be 42 characters long", - )); - } - if !input.starts_with("0x") { - return Err(StdError::generic_err("Ethereum address must start wit 0x")); - } - let data = hex::decode(&input[2..]).map_err(|_| StdError::generic_err("hex decoding error"))?; - Ok(data.try_into().unwrap()) -} - -/// Returns a raw 65 byte Ethereum signature from hex -pub fn decode_signature(input: &str) -> StdResult<[u8; 65]> { - if input.len() != 132 { - return Err(StdError::generic_err( - "Ethereum signature must be 132 characters long", - )); - } - if !input.starts_with("0x") { - return Err(StdError::generic_err( - "Ethereum signature must start wit 0x", - )); - } - let data = hex::decode(&input[2..]).map_err(|_| StdError::generic_err("hex decoding error"))?; - Ok(data.try_into().unwrap()) -} - -pub fn verify_cosmos( - deps: Deps, - claim_msg: &ClaimMsg, - signature: Binary, -) -> Result { - let msg_raw = to_vec(claim_msg)?; - let hash = Sha256::digest(&msg_raw); - let sig: CosmosSignature = from_binary(&signature).unwrap(); - - let result = deps - .api - .secp256k1_verify( - hash.as_ref(), - sig.signature.as_slice(), - sig.pub_key.as_slice(), - ) - .map_err(|err| ContractError::IsNotEligible { - msg: err.to_string(), - }); - return result; -} - -/* -{"pub_key": "Aoz4+N8ckpDiz4oOKKKVERJGeS49nOgGrXw0s0dkymDr","signature":"CvMkqkQHVPV3DTyVErth16OdTjAwqQD6t+r9ImSpdwUZFin+UPeGSfH9hhuAmqYAp4CffhNNSEisdfzwwvlN/w=="} - */ - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct CosmosSignature { - pub_key: Binary, - signature: Binary, -} diff --git a/contracts/cw-cyber-airdrop/src/lib.rs b/contracts/cw-cyber-airdrop/src/lib.rs index bac79b1..c333bc9 100644 --- a/contracts/cw-cyber-airdrop/src/lib.rs +++ b/contracts/cw-cyber-airdrop/src/lib.rs @@ -1,8 +1,10 @@ -mod error; +pub mod contract; +pub mod error; pub mod execute; -mod helpers; +pub mod helpers; pub mod msg; pub mod state; +pub mod query; mod tests; pub use crate::error::ContractError; diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index 7e88259..9c86048 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -1,7 +1,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use cosmwasm_std::{Binary, Decimal, Uint128, Uint64}; +use cosmwasm_std::{Decimal, Uint128, Uint64}; use cw_utils::Expiration; #[derive(Serialize, Deserialize, JsonSchema)] @@ -38,48 +38,13 @@ pub enum ExecuteMsg { }, /// Claim does not check if contract has enough funds, owner must ensure it. Claim { - claim_msg: ClaimMsg, - signature: Binary, - claim_amount: Uint128, + nickname: String, + gift_claiming_address: String, + gift_amount: Uint128, /// Proof is hex-encoded merkle proof. proof: Vec, }, - Release {}, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct ClaimMsg { - pub nickname: String, - pub avatar_cid: String, - pub gift_claiming_address_type: ClaimerType, - pub gift_claiming_address: String, - pub target_address: String, - pub relay_reward: Decimal, -} - -/* -impl ToString for ClaimMsg { - fn to_string(&self) -> String { - format!("\{{}\}", self.target_address, ) - } -} - - */ - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum ClaimerType { - Ethereum, - Cosmos, -} - -impl ToString for ClaimerType { - fn to_string(&self) -> String { - match self { - ClaimerType::Ethereum => String::from("ethereum"), - ClaimerType::Cosmos => String::from("cosmos"), - } - } + Release { gift_address: String}, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] @@ -120,10 +85,33 @@ pub struct IsClaimedResponse { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct ReleaseStateResponse { + pub address: String, pub balance_claim: Uint128, pub stage: Uint64, pub stage_expiration: Expiration, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct PassportSignedQuery { + pub nickname: String, + pub address: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct PassportSignedResponse { + pub signed: bool, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct PassportAddressQuery { + pub nickname: String, +} + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub struct PassportAddressResponse { + pub address: String, +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct MigrateMsg {} diff --git a/contracts/cw-cyber-airdrop/src/query.rs b/contracts/cw-cyber-airdrop/src/query.rs new file mode 100644 index 0000000..0024861 --- /dev/null +++ b/contracts/cw-cyber-airdrop/src/query.rs @@ -0,0 +1,45 @@ +use cosmwasm_std::{Deps, StdResult}; +use crate::msg::{ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStateResponse}; +use crate::state::{CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; + +pub fn query_config(deps: Deps) -> StdResult { + let cfg = CONFIG.load(deps.storage)?; + Ok(ConfigResponse { + owner: cfg.owner.map(|o| o.to_string()), + passport: cfg.passport_addr.to_string(), + target_claim: cfg.target_claim, + allowed_native: cfg.allowed_native, + current_balance: cfg.current_balance, + initial_balance: cfg.initial_balance, + coefficient_up: cfg.coefficient_up, + coefficient_down: cfg.coefficient_down, + coefficient: cfg.coefficient, + claims: cfg.claims, + releases: cfg.releases, + }) +} + +pub fn query_merkle_root(deps: Deps) -> StdResult { + let merkle_root = MERKLE_ROOT.load(deps.storage)?; + let resp = MerkleRootResponse { merkle_root }; + + Ok(resp) +} + +pub fn query_is_claimed(deps: Deps, address: String) -> StdResult { + let is_claimed = CLAIM.may_load(deps.storage, address)?.unwrap_or(false); + let resp = IsClaimedResponse { is_claimed }; + + Ok(resp) +} + +pub fn query_release_state(deps: Deps, address: String) -> StdResult { + let release_state = RELEASE.load(deps.storage, address)?; + let resp = ReleaseStateResponse { + address: release_state.address.into(), + balance_claim: release_state.balance_claim, + stage: release_state.stage, + stage_expiration: release_state.stage_expiration, + }; + Ok(resp) +} diff --git a/contracts/cw-cyber-airdrop/src/state.rs b/contracts/cw-cyber-airdrop/src/state.rs index 4e8b462..90de97d 100644 --- a/contracts/cw-cyber-airdrop/src/state.rs +++ b/contracts/cw-cyber-airdrop/src/state.rs @@ -27,6 +27,7 @@ pub struct Config { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct ReleaseState { + pub address: Addr, pub balance_claim: Uint128, pub stage: Uint64, pub stage_expiration: Expiration, diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index b0cc35b..2922b08 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -191,7 +191,7 @@ pub fn execute_update_name( // nickname <-> address // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate messages? + // TODO split in separate submessages? let links= vec![ Link{ from: address_particle.clone().into(), @@ -248,7 +248,7 @@ pub fn execute_update_avatar( // nickname <-> address // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate messages? + // TODO split in separate submessages? let links= vec![ Link{ from: address_particle.clone().into(), @@ -336,7 +336,7 @@ pub fn execute_proof_address( // prooved_address <-> address // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate messages? + // TODO split in separate submessages? let links= vec![ Link{ from: address_particle.clone().into(), @@ -467,7 +467,7 @@ pub fn execute_transfer_nft( // nickname <-> address <-> avatar // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate messages? + // TODO split in separate submessages? let links= vec![ Link{ from: address_particle.clone().into(), @@ -507,7 +507,20 @@ pub fn execute_send_nft( ) -> Result { let cw721_contract = PassportContract::default(); - // TODO remove proved addresses + let mut nickname = String::default(); + let mut avatar = String::default(); + cw721_contract + .tokens + .update(deps.storage, &token_id.clone(), |token| match token { + Some(mut token_info) => { + nickname = token_info.clone().extension.nickname; + avatar = token_info.clone().extension.avatar; + token_info.extension.addresses = Some(vec![]); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + // TODO think about contract as passport holder (cyberlinks/nickname?) let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; @@ -522,9 +535,6 @@ pub fn execute_burn( ) -> Result { let cw721_contract = PassportContract::default(); - - // TODO link to cyberhole - let token_info = cw721_contract.tokens.load(deps.storage, &token_id.clone())?; if !NICKNAMES.has(deps.storage, &token_info.clone().extension.nickname) { @@ -537,7 +547,7 @@ pub fn execute_burn( // avatar <-> cyberhole <-> nickname // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate messages? + // TODO split in separate submessages? let links= vec![ Link{ from: cyberhole_particle.clone().into(), diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index f1ee2a6..11f6ef1 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -273,6 +273,12 @@ pub struct AddressResponse { pub address: String, } +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub struct SignatureResponse { + pub signed: bool, +} + #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] #[serde(rename_all = "snake_case")] pub struct MigrateMsg { diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index a07f6c4..5461b18 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -1,6 +1,6 @@ use cosmwasm_std::{Deps, StdResult}; use cw721_base::state::TokenInfo; -use crate::msg::{ConfigResponse, PortidResponse, AddressResponse}; +use crate::msg::{ConfigResponse, PortidResponse, AddressResponse, SignatureResponse}; use crate::state::{CONFIG, NICKNAMES, PassportContract, PassportMetadata, PORTID}; pub fn query_config(deps: Deps) -> StdResult { @@ -27,11 +27,28 @@ pub fn query_passport_by_nickname(deps: Deps, nickname: String) -> StdResult StdResult { - let address_portid = NICKNAMES.may_load(deps.storage, &nickname)?; - Ok(AddressResponse { address: address_portid.unwrap().address.into() }) + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + Ok(AddressResponse { address: address_portid.address.into() }) } pub fn query_portid(deps: Deps) -> StdResult { let portid = PORTID.load(deps.storage)?; Ok(PortidResponse { portid: portid.into() }) } + +pub fn query_nickname_address_signed( + deps: Deps, + nickname: String, + address: String +) -> StdResult { + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let cw721_contract = PassportContract::default(); + let token_info = cw721_contract + .tokens + .load(deps.storage, address_portid.portid.as_str())?; + let mut result = false; + if token_info.clone().extension.addresses.is_some() { + result = token_info.clone().extension.addresses.unwrap().iter().any(|i| i.as_ref() == address); + } + Ok(SignatureResponse { signed: result }) +} From d84621018235dd065ae992869e72c5ec069583b4 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 3 Feb 2022 14:51:03 +0800 Subject: [PATCH 05/69] Deleted namespace contract --- contracts/cw721-namespace/.cargo/config | 5 - contracts/cw721-namespace/Cargo.toml | 34 -- contracts/cw721-namespace/README.md | 1 - contracts/cw721-namespace/build.sh | 4 - contracts/cw721-namespace/examples/schema.rs | 41 -- .../schema/all_nft_info_response.json | 166 -------- .../schema/approval_response.json | 94 ----- .../schema/approvals_response.json | 97 ----- .../schema/contract_info_response.json | 17 - .../cw721-namespace/schema/execute_msg.json | 397 ------------------ .../schema/instantiate_msg.json | 24 -- .../schema/minter_response.json | 14 - .../schema/nft_info_response.json | 42 -- .../schema/num_tokens_response.json | 15 - .../schema/operators_response.json | 97 ----- .../schema/owner_of_response.json | 103 ----- .../cw721-namespace/schema/query_msg.json | 284 ------------- .../schema/tokens_response.json | 17 - contracts/cw721-namespace/src/contract.rs | 132 ------ contracts/cw721-namespace/src/error.rs | 33 -- contracts/cw721-namespace/src/execute.rs | 100 ----- contracts/cw721-namespace/src/lib.rs | 6 - contracts/cw721-namespace/src/msg.rs | 240 ----------- contracts/cw721-namespace/src/query.rs | 7 - contracts/cw721-namespace/src/state.rs | 20 - 25 files changed, 1990 deletions(-) delete mode 100644 contracts/cw721-namespace/.cargo/config delete mode 100644 contracts/cw721-namespace/Cargo.toml delete mode 100644 contracts/cw721-namespace/README.md delete mode 100644 contracts/cw721-namespace/build.sh delete mode 100644 contracts/cw721-namespace/examples/schema.rs delete mode 100644 contracts/cw721-namespace/schema/all_nft_info_response.json delete mode 100644 contracts/cw721-namespace/schema/approval_response.json delete mode 100644 contracts/cw721-namespace/schema/approvals_response.json delete mode 100644 contracts/cw721-namespace/schema/contract_info_response.json delete mode 100644 contracts/cw721-namespace/schema/execute_msg.json delete mode 100644 contracts/cw721-namespace/schema/instantiate_msg.json delete mode 100644 contracts/cw721-namespace/schema/minter_response.json delete mode 100644 contracts/cw721-namespace/schema/nft_info_response.json delete mode 100644 contracts/cw721-namespace/schema/num_tokens_response.json delete mode 100644 contracts/cw721-namespace/schema/operators_response.json delete mode 100644 contracts/cw721-namespace/schema/owner_of_response.json delete mode 100644 contracts/cw721-namespace/schema/query_msg.json delete mode 100644 contracts/cw721-namespace/schema/tokens_response.json delete mode 100644 contracts/cw721-namespace/src/contract.rs delete mode 100644 contracts/cw721-namespace/src/error.rs delete mode 100644 contracts/cw721-namespace/src/execute.rs delete mode 100644 contracts/cw721-namespace/src/lib.rs delete mode 100644 contracts/cw721-namespace/src/msg.rs delete mode 100644 contracts/cw721-namespace/src/query.rs delete mode 100644 contracts/cw721-namespace/src/state.rs diff --git a/contracts/cw721-namespace/.cargo/config b/contracts/cw721-namespace/.cargo/config deleted file mode 100644 index 7d1a066..0000000 --- a/contracts/cw721-namespace/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -schema = "run --example schema" diff --git a/contracts/cw721-namespace/Cargo.toml b/contracts/cw721-namespace/Cargo.toml deleted file mode 100644 index a0a9956..0000000 --- a/contracts/cw721-namespace/Cargo.toml +++ /dev/null @@ -1,34 +0,0 @@ -[package] -name = "cw721-namespace" -version = "0.0.1" -authors = ["CyberHead"] -edition = "2018" - -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "artifacts/*", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all instantiate/execute/query exports -library = [] - -[dependencies] -cw0 = { version = "0.10" } -cw2 = { version = "0.10" } -cw721 = { version = "0.11" } -cw721-base = { version = "0.11", features = ["library"] } -cw-storage-plus = { version = "0.10" } -cosmwasm-std = { version = "1.0.0-beta" } -schemars = "0.8.6" -serde = { version = "1.0.130", default-features = false, features = ["derive"] } -thiserror = { version = "1.0.30" } - -[dev-dependencies] -cosmwasm-schema = { version = "1.0.0-beta" } diff --git a/contracts/cw721-namespace/README.md b/contracts/cw721-namespace/README.md deleted file mode 100644 index 4af91c7..0000000 --- a/contracts/cw721-namespace/README.md +++ /dev/null @@ -1 +0,0 @@ -# cw-namespace diff --git a/contracts/cw721-namespace/build.sh b/contracts/cw721-namespace/build.sh deleted file mode 100644 index f3b96c0..0000000 --- a/contracts/cw721-namespace/build.sh +++ /dev/null @@ -1,4 +0,0 @@ -docker run --rm -v "$(pwd)":/code \ - --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ - --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ - cosmwasm/rust-optimizer:0.12.4 diff --git a/contracts/cw721-namespace/examples/schema.rs b/contracts/cw721-namespace/examples/schema.rs deleted file mode 100644 index 18f8215..0000000 --- a/contracts/cw721-namespace/examples/schema.rs +++ /dev/null @@ -1,41 +0,0 @@ -use std::env::current_dir; -use std::fs::create_dir_all; - -use cosmwasm_schema::{export_schema, export_schema_with_title, remove_schemas, schema_for}; - -use cw721::{ - AllNftInfoResponse, ApprovalResponse, ApprovalsResponse, ContractInfoResponse, NftInfoResponse, - NumTokensResponse, OperatorsResponse, OwnerOfResponse, TokensResponse, -}; -use cw721_base::{InstantiateMsg, MinterResponse}; -use cw721_namespace::msg::{ExecuteMsg, QueryMsg}; -use cw721_namespace::state::Extension; - -fn main() { - let mut out_dir = current_dir().unwrap(); - out_dir.push("schema"); - create_dir_all(&out_dir).unwrap(); - remove_schemas(&out_dir).unwrap(); - - export_schema(&schema_for!(InstantiateMsg), &out_dir); - export_schema_with_title(&schema_for!(ExecuteMsg), &out_dir, "ExecuteMsg"); - export_schema(&schema_for!(QueryMsg), &out_dir); - export_schema_with_title( - &schema_for!(AllNftInfoResponse), - &out_dir, - "AllNftInfoResponse", - ); - export_schema(&schema_for!(ApprovalResponse), &out_dir); - export_schema(&schema_for!(ApprovalsResponse), &out_dir); - export_schema(&schema_for!(OperatorsResponse), &out_dir); - export_schema(&schema_for!(ContractInfoResponse), &out_dir); - export_schema(&schema_for!(MinterResponse), &out_dir); - export_schema_with_title( - &schema_for!(NftInfoResponse), - &out_dir, - "NftInfoResponse", - ); - export_schema(&schema_for!(NumTokensResponse), &out_dir); - export_schema(&schema_for!(OwnerOfResponse), &out_dir); - export_schema(&schema_for!(TokensResponse), &out_dir); -} diff --git a/contracts/cw721-namespace/schema/all_nft_info_response.json b/contracts/cw721-namespace/schema/all_nft_info_response.json deleted file mode 100644 index cee08b3..0000000 --- a/contracts/cw721-namespace/schema/all_nft_info_response.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllNftInfoResponse", - "type": "object", - "required": [ - "access", - "info" - ], - "properties": { - "access": { - "description": "Who can transfer the token", - "allOf": [ - { - "$ref": "#/definitions/OwnerOfResponse" - } - ] - }, - "info": { - "description": "Data on the token itself,", - "allOf": [ - { - "$ref": "#/definitions/NftInfoResponse_for_Metadata" - } - ] - } - }, - "definitions": { - "Approval": { - "type": "object", - "required": [ - "expires", - "spender" - ], - "properties": { - "expires": { - "description": "When the Approval expires (maybe Expiration::never)", - "allOf": [ - { - "$ref": "#/definitions/Expiration" - } - ] - }, - "spender": { - "description": "Account that can transfer/send the token", - "type": "string" - } - } - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object" - } - }, - "additionalProperties": false - } - ] - }, - "Metadata": { - "type": "object", - "required": [ - "parent", - "target" - ], - "properties": { - "parent": { - "type": "string" - }, - "target": { - "type": "string" - } - } - }, - "NftInfoResponse_for_Metadata": { - "type": "object", - "required": [ - "extension" - ], - "properties": { - "extension": { - "description": "You can add any custom metadata here when you extend cw721-base", - "allOf": [ - { - "$ref": "#/definitions/Metadata" - } - ] - }, - "token_uri": { - "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", - "type": [ - "string", - "null" - ] - } - } - }, - "OwnerOfResponse": { - "type": "object", - "required": [ - "approvals", - "owner" - ], - "properties": { - "approvals": { - "description": "If set this address is approved to transfer/send the token as well", - "type": "array", - "items": { - "$ref": "#/definitions/Approval" - } - }, - "owner": { - "description": "Owner of the token", - "type": "string" - } - } - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/approval_response.json b/contracts/cw721-namespace/schema/approval_response.json deleted file mode 100644 index 4f45b42..0000000 --- a/contracts/cw721-namespace/schema/approval_response.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ApprovalResponse", - "type": "object", - "required": [ - "approval" - ], - "properties": { - "approval": { - "$ref": "#/definitions/Approval" - } - }, - "definitions": { - "Approval": { - "type": "object", - "required": [ - "expires", - "spender" - ], - "properties": { - "expires": { - "description": "When the Approval expires (maybe Expiration::never)", - "allOf": [ - { - "$ref": "#/definitions/Expiration" - } - ] - }, - "spender": { - "description": "Account that can transfer/send the token", - "type": "string" - } - } - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object" - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/approvals_response.json b/contracts/cw721-namespace/schema/approvals_response.json deleted file mode 100644 index 8d8e39e..0000000 --- a/contracts/cw721-namespace/schema/approvals_response.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ApprovalsResponse", - "type": "object", - "required": [ - "approvals" - ], - "properties": { - "approvals": { - "type": "array", - "items": { - "$ref": "#/definitions/Approval" - } - } - }, - "definitions": { - "Approval": { - "type": "object", - "required": [ - "expires", - "spender" - ], - "properties": { - "expires": { - "description": "When the Approval expires (maybe Expiration::never)", - "allOf": [ - { - "$ref": "#/definitions/Expiration" - } - ] - }, - "spender": { - "description": "Account that can transfer/send the token", - "type": "string" - } - } - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object" - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/contract_info_response.json b/contracts/cw721-namespace/schema/contract_info_response.json deleted file mode 100644 index a167125..0000000 --- a/contracts/cw721-namespace/schema/contract_info_response.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ContractInfoResponse", - "type": "object", - "required": [ - "name", - "symbol" - ], - "properties": { - "name": { - "type": "string" - }, - "symbol": { - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/execute_msg.json b/contracts/cw721-namespace/schema/execute_msg.json deleted file mode 100644 index e2b7617..0000000 --- a/contracts/cw721-namespace/schema/execute_msg.json +++ /dev/null @@ -1,397 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "oneOf": [ - { - "type": "object", - "required": [ - "set_minter" - ], - "properties": { - "set_minter": { - "type": "object", - "required": [ - "minter" - ], - "properties": { - "minter": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "set_owner" - ], - "properties": { - "set_owner": { - "type": "object", - "properties": { - "owner": { - "type": [ - "string", - "null" - ] - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "set_fee" - ], - "properties": { - "set_fee": { - "type": "object", - "required": [ - "fee" - ], - "properties": { - "fee": { - "$ref": "#/definitions/Coin" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Transfer is a base message to move a token to another account without triggering actions", - "type": "object", - "required": [ - "transfer_nft" - ], - "properties": { - "transfer_nft": { - "type": "object", - "required": [ - "recipient", - "token_id" - ], - "properties": { - "recipient": { - "type": "string" - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Send is a base message to transfer a token to a contract and trigger an action on the receiving contract.", - "type": "object", - "required": [ - "send_nft" - ], - "properties": { - "send_nft": { - "type": "object", - "required": [ - "contract", - "msg", - "token_id" - ], - "properties": { - "contract": { - "type": "string" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Mint a new NFT, can only be called by the contract minter", - "type": "object", - "required": [ - "mint" - ], - "properties": { - "mint": { - "$ref": "#/definitions/MintMsg_for_Metadata" - } - }, - "additionalProperties": false - }, - { - "description": "Burn an NFT the sender has access to", - "type": "object", - "required": [ - "burn" - ], - "properties": { - "burn": { - "type": "object", - "required": [ - "token_id" - ], - "properties": { - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Allows operator to transfer / send the token from the owner's account. If expiration is set, then this allowance has a time/height limit", - "type": "object", - "required": [ - "approve" - ], - "properties": { - "approve": { - "type": "object", - "required": [ - "spender", - "token_id" - ], - "properties": { - "expires": { - "anyOf": [ - { - "$ref": "#/definitions/Expiration" - }, - { - "type": "null" - } - ] - }, - "spender": { - "type": "string" - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Remove previously granted Approval", - "type": "object", - "required": [ - "revoke" - ], - "properties": { - "revoke": { - "type": "object", - "required": [ - "spender", - "token_id" - ], - "properties": { - "spender": { - "type": "string" - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Allows operator to transfer / send any token from the owner's account. If expiration is set, then this allowance has a time/height limit", - "type": "object", - "required": [ - "approve_all" - ], - "properties": { - "approve_all": { - "type": "object", - "required": [ - "operator" - ], - "properties": { - "expires": { - "anyOf": [ - { - "$ref": "#/definitions/Expiration" - }, - { - "type": "null" - } - ] - }, - "operator": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "description": "Remove previously granted ApproveAll permission", - "type": "object", - "required": [ - "revoke_all" - ], - "properties": { - "revoke_all": { - "type": "object", - "required": [ - "operator" - ], - "properties": { - "operator": { - "type": "string" - } - } - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec", - "type": "string" - }, - "Coin": { - "type": "object", - "required": [ - "amount", - "denom" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "denom": { - "type": "string" - } - } - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object" - } - }, - "additionalProperties": false - } - ] - }, - "Metadata": { - "type": "object", - "required": [ - "parent", - "target" - ], - "properties": { - "parent": { - "type": "string" - }, - "target": { - "type": "string" - } - } - }, - "MintMsg_for_Metadata": { - "type": "object", - "required": [ - "extension", - "owner", - "token_id" - ], - "properties": { - "extension": { - "description": "Any custom extension used by this contract", - "allOf": [ - { - "$ref": "#/definitions/Metadata" - } - ] - }, - "owner": { - "description": "The owner of the newly minter NFT", - "type": "string" - }, - "token_id": { - "description": "Unique ID of the NFT", - "type": "string" - }, - "token_uri": { - "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", - "type": [ - "string", - "null" - ] - } - } - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/instantiate_msg.json b/contracts/cw721-namespace/schema/instantiate_msg.json deleted file mode 100644 index b024c82..0000000 --- a/contracts/cw721-namespace/schema/instantiate_msg.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "type": "object", - "required": [ - "minter", - "name", - "symbol" - ], - "properties": { - "minter": { - "description": "The minter is the only one who can create new NFTs. This is designed for a base NFT that is controlled by an external program or contract. You will likely replace this with custom logic in custom NFTs", - "type": "string" - }, - "name": { - "description": "Name of the NFT contract", - "type": "string" - }, - "symbol": { - "description": "Symbol of the NFT contract", - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/minter_response.json b/contracts/cw721-namespace/schema/minter_response.json deleted file mode 100644 index a20e0d7..0000000 --- a/contracts/cw721-namespace/schema/minter_response.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MinterResponse", - "description": "Shows who can mint these tokens", - "type": "object", - "required": [ - "minter" - ], - "properties": { - "minter": { - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/nft_info_response.json b/contracts/cw721-namespace/schema/nft_info_response.json deleted file mode 100644 index 0df4f30..0000000 --- a/contracts/cw721-namespace/schema/nft_info_response.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "NftInfoResponse", - "type": "object", - "required": [ - "extension" - ], - "properties": { - "extension": { - "description": "You can add any custom metadata here when you extend cw721-base", - "allOf": [ - { - "$ref": "#/definitions/Metadata" - } - ] - }, - "token_uri": { - "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", - "type": [ - "string", - "null" - ] - } - }, - "definitions": { - "Metadata": { - "type": "object", - "required": [ - "parent", - "target" - ], - "properties": { - "parent": { - "type": "string" - }, - "target": { - "type": "string" - } - } - } - } -} diff --git a/contracts/cw721-namespace/schema/num_tokens_response.json b/contracts/cw721-namespace/schema/num_tokens_response.json deleted file mode 100644 index 4647c23..0000000 --- a/contracts/cw721-namespace/schema/num_tokens_response.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "NumTokensResponse", - "type": "object", - "required": [ - "count" - ], - "properties": { - "count": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } -} diff --git a/contracts/cw721-namespace/schema/operators_response.json b/contracts/cw721-namespace/schema/operators_response.json deleted file mode 100644 index 5370307..0000000 --- a/contracts/cw721-namespace/schema/operators_response.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OperatorsResponse", - "type": "object", - "required": [ - "operators" - ], - "properties": { - "operators": { - "type": "array", - "items": { - "$ref": "#/definitions/Approval" - } - } - }, - "definitions": { - "Approval": { - "type": "object", - "required": [ - "expires", - "spender" - ], - "properties": { - "expires": { - "description": "When the Approval expires (maybe Expiration::never)", - "allOf": [ - { - "$ref": "#/definitions/Expiration" - } - ] - }, - "spender": { - "description": "Account that can transfer/send the token", - "type": "string" - } - } - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object" - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/owner_of_response.json b/contracts/cw721-namespace/schema/owner_of_response.json deleted file mode 100644 index 1258d67..0000000 --- a/contracts/cw721-namespace/schema/owner_of_response.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OwnerOfResponse", - "type": "object", - "required": [ - "approvals", - "owner" - ], - "properties": { - "approvals": { - "description": "If set this address is approved to transfer/send the token as well", - "type": "array", - "items": { - "$ref": "#/definitions/Approval" - } - }, - "owner": { - "description": "Owner of the token", - "type": "string" - } - }, - "definitions": { - "Approval": { - "type": "object", - "required": [ - "expires", - "spender" - ], - "properties": { - "expires": { - "description": "When the Approval expires (maybe Expiration::never)", - "allOf": [ - { - "$ref": "#/definitions/Expiration" - } - ] - }, - "spender": { - "description": "Account that can transfer/send the token", - "type": "string" - } - } - }, - "Expiration": { - "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", - "oneOf": [ - { - "description": "AtHeight will expire when `env.block.height` >= height", - "type": "object", - "required": [ - "at_height" - ], - "properties": { - "at_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "description": "AtTime will expire when `env.block.time` >= time", - "type": "object", - "required": [ - "at_time" - ], - "properties": { - "at_time": { - "$ref": "#/definitions/Timestamp" - } - }, - "additionalProperties": false - }, - { - "description": "Never will never expire. Used to express the empty variant", - "type": "object", - "required": [ - "never" - ], - "properties": { - "never": { - "type": "object" - } - }, - "additionalProperties": false - } - ] - }, - "Timestamp": { - "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw721-namespace/schema/query_msg.json b/contracts/cw721-namespace/schema/query_msg.json deleted file mode 100644 index cd97370..0000000 --- a/contracts/cw721-namespace/schema/query_msg.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "oneOf": [ - { - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "owner_of" - ], - "properties": { - "owner_of": { - "type": "object", - "required": [ - "token_id" - ], - "properties": { - "include_expired": { - "type": [ - "boolean", - "null" - ] - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "approval" - ], - "properties": { - "approval": { - "type": "object", - "required": [ - "spender", - "token_id" - ], - "properties": { - "include_expired": { - "type": [ - "boolean", - "null" - ] - }, - "spender": { - "type": "string" - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "approvals" - ], - "properties": { - "approvals": { - "type": "object", - "required": [ - "token_id" - ], - "properties": { - "include_expired": { - "type": [ - "boolean", - "null" - ] - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "all_operators" - ], - "properties": { - "all_operators": { - "type": "object", - "required": [ - "owner" - ], - "properties": { - "include_expired": { - "type": [ - "boolean", - "null" - ] - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "owner": { - "type": "string" - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "num_tokens" - ], - "properties": { - "num_tokens": { - "type": "object" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "contract_info" - ], - "properties": { - "contract_info": { - "type": "object" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "nft_info" - ], - "properties": { - "nft_info": { - "type": "object", - "required": [ - "token_id" - ], - "properties": { - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "all_nft_info" - ], - "properties": { - "all_nft_info": { - "type": "object", - "required": [ - "token_id" - ], - "properties": { - "include_expired": { - "type": [ - "boolean", - "null" - ] - }, - "token_id": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "tokens" - ], - "properties": { - "tokens": { - "type": "object", - "required": [ - "owner" - ], - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "owner": { - "type": "string" - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "all_tokens" - ], - "properties": { - "all_tokens": { - "type": "object", - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "type": [ - "string", - "null" - ] - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "minter" - ], - "properties": { - "minter": { - "type": "object" - } - }, - "additionalProperties": false - } - ] -} diff --git a/contracts/cw721-namespace/schema/tokens_response.json b/contracts/cw721-namespace/schema/tokens_response.json deleted file mode 100644 index b8e3d75..0000000 --- a/contracts/cw721-namespace/schema/tokens_response.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TokensResponse", - "type": "object", - "required": [ - "tokens" - ], - "properties": { - "tokens": { - "description": "Contains all token_ids in lexicographical ordering If there are more than `limit`, use `start_from` in future queries to achieve pagination.", - "type": "array", - "items": { - "type": "string" - } - } - } -} diff --git a/contracts/cw721-namespace/src/contract.rs b/contracts/cw721-namespace/src/contract.rs deleted file mode 100644 index 8fbad7f..0000000 --- a/contracts/cw721-namespace/src/contract.rs +++ /dev/null @@ -1,132 +0,0 @@ -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; - -use cw2::{get_contract_version, set_contract_version}; -pub use cw721_base::{MintMsg, MinterResponse}; -use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; -use crate::state::SpaceContract; - -use crate::execute::{execute_mint, execute_burn, execute_set_minter, execute_set_owner, execute_transfer_nft, execute_send_nft}; - -use crate::query::{query_config}; -use crate::state::{Config, CONFIG}; -use crate::{error::ContractError}; - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: InstantiateMsg, -) -> StdResult { - - let config = Config { - owner: deps.api.addr_validate(&msg.clone().owner)? - }; - - CONFIG.save(deps.storage, &config)?; - - SpaceContract::default().instantiate(deps, env, info, msg.into()) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), - ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), - // Overwrite CW721 methods - ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), - ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), - ExecuteMsg::Burn { token_id } => execute_burn(deps, env, info, token_id), - ExecuteMsg::Mint(mint_msg) => execute_mint(deps, env, info, mint_msg), - // CW721 methods - _ => SpaceContract::default() - .execute(deps, env, info, msg.into()) - .map_err(|err| err.into()), - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Config {} => to_binary(&query_config(deps)?), - // CW721 methods - _ => SpaceContract::default().query(deps, env, msg.into()), - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate( - deps: DepsMut, - _env: Env, - msg: MigrateMsg, -) -> Result { - match msg { - MigrateMsg { version, config } => try_migrate(deps, version, config), - } -} - -fn try_migrate( - deps: DepsMut, - version: String, - config: Option, -) -> Result { - let contract_version = get_contract_version(deps.storage)?; - set_contract_version(deps.storage, contract_version.contract, version)?; - - if config.is_some() { - CONFIG.save(deps.storage, &config.unwrap())? - } - - Ok(Response::new() - .add_attribute("method", "try_migrate") - .add_attribute("version", contract_version.version)) -} - -#[cfg(test)] -mod tests { - use super::*; - use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; - use cosmwasm_std::{coins, from_binary}; - - #[test] - fn proper_initialization() { - assert_eq!(true, true); - } - - #[test] - fn proper_set_minter() { - assert_eq!(true, true); - } - - #[test] - fn proper_set_owner() { - assert_eq!(true, true); - } - - #[test] - fn proper_transfer_nft() { - assert_eq!(true, true); - } - - #[test] - fn proper_send_nft() { - assert_eq!(true, true); - } - - #[test] - fn proper_burn() { - assert_eq!(true, true); - } - - #[test] - fn proper_mint() { - assert_eq!(true, true); - } -} diff --git a/contracts/cw721-namespace/src/error.rs b/contracts/cw721-namespace/src/error.rs deleted file mode 100644 index 1c5a28b..0000000 --- a/contracts/cw721-namespace/src/error.rs +++ /dev/null @@ -1,33 +0,0 @@ -use cosmwasm_std::StdError; -use thiserror::Error; -use cw721_base::ContractError as CW721ContractError; - -#[derive(Error, Debug, PartialEq)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("Unauthorized")] - Unauthorized {}, - - #[error("token_id already claimed")] - Claimed {}, - - #[error("Cannot set approval that is already expired")] - Expired {}, - - #[error("Approval not found for: {spender}")] - ApprovalNotFound { spender: String }, -} - -impl From for ContractError { - fn from(msg: CW721ContractError) -> ContractError { - match msg { - CW721ContractError::Std(e) => ContractError::Std(e), - CW721ContractError::Unauthorized {} => ContractError::Unauthorized {}, - CW721ContractError::Claimed {} => ContractError::Claimed {}, - CW721ContractError::Expired {} => ContractError::Expired {}, - CW721ContractError::ApprovalNotFound {spender} => ContractError::ApprovalNotFound {spender} - } - } -} diff --git a/contracts/cw721-namespace/src/execute.rs b/contracts/cw721-namespace/src/execute.rs deleted file mode 100644 index 41197ec..0000000 --- a/contracts/cw721-namespace/src/execute.rs +++ /dev/null @@ -1,100 +0,0 @@ -use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, Coin, StdResult, attr, Binary}; -use cw721::Cw721Execute; -use cw721_base::{MintMsg}; -use crate::state::{Extension, SpaceContract}; - -use crate::error::ContractError; -use crate::state::{Config, CONFIG}; - -pub fn execute_transfer_nft( - deps: DepsMut, - env: Env, - info: MessageInfo, - recipient: String, - token_id: String, -) -> Result { - let cw721_contract = SpaceContract::default(); - - let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; - Ok(response) -} - -pub fn execute_send_nft( - deps: DepsMut, - env: Env, - info: MessageInfo, - contract: String, - token_id: String, - msg: Binary -) -> Result { - let cw721_contract = SpaceContract::default(); - - let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; - Ok(response) -} - -pub fn execute_mint( - deps: DepsMut, - env: Env, - info: MessageInfo, - mint_msg: MintMsg, -) -> Result { - let cw721_contract = SpaceContract::default(); - - let response = cw721_contract.mint(deps, env, info, mint_msg)?; - Ok(response) -} - -pub fn execute_burn( - deps: DepsMut, - env: Env, - info: MessageInfo, - token_id: String, -) -> Result { - let cw721_contract = SpaceContract::default(); - - let response = cw721_contract.burn(deps, env, info, token_id)?; - Ok(response) -} - -pub fn execute_set_minter( - deps: DepsMut, - _env: Env, - info: MessageInfo, - new_minter: String, -) -> Result { - let config = CONFIG.load(deps.storage)?; - let owner = config.owner; - if info.sender != owner { - return Err(ContractError::Unauthorized {}); - } - - let new_minter = deps.api.addr_validate(&new_minter)?; - let cw721_contract = SpaceContract::default(); - cw721_contract.minter.save(deps.storage, &new_minter)?; - - Ok(Response::new().add_attribute("action", "set_minter")) -} - -pub fn execute_set_owner( - deps: DepsMut, - _env: Env, - info: MessageInfo, - new_owner: String, -) -> Result { - let config = CONFIG.load(deps.storage)?; - let owner = config.owner; - if info.sender != owner { - return Err(ContractError::Unauthorized {}); - } - - let config = Config { - owner: deps.api.addr_validate(&new_owner)? - }; - - CONFIG.save(deps.storage, &config)?; - - Ok(Response::new().add_attributes(vec![ - attr("action", "update_owner") - ])) -} diff --git a/contracts/cw721-namespace/src/lib.rs b/contracts/cw721-namespace/src/lib.rs deleted file mode 100644 index c1bf9bf..0000000 --- a/contracts/cw721-namespace/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub mod contract; -pub mod error; -pub mod execute; -pub mod query; -pub mod state; -pub mod msg; diff --git a/contracts/cw721-namespace/src/msg.rs b/contracts/cw721-namespace/src/msg.rs deleted file mode 100644 index ff2ae70..0000000 --- a/contracts/cw721-namespace/src/msg.rs +++ /dev/null @@ -1,240 +0,0 @@ -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - -use cosmwasm_std::{Binary, Coin}; -use cw721::Expiration; -use cw721_base::{ - msg::{ - ExecuteMsg as CW721ExecuteMsg, InstantiateMsg as CW721InstantiateMsg, - QueryMsg as CW721QueryMsg, - }, - MintMsg as CW721MintMsg, -}; - -use crate::state::Extension; - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub struct InstantiateMsg { - /// Name of the NFT contract - pub name: String, - /// Symbol of the NFT contract - pub symbol: String, - - /// The minter is the only one who can create new NFTs. - /// This is designed for a base NFT that is controlled by an external program - /// or contract. You will likely replace this with custom logic in custom NFTs - pub minter: String, - - pub owner: String, -} - -impl From for CW721InstantiateMsg { - fn from(msg: InstantiateMsg) -> CW721InstantiateMsg { - CW721InstantiateMsg { - name: msg.name, - symbol: msg.symbol, - minter: msg.minter, - } - } -} - -pub type MintMsg = CW721MintMsg; - -// Extended CW721 ExecuteMsg, added the ability to update, burn, and finalize nft -#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] -#[serde(rename_all = "snake_case")] -pub enum ExecuteMsg { - SetMinter { minter: String }, - SetOwner { owner: String }, - - // Overwrite Standard CW721 ExecuteMsg - - /// Transfer is a base message to move a token to another account without triggering actions - TransferNft { - recipient: String, - token_id: String, - }, - /// Send is a base message to transfer a token to a contract and trigger an action - /// on the receiving contract. - SendNft { - contract: String, - token_id: String, - msg: Binary, - }, - - /// Mint a new NFT, can only be called by the contract minter - Mint(MintMsg), - - /// Burn an NFT the sender has access to - Burn { token_id: String }, - - // Standard CW721 ExecuteMsg - - /// Allows operator to transfer / send the token from the owner's account. - /// If expiration is set, then this allowance has a time/height limit - Approve { - spender: String, - token_id: String, - expires: Option, - }, - /// Remove previously granted Approval - Revoke { - spender: String, - token_id: String, - }, - /// Allows operator to transfer / send any token from the owner's account. - /// If expiration is set, then this allowance has a time/height limit - ApproveAll { - operator: String, - expires: Option, - }, - /// Remove previously granted ApproveAll permission - RevokeAll { - operator: String, - }, -} - -impl From for CW721ExecuteMsg { - fn from(msg: ExecuteMsg) -> CW721ExecuteMsg { - match msg { - ExecuteMsg::Approve { - spender, - token_id, - expires, - } => CW721ExecuteMsg::Approve { - spender, - token_id, - expires, - }, - ExecuteMsg::Revoke { spender, token_id } => { - CW721ExecuteMsg::Revoke { spender, token_id } - } - ExecuteMsg::ApproveAll { operator, expires } => { - CW721ExecuteMsg::ApproveAll { operator, expires } - } - ExecuteMsg::RevokeAll { operator } => CW721ExecuteMsg::RevokeAll { operator }, - _ => panic!("cannot covert {:?} to CW721ExecuteMsg", msg), - } - } -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum QueryMsg { - Config {}, - - // Standard CW721 queries - OwnerOf { - token_id: String, - include_expired: Option, - }, - Approval { - token_id: String, - spender: String, - include_expired: Option, - }, - Approvals { - token_id: String, - include_expired: Option, - }, - AllOperators { - owner: String, - include_expired: Option, - start_after: Option, - limit: Option, - }, - NumTokens {}, - ContractInfo {}, - NftInfo { - token_id: String, - }, - AllNftInfo { - token_id: String, - include_expired: Option, - }, - Tokens { - owner: String, - start_after: Option, - limit: Option, - }, - AllTokens { - start_after: Option, - limit: Option, - }, - Minter {}, -} - -impl From for CW721QueryMsg { - fn from(msg: QueryMsg) -> CW721QueryMsg { - match msg { - QueryMsg::OwnerOf { - token_id, - include_expired, - } => CW721QueryMsg::OwnerOf { - token_id, - include_expired, - }, - QueryMsg::Approval { - token_id, - spender, - include_expired, - } => CW721QueryMsg::Approval { - token_id, - spender, - include_expired - }, - QueryMsg::Approvals { - token_id, - include_expired, - } => CW721QueryMsg::Approvals { - token_id, - include_expired - }, - QueryMsg::AllOperators { - owner, - include_expired, - start_after, - limit, - } => CW721QueryMsg::AllOperators { - owner, - include_expired, - start_after, - limit, - }, - QueryMsg::NumTokens {} => CW721QueryMsg::NumTokens {}, - QueryMsg::ContractInfo {} => CW721QueryMsg::ContractInfo {}, - QueryMsg::NftInfo { token_id } => CW721QueryMsg::NftInfo { token_id }, - QueryMsg::AllNftInfo { - token_id, - include_expired, - } => CW721QueryMsg::AllNftInfo { - token_id, - include_expired, - }, - QueryMsg::Tokens { - owner, - start_after, - limit, - } => CW721QueryMsg::Tokens { - owner, - start_after, - limit, - }, - QueryMsg::AllTokens { start_after, limit } => { - CW721QueryMsg::AllTokens { start_after, limit } - }, - QueryMsg::Minter {} => { - CW721QueryMsg::Minter {} - } - _ => panic!("cannot covert {:?} to CW721QueryMsg", msg), - } - } -} - -#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] -#[serde(rename_all = "snake_case")] -pub struct MigrateMsg { - pub version: String, - pub config: Option, -} diff --git a/contracts/cw721-namespace/src/query.rs b/contracts/cw721-namespace/src/query.rs deleted file mode 100644 index 6b0db84..0000000 --- a/contracts/cw721-namespace/src/query.rs +++ /dev/null @@ -1,7 +0,0 @@ -use cosmwasm_std::{Deps, StdResult}; - -use crate::state::{Config, CONFIG}; - -pub fn query_config(deps: Deps) -> StdResult { - CONFIG.load(deps.storage) -} diff --git a/contracts/cw721-namespace/src/state.rs b/contracts/cw721-namespace/src/state.rs deleted file mode 100644 index 79e4a40..0000000 --- a/contracts/cw721-namespace/src/state.rs +++ /dev/null @@ -1,20 +0,0 @@ -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; -use cosmwasm_std::{Addr, Empty, Coin}; -use cw_storage_plus::Item; - -pub type SpaceContract<'a> = cw721_base::Cw721Contract<'a, Extension, Empty>; -pub type Extension = SpaceMetadata; - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct Config { - pub owner: Addr, -} - -pub const CONFIG: Item = Item::new("config"); - -#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)] -pub struct SpaceMetadata { - pub source: String, - pub target: String, -} From dffc4ec3db8926495629038cc51529c3b686d38b Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 3 Feb 2022 16:11:53 +0800 Subject: [PATCH 06/69] Alpha of subgraph --- Cargo.lock | 23 +++++ Cargo.toml | 2 +- contracts/cw-cyber-subgraph/Cargo.toml | 59 +++++++++++++ contracts/cw-cyber-subgraph/README.md | 1 + .../cw-cyber-subgraph/examples/schema.rs | 18 ++++ .../cw-cyber-subgraph/schema/execute_msg.json | 86 +++++++++++++++++++ .../schema/instantiate_msg.json | 17 ++++ .../cw-cyber-subgraph/schema/query_msg.json | 18 ++++ contracts/cw-cyber-subgraph/src/contract.rs | 67 +++++++++++++++ contracts/cw-cyber-subgraph/src/error.rs | 14 +++ contracts/cw-cyber-subgraph/src/execute.rs | 64 ++++++++++++++ contracts/cw-cyber-subgraph/src/lib.rs | 9 ++ contracts/cw-cyber-subgraph/src/msg.rs | 32 +++++++ contracts/cw-cyber-subgraph/src/query.rs | 10 +++ contracts/cw-cyber-subgraph/src/state.rs | 14 +++ contracts/cw-cyber-subgraph/src/tests.rs | 12 +++ 16 files changed, 445 insertions(+), 1 deletion(-) create mode 100644 contracts/cw-cyber-subgraph/Cargo.toml create mode 100644 contracts/cw-cyber-subgraph/README.md create mode 100644 contracts/cw-cyber-subgraph/examples/schema.rs create mode 100644 contracts/cw-cyber-subgraph/schema/execute_msg.json create mode 100644 contracts/cw-cyber-subgraph/schema/instantiate_msg.json create mode 100644 contracts/cw-cyber-subgraph/schema/query_msg.json create mode 100644 contracts/cw-cyber-subgraph/src/contract.rs create mode 100644 contracts/cw-cyber-subgraph/src/error.rs create mode 100644 contracts/cw-cyber-subgraph/src/execute.rs create mode 100644 contracts/cw-cyber-subgraph/src/lib.rs create mode 100644 contracts/cw-cyber-subgraph/src/msg.rs create mode 100644 contracts/cw-cyber-subgraph/src/query.rs create mode 100644 contracts/cw-cyber-subgraph/src/state.rs create mode 100644 contracts/cw-cyber-subgraph/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 7db206a..5784218 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -304,6 +304,29 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cw-cyber-subgraph" +version = "0.0.1" +dependencies = [ + "anyhow", + "base64", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.10.3", + "cw-utils", + "cw0", + "cw2 0.11.1", + "cw20", + "cyber-std", + "hex", + "schemars", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", +] + [[package]] name = "cw-storage-plus" version = "0.10.3" diff --git a/Cargo.toml b/Cargo.toml index 835de4f..7b4343c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["contracts/cw-cyber-passport", "contracts/cw-cyber-airdrop"] +members = ["contracts/cw-cyber-passport", "contracts/cw-cyber-airdrop", "contracts/cw-cyber-subgraph"] [profile.release.package.cw721-marketplace] codegen-units = 1 diff --git a/contracts/cw-cyber-subgraph/Cargo.toml b/contracts/cw-cyber-subgraph/Cargo.toml new file mode 100644 index 0000000..4081bb2 --- /dev/null +++ b/contracts/cw-cyber-subgraph/Cargo.toml @@ -0,0 +1,59 @@ +[package] +name = "cw-cyber-subgraph" +version = "0.0.1" +authors = ["CyberHead"] +edition = "2018" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib", "rlib"] + +[profile.release] +opt-level = 3 +debug = false +rpath = false +lto = true +debug-assertions = false +codegen-units = 1 +panic = 'abort' +incremental = false +overflow-checks = true + +[features] +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[package.metadata.scripts] +optimize = """docker run --rm -v "$(pwd)":/code \ + --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ + --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ + cosmwasm/rust-optimizer:0.12.4 +""" + +[dependencies] +anyhow = "1" +cw0 = "0.10.3" +cw2 = "0.11" +cw20 = "0.11" +cosmwasm-std = { version = "1.0.0-beta" } +cw-utils = { version = "0.11.0" } +cyber-std = { path = "../cyber-std" } +cw-storage-plus = "0.10" +schemars = "0.8.3" +serde = { version = "1.0.103", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.27" } +hex = "0.4" +sha2 = { version = "0.9.5", default-features = false } +sha3 = "0.9" +serde_json = "1.0" +cosmwasm-schema = "1.0.0-beta" +base64 = "0.13" diff --git a/contracts/cw-cyber-subgraph/README.md b/contracts/cw-cyber-subgraph/README.md new file mode 100644 index 0000000..99591a6 --- /dev/null +++ b/contracts/cw-cyber-subgraph/README.md @@ -0,0 +1 @@ +# cw-cybergift diff --git a/contracts/cw-cyber-subgraph/examples/schema.rs b/contracts/cw-cyber-subgraph/examples/schema.rs new file mode 100644 index 0000000..f78d181 --- /dev/null +++ b/contracts/cw-cyber-subgraph/examples/schema.rs @@ -0,0 +1,18 @@ +use std::env::current_dir; +use std::fs::create_dir_all; + +use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; +use cw_cyber_subgraph::msg::{ + ExecuteMsg, InstantiateMsg, QueryMsg, +}; + +fn main() { + let mut out_dir = current_dir().unwrap(); + out_dir.push("schema"); + create_dir_all(&out_dir).unwrap(); + remove_schemas(&out_dir).unwrap(); + + export_schema(&schema_for!(InstantiateMsg), &out_dir); + export_schema(&schema_for!(ExecuteMsg), &out_dir); + export_schema(&schema_for!(QueryMsg), &out_dir); +} diff --git a/contracts/cw-cyber-subgraph/schema/execute_msg.json b/contracts/cw-cyber-subgraph/schema/execute_msg.json new file mode 100644 index 0000000..537c3af --- /dev/null +++ b/contracts/cw-cyber-subgraph/schema/execute_msg.json @@ -0,0 +1,86 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "cyberlink" + ], + "properties": { + "cyberlink": { + "type": "object", + "required": [ + "links" + ], + "properties": { + "links": { + "type": "array", + "items": { + "$ref": "#/definitions/Link" + } + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "update_owner" + ], + "properties": { + "update_owner": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "new_owner": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "update_executer" + ], + "properties": { + "update_executer": { + "type": "object", + "required": [ + "new_executer" + ], + "properties": { + "new_executer": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Link": { + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + } + } + } +} diff --git a/contracts/cw-cyber-subgraph/schema/instantiate_msg.json b/contracts/cw-cyber-subgraph/schema/instantiate_msg.json new file mode 100644 index 0000000..712dede --- /dev/null +++ b/contracts/cw-cyber-subgraph/schema/instantiate_msg.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "required": [ + "executer", + "owner" + ], + "properties": { + "executer": { + "type": "string" + }, + "owner": { + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-subgraph/schema/query_msg.json b/contracts/cw-cyber-subgraph/schema/query_msg.json new file mode 100644 index 0000000..3df1ec1 --- /dev/null +++ b/contracts/cw-cyber-subgraph/schema/query_msg.json @@ -0,0 +1,18 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object" + } + }, + "additionalProperties": false + } + ] +} diff --git a/contracts/cw-cyber-subgraph/src/contract.rs b/contracts/cw-cyber-subgraph/src/contract.rs new file mode 100644 index 0000000..45f1efa --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/contract.rs @@ -0,0 +1,67 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo}; +use cw2::{get_contract_version, set_contract_version}; + +use crate::error::ContractError; +use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use crate::state::{Config, CONFIG}; +use crate::execute::{execute_cyberlink, execute_update_executer, execute_update_owner}; +use crate::query::query_config; + +use cyber_std::CyberMsgWrapper; +type Response = cosmwasm_std::Response; + +// Version info, for migration info +const CONTRACT_NAME: &str = "crates.io:cw-cyber-subgraph"; +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + let config = Config { + owner: deps.api.addr_validate(&msg.owner)?, + executer: deps.api.addr_validate(&msg.executer)?, + }; + CONFIG.save(deps.storage, &config)?; + + Ok(Response::default()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::UpdateOwner { new_owner } => execute_update_owner(deps, env, info, new_owner), + ExecuteMsg::UpdateExecuter { new_executer } => execute_update_executer(deps, env, info, new_executer), + ExecuteMsg::Cyberlink { links } => execute_cyberlink(deps, env, info, links), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Config {} => to_binary(&query_config(deps)?), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { + let version = get_contract_version(deps.storage)?; + if version.contract != CONTRACT_NAME { + return Err(ContractError::CannotMigrate { + previous_contract: version.contract, + }); + } + Ok(Response::default()) +} diff --git a/contracts/cw-cyber-subgraph/src/error.rs b/contracts/cw-cyber-subgraph/src/error.rs new file mode 100644 index 0000000..5914335 --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/error.rs @@ -0,0 +1,14 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Unauthorized")] + Unauthorized {}, + + #[error("Cannot migrate from different contract type: {previous_contract}")] + CannotMigrate { previous_contract: String }, +} diff --git a/contracts/cw-cyber-subgraph/src/execute.rs b/contracts/cw-cyber-subgraph/src/execute.rs new file mode 100644 index 0000000..b0e3d3f --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/execute.rs @@ -0,0 +1,64 @@ +use cosmwasm_std::{attr, DepsMut, Env, MessageInfo, StdResult}; + +use crate::error::ContractError; +use crate::state::CONFIG; +use cyber_std::{create_cyberlink_msg, Link, CyberMsgWrapper}; + +type Response = cosmwasm_std::Response; + + +pub fn execute_update_owner( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_owner: String, +) -> Result { + let cfg = CONFIG.load(deps.storage)?; + if info.sender != cfg.owner { + return Err(ContractError::Unauthorized {}); + } + + let owner = deps.api.addr_validate(&new_owner)?; + CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { + cfg.owner = owner; + Ok(cfg) + })?; + + Ok(Response::new().add_attributes(vec![attr("action", "update_owner")])) +} + +pub fn execute_update_executer( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_executer: String, +) -> Result { + let cfg = CONFIG.load(deps.storage)?; + if info.sender != cfg.owner { + return Err(ContractError::Unauthorized {}); + } + + let executer = deps.api.addr_validate(&new_executer)?; + CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { + cfg.executer = executer; + Ok(cfg) + })?; + + Ok(Response::new().add_attributes(vec![attr("action", "update_executer")])) +} + +pub fn execute_cyberlink( + deps: DepsMut, + env: Env, + info: MessageInfo, + cyberlink: Vec, +) -> Result { + let cfg = CONFIG.load(deps.storage)?; + if info.sender != cfg.executer { + return Err(ContractError::Unauthorized {}); + } + + let msg = create_cyberlink_msg(env.contract.address.to_string(), cyberlink); + Ok(Response::new().add_message(msg)) +} + diff --git a/contracts/cw-cyber-subgraph/src/lib.rs b/contracts/cw-cyber-subgraph/src/lib.rs new file mode 100644 index 0000000..c41b715 --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/lib.rs @@ -0,0 +1,9 @@ +pub mod contract; +pub mod error; +pub mod execute; +pub mod msg; +pub mod state; +pub mod query; +mod tests; + +pub use crate::error::ContractError; diff --git a/contracts/cw-cyber-subgraph/src/msg.rs b/contracts/cw-cyber-subgraph/src/msg.rs new file mode 100644 index 0000000..1f54e2e --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/msg.rs @@ -0,0 +1,32 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; +use cyber_std::Link; + +#[derive(Serialize, Deserialize, JsonSchema)] +pub struct InstantiateMsg { + pub owner: String, + pub executer: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + Cyberlink { + links: Vec + }, + UpdateOwner { + new_owner: String + }, + UpdateExecuter { + new_executer: String + }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + Config {}, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct MigrateMsg {} diff --git a/contracts/cw-cyber-subgraph/src/query.rs b/contracts/cw-cyber-subgraph/src/query.rs new file mode 100644 index 0000000..f939c11 --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/query.rs @@ -0,0 +1,10 @@ +use cosmwasm_std::{Deps, StdResult}; +use crate::state::{CONFIG, Config}; + +pub fn query_config(deps: Deps) -> StdResult { + let cfg = CONFIG.load(deps.storage)?; + Ok(Config { + owner: cfg.owner, + executer: cfg.executer + }) +} diff --git a/contracts/cw-cyber-subgraph/src/state.rs b/contracts/cw-cyber-subgraph/src/state.rs new file mode 100644 index 0000000..d4f1566 --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/state.rs @@ -0,0 +1,14 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use cosmwasm_std::Addr; +use cw_storage_plus::Item; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct Config { + pub owner: Addr, + pub executer : Addr +} + +pub const CONFIG_KEY: &str = "config"; +pub const CONFIG: Item = Item::new(CONFIG_KEY); diff --git a/contracts/cw-cyber-subgraph/src/tests.rs b/contracts/cw-cyber-subgraph/src/tests.rs new file mode 100644 index 0000000..42b3034 --- /dev/null +++ b/contracts/cw-cyber-subgraph/src/tests.rs @@ -0,0 +1,12 @@ +#[cfg(test)] +mod tests { + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; + use crate::execute::*; + use crate::msg::*; + use crate::ContractError; + + #[test] + fn proper_instantiation() { + assert_eq!(true, true) + } +} From a6469619ae9d8809d16436dce5d0e06c59c433de Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 4 Feb 2022 16:57:43 +0800 Subject: [PATCH 07/69] Fixed gift and passport cross contract queries --- Cargo.lock | 1 + contracts/cw-cyber-airdrop/Cargo.toml | 1 + contracts/cw-cyber-airdrop/src/execute.rs | 18 +++++++------- contracts/cw-cyber-airdrop/src/msg.rs | 17 +++---------- .../cw-cyber-passport/schema/query_msg.json | 24 +++++++++++++++++++ contracts/cw-cyber-passport/src/contract.rs | 3 ++- contracts/cw-cyber-passport/src/msg.rs | 4 ++++ contracts/cw-cyber-passport/src/query.rs | 2 +- 8 files changed, 46 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5784218..0f9925f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -264,6 +264,7 @@ dependencies = [ "base64", "cosmwasm-schema", "cosmwasm-std", + "cw-cyber-passport", "cw-storage-plus 0.10.3", "cw-utils", "cw0", diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index 9f2ef22..7d69706 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -47,6 +47,7 @@ cw20 = "0.11" cosmwasm-std = { version = "1.0.0-beta" } cw-utils = { version = "0.11.0" } #cosmwasm-crypto = { version = "1.0.0-beta" } +cw-cyber-passport = { path = "../cw-cyber-passport" } cw-storage-plus = "0.10" schemars = "0.8.3" serde = { version = "1.0.103", default-features = false, features = ["derive"] } diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 04f8a78..8140bc8 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -2,10 +2,11 @@ use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; -use crate::msg::{PassportSignedQuery, PassportSignedResponse, PassportAddressQuery, PassportAddressResponse}; use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; -use cw_utils::{Expiration, DAY}; +use cw_utils::{Expiration, DAY, HOUR}; use std::ops::{Add, Mul}; +use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; +use crate::msg::{AddressResponse, SignatureResponse}; const RELEASE_STAGES: u64 = 9; @@ -137,9 +138,9 @@ pub fn execute_claim( // is_eligible(deps.as_ref(), &claim_msg, signature)?; - let res:PassportSignedResponse = deps.querier.query_wasm_smart( + let res: SignatureResponse = deps.querier.query_wasm_smart( config.clone().passport_addr, - &PassportSignedQuery{ + &PassportQueryMsg::PassportSigned{ nickname: nickname.clone(), address: gift_claiming_address.clone() } @@ -161,9 +162,9 @@ pub fn execute_claim( update_coefficient(deps.storage, claim_amount, &mut config)?; - let res:PassportAddressResponse = deps.querier.query_wasm_smart( + let res: AddressResponse = deps.querier.query_wasm_smart( config.passport_addr, - &PassportAddressQuery{ + &PassportQueryMsg::AddressByNickname { nickname: nickname.clone(), } )?; @@ -229,10 +230,11 @@ pub fn execute_release( return Err(ContractError::GiftReleased {}); } + // TODO change HOUR to DAY after tests let amount: Uint128; if release_state.stage.is_zero() { amount = release_state.balance_claim.mul(Decimal::percent(10)); - release_state.stage_expiration = DAY.after(&env.block); + release_state.stage_expiration = HOUR.after(&env.block); release_state.stage = Uint64::new(RELEASE_STAGES); } else { if release_state.stage_expiration.is_expired(&env.block) { @@ -244,7 +246,7 @@ pub fn execute_release( amount = release_state .balance_claim .mul(Decimal::from_ratio(1u128, release_state.stage)); - release_state.stage_expiration = DAY.after(&env.block); + release_state.stage_expiration = HOUR.after(&env.block); release_state.stage = release_state.stage.checked_sub(Uint64::new(1))?; } } else { diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index 9c86048..cc9b4ed 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -44,7 +44,7 @@ pub enum ExecuteMsg { /// Proof is hex-encoded merkle proof. proof: Vec, }, - Release { gift_address: String}, + Release { gift_address: String }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] @@ -92,24 +92,13 @@ pub struct ReleaseStateResponse { } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct PassportSignedQuery { - pub nickname: String, - pub address: String, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct PassportSignedResponse { +pub struct SignatureResponse { pub signed: bool, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct PassportAddressQuery { - pub nickname: String, -} - #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] #[serde(rename_all = "snake_case")] -pub struct PassportAddressResponse { +pub struct AddressResponse { pub address: String, } diff --git a/contracts/cw-cyber-passport/schema/query_msg.json b/contracts/cw-cyber-passport/schema/query_msg.json index 24373ef..8243684 100644 --- a/contracts/cw-cyber-passport/schema/query_msg.json +++ b/contracts/cw-cyber-passport/schema/query_msg.json @@ -86,6 +86,30 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "passport_signed" + ], + "properties": { + "passport_signed": { + "type": "object", + "required": [ + "address", + "nickname" + ], + "properties": { + "address": { + "type": "string" + }, + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 992b687..b7bb6b0 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -6,7 +6,7 @@ use cyber_std::CyberMsgWrapper; use crate::error::ContractError; use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_minter, execute_set_owner, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; -use crate::query::{query_address_by_nickname, query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; +use crate::query::{query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; type Response = cosmwasm_std::Response; @@ -64,6 +64,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::AddressByNickname {nickname} => to_binary(&query_address_by_nickname(deps, nickname)?), QueryMsg::PassportByNickname {nickname} => to_binary(&query_passport_by_nickname(deps, nickname)?), QueryMsg::MetadataByNickname {nickname} => to_binary(&query_metadata_by_nickname(deps, nickname)?), + QueryMsg::PassportSigned {nickname, address} => to_binary(&query_passort_signed(deps, nickname, address)?), // CW721 methods _ => PassportContract::default().query(deps, env, msg.into()), } diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index 11f6ef1..f6f0ba7 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -146,6 +146,10 @@ pub enum QueryMsg { AddressByNickname { nickname: String }, PassportByNickname { nickname: String }, MetadataByNickname { nickname: String }, + PassportSigned { + nickname: String, + address: String + }, // Standard CW721 queries OwnerOf { diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index 5461b18..a39cbcf 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -36,7 +36,7 @@ pub fn query_portid(deps: Deps) -> StdResult { Ok(PortidResponse { portid: portid.into() }) } -pub fn query_nickname_address_signed( +pub fn query_passort_signed( deps: Deps, nickname: String, address: String From 817010ae777eb2b0dcb46a48c75493b2dc8ba1cb Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Tue, 8 Feb 2022 18:48:49 +0800 Subject: [PATCH 08/69] Add Gift and Passport contracts testing --- .../gift_and_passport_contracts_testing.ipynb | 674 ++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb new file mode 100644 index 0000000..d8ad0b3 --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -0,0 +1,674 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Gift Contract Testing" + ] + }, + { + "cell_type": "code", + "source": [ + "from web3.auto import w3\n", + "import pandas as pd\n", + "from cyberpy import generate_wallet, address_to_address\n", + "from cyberpy._message_signer import Message\n", + "from cyberpy._wallet import seed_to_privkey\n", + "from eth_account.messages import encode_defunct\n", + "import json\n", + "from subprocess import Popen, PIPE\n", + "import os\n", + "from time import time\n", + "import ipfshttpclient\n", + "from tqdm.notebook import tqdm\n", + "from base64 import b64encode\n", + "\n", + "client = ipfshttpclient.connect()\n", + "\n", + "NUMBER_OF_PARTICIPANTS = 2\n", + "KEY_PHRASE = 'KEY PHRASE'\n", + "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", + "AVATAR_CID_LIST = [client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", + "CLAIM_AMOUNT_LIST = [1_477_000]\n", + "\n", + "INITIAL_BALANCE = str(1_000_000_000)\n", + "COEF_UP = str(20)\n", + "COEF_DOWN = str(5)\n", + "TARGET_CLAIM = str(2)\n", + "\n", + "NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443'\n", + "NETWORK = 'space-pussy-1'\n", + "\n", + "INIT_PASSPORT_CONTRACT = False\n", + "PASSPORT_CODE_ID = str(18)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz'\n", + "\n", + "INIT_GIFT_CONTRACT = False\n", + "GIFT_CODE_ID = str(20)\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom1fs5xwhralvmm49jdpy7grazcw8fsftu6d0pwn79xerkak65f83mqkn75jf'\n", + "\n", + "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'\n", + "\n", + "def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]:\n", + " _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate()\n", + " if _error:\n", + " display_data = True\n", + " if display_data:\n", + " print(bash_command)\n", + " print(_output.decode('utf-8'))\n", + " print(_error.decode('utf-8'))\n", + " return _output.decode('utf-8'), _error.decode('utf-8')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "execution_count": 1, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/sergenedashkovsky/Library/Python/3.8/lib/python/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.10.0' (not in range: 0.5.0 ≤ … < 0.9.0)\n", + " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Generate addresses and sign messages" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [ + { + "data": { + "text/plain": " amount nickname avatar \\\n0 1477000 john16443172440 QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc \n1 1477000 john16443172440 QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc \n\n ethereum_address \\\n0 0x08d8dd519689b85d36fd318fa88bd5d1586c4d6b \n1 0x58d86dd6b9a3915eb91706f840fa3ff179cd8fa8 \n\n ethereum_private_key \\\n0 0x0954aa3aac2ee8e3aeaed2343bf5bf407107780832d2... \n1 0xc1cb7f73a3d1e049b827c11d0fb16e4f30d27f6f79c6... \n\n bostrom_address \\\n0 bostrom1klp3t8kk7w924tw8et6gj7qtgfap8du0dqa0xe \n1 bostrom1tzj65n3emke5yx2ff93jhau8aennnnpjwpup8r \n\n cosmos_address \\\n0 cosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7 \n1 cosmos1tzj65n3emke5yx2ff93jhau8aennnnpjdjgjey \n\n cosmos_seed \\\n0 guitar travel bench congress dumb ride casino ... \n1 strike silent agent worry dolphin fantasy stoc... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0x4c94599713ce86629ef3975d460429ac01ac0942bc57... \n1 0xe06da8bf81781d90ff52a2d9acf2522376803f238c8e... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Awr+wK9wc00Ur0pATcxG3XKeqm74MoXdL... \n1 {'pub_key': 'AudAUcXCTDqtGHM97PskQ0jmL1A5wkMNl... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXdyK3dLOXdjMDBVcjBwQVRjeEczWE... \n1 eyJwdWJfa2V5IjoiQXVkQVVjWENURHF0R0hNOTdQc2tRMG... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16443172440QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc0x08d8dd519689b85d36fd318fa88bd5d1586c4d6b0x0954aa3aac2ee8e3aeaed2343bf5bf407107780832d2...bostrom1klp3t8kk7w924tw8et6gj7qtgfap8du0dqa0xecosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7guitar travel bench congress dumb ride casino ...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0x4c94599713ce86629ef3975d460429ac01ac0942bc57...{'pub_key': 'Awr+wK9wc00Ur0pATcxG3XKeqm74MoXdL...eyJwdWJfa2V5IjoiQXdyK3dLOXdjMDBVcjBwQVRjeEczWE...
11477000john16443172440QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc0x58d86dd6b9a3915eb91706f840fa3ff179cd8fa80xc1cb7f73a3d1e049b827c11d0fb16e4f30d27f6f79c6...bostrom1tzj65n3emke5yx2ff93jhau8aennnnpjwpup8rcosmos1tzj65n3emke5yx2ff93jhau8aennnnpjdjgjeystrike silent agent worry dolphin fantasy stoc...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xe06da8bf81781d90ff52a2d9acf2522376803f238c8e...{'pub_key': 'AudAUcXCTDqtGHM97PskQ0jmL1A5wkMNl...eyJwdWJfa2V5IjoiQXVkQVVjWENURHF0R0hNOTdQc2tRMG...
\n
" + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "claims_list = []\n", + "for _ in range(NUMBER_OF_PARTICIPANTS):\n", + " claim_item = {'amount': CLAIM_AMOUNT_LIST[0],\n", + " 'nickname': NICKNAME_LIST[0],\n", + " 'avatar': AVATAR_CID_LIST[0]}\n", + "\n", + " # Generate Ethereum wallet\n", + " ethereum_wallet = w3.eth.account.create(KEY_PHRASE)\n", + " claim_item['ethereum_address'] = ethereum_wallet.address.lower()\n", + " claim_item['ethereum_private_key'] = ethereum_wallet.privateKey.hex()\n", + "\n", + " # Generate Bostrom and Cosmos wallet\n", + " bostrom_wallet = generate_wallet()\n", + " claim_item['bostrom_address'] = bostrom_wallet['address']\n", + " claim_item['cosmos_address'] = address_to_address(bostrom_wallet['address'], 'cosmos')\n", + " claim_item['cosmos_seed'] = bostrom_wallet['seed']\n", + "\n", + " # Create message\n", + " # message_json = {\n", + " # \"nickname\": claim_item['nickname'],\n", + " # \"gift_claiming_address\": claim_item['ethereum_address'],\n", + " # \"gift_amount\": claim_item['amount'],\n", + " # \"target_address\": claim_item['bostrom_address']\n", + " # }\n", + " # claim_item['message'] = json.dumps(message_json)\n", + " claim_item['message'] = 'QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV'\n", + "\n", + " # Sign message form Ethereum address\n", + " ethereum_signed_message = \\\n", + " w3.eth.account.sign_message(\n", + " signable_message=encode_defunct(text=claim_item['message']),\n", + " private_key=ethereum_wallet.privateKey)\n", + " # print(signed_message.signature)\n", + " claim_item['ethereum_message_signature'] = ethereum_signed_message.signature.hex()\n", + "\n", + " # Sign message form Cosmos address\n", + " cosmos_msg = Message(privkey=seed_to_privkey(seed=claim_item['cosmos_seed']))\n", + " cosmos_msg.add_message(signing_message=claim_item['message'], signer_prefix='cosmos')\n", + " claim_item['cosmos_message_signed_row'] = cosmos_msg.get_signed_message()\n", + " claim_item['cosmos_message_signature'] = b64encode(json.dumps(claim_item['cosmos_message_signed_row']).replace('\\n', '').replace(' ', '').encode('utf-8')).decode(\"utf-8\")\n", + "\n", + " # Verify message\n", + " assert claim_item['ethereum_address'] == w3.eth.account.recover_message(\n", + " signable_message=encode_defunct(text=claim_item['message']),\n", + " signature=claim_item['ethereum_message_signature']).lower()\n", + "\n", + " claims_list.append(claim_item)\n", + "\n", + "claims_df = pd.DataFrame(claims_list)\n", + "claims_df.to_csv('claims_ethereum_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom1fs5xwhralvmm49jdpy7grazcw8fsftu6d0pwn79xerkak65f83mqkn75jf\n" + ] + } + ], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " init_output, init_error = execute_bash(\n", + " f'''INIT='{{\"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"passport\":\"{PASSPORT_CONTRACT_ADDRESS}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}' \\\n", + " && cyber tx wasm instantiate {GIFT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", + " if init_error:\n", + " print(init_error)\n", + " init_json = json.loads(init_output)\n", + " gift_contract_address = \\\n", + " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passport contract address: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n" + ] + } + ], + "source": [ + "if INIT_PASSPORT_CONTRACT:\n", + " init_output, init_error = execute_bash(\n", + " f'''INIT='{{\"name\":\"CPT\", \"minter\":\"{os.getenv('WALLET_ADDRESS')}\", \"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"symbol\":\"CPT\"}}' \\\n", + " && cyber tx wasm instantiate {PASSPORT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", + " if init_error:\n", + " print(init_error)\n", + " init_json = json.loads(init_output)\n", + " passport_contract_address = \\\n", + " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [], + "source": [ + "root_source_list = [{'address': _item['ethereum_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", + " [{'address': _item['cosmos_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]\n", + "\n", + "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Merkle root: 8eb0a8b9253b71e260553b20fef948bd9746cdfca4de6ec7a55d297d2d8bf185\n" + ] + } + ], + "source": [ + "execute_bash(f'rm {ROOT_FILE_NAME}')\n", + "root_output, root_error = execute_bash(\n", + " f'merkle-airdrop-cli generateRoot --file {ROOT_SOURCE_FILE_NAME} >> {ROOT_FILE_NAME} && cat {ROOT_FILE_NAME}')\n", + "root = root_output.replace('\\n', '')\n", + "print(f'Merkle root: {root}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [], + "source": [ + "root_register_output, root_register_error = \\\n", + " execute_bash(\n", + " f'''REGISTER='{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}' \\\n", + " && CONTRACT=\"{gift_contract_address}\" \\\n", + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --chain-id={NETWORK} --node={NODE_URL}''')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Get Merkle Root form the Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "execution_count": 156 + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data:\n", + " merkle_root: 8eb0a8b9253b71e260553b20fef948bd9746cdfca4de6ec7a55d297d2d8bf185\n", + "\n" + ] + } + ], + "source": [ + "print(\n", + " execute_bash(\n", + " f'''QUERY='{{\"merkle_root\": {{}}}}' \\\n", + " && cyber query wasm contract-state smart {gift_contract_address} \"$QUERY\" --chain-id={NETWORK} --node={NODE_URL}''')[0]\n", + ")" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create Passports" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 9, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "76397c18e8aa48e09724bf46a5217c5d" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "REGISTER='{\"create_passport\":{\"avatar\":\"QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\", \"nickname\":\"john16443172440\"}}' && CONTRACT=\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"227940\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1175691\"\n", + "info: \"\"\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: particleFrom\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: particleTo\n", + " value: QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\n", + " - key: particleFrom\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: particleTo\n", + " value: QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\n", + " - key: particleFrom\n", + " value: QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\n", + " - key: particleTo\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: particleFrom\n", + " value: QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\n", + " - key: particleTo\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: neuron\n", + " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " type: cyberlink\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " - key: action\n", + " value: mint\n", + " - key: minter\n", + " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " - key: token_id\n", + " value: \"19\"\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\"},{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\"},{\"key\":\"particleFrom\",\"value\":\"QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleFrom\",\"value\":\"QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"},{\"key\":\"action\",\"value\":\"mint\"},{\"key\":\"minter\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"},{\"key\":\"token_id\",\"value\":\"19\"}]}]}]'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: 98D906104DB987D69080B4BB3A5DDD5D4FA3D2749BE78828F59D57E2A0DC491D\n", + "\n", + "\n" + ] + } + ], + "source": [ + "def create_passport(claim_row: pd.Series, display_data: bool = False):\n", + " return execute_bash(\n", + " f'''REGISTER='{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}' \\\n", + " && CONTRACT=\"{passport_contract_address}\" \\\n", + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " display_data=display_data)\n", + "\n", + "for index, row in tqdm(claims_df.iterrows()):\n", + " if index == 0:\n", + " create_passport(row, display_data=True)\n", + " else:\n", + " create_passport(row)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Proof (Add) Address to Passports" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "553f34c27cc94518af61ebaf641cb2c3" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "REGISTER='{\"proof_address\":{\"nickname\":\"john16443172440\", \"address\":\"cosmos1tzj65n3emke5yx2ff93jhau8aennnnpjdjgjey\", \"signature\":\"eyJwdWJfa2V5IjoiQXVkQVVjWENURHF0R0hNOTdQc2tRMGptTDFBNXdrTU5sSFp1QXRwNTZyOUEiLCJzaWduYXR1cmUiOiJtQmw2Y1FUSTMzRHF1S211NWFBNHYxblcyQUxLKzdyWWtaM0lXNFVvK3Znc3NYOHJjN0hoV05od0ZnMmZQTXlZbnhMSjJzZVdQczVnbnh6RFNlNlEvQT09In0=\"}}' && CONTRACT=\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 5\n", + "codespace: wasm\n", + "data: \"\"\n", + "gas_used: \"120020\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1175693\"\n", + "info: \"\"\n", + "logs: []\n", + "raw_log: 'failed to execute message; message index: 0: Address is not eligible to\n", + " claim airdrop, Generic error: addr_validate errored: invalid Bech32 prefix; expected\n", + " bostrom, got cosmos: execute wasm contract failed'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: 6D5BC257C197C9A2DCCC7E6DF076A3C58149368F0B12333D7281E14ECCEA844C\n", + "\n", + "\n" + ] + } + ], + "source": [ + "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", + " return execute_bash(\n", + " f'''REGISTER='{{\"proof_address\":{{\"nickname\":\"{claim_row[\"nickname\"]}\", \"address\":\"{claim_row[network + \"_address\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}' \\\n", + " && CONTRACT=\"{passport_contract_address}\" \\\n", + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " display_data=display_data)\n", + "\n", + "for index, row in tqdm(claims_df.iterrows()):\n", + " if index == 1:\n", + " # proof_address(row, display_data=True)\n", + " proof_address(row, network='cosmos', display_data=True)\n", + " else:\n", + " # proof_address(row)\n", + " # proof_address(row, network='cosmos', display_data=True)\n", + " pass" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Generate Proofs and Claim" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "5f5df723890448cbaa575a6a8e463eb3" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7 --amount 1477000\n", + "[\n", + " '98bf79467efe4b717779d06490289e9a793e51221cef4b142cb5adca5ee6381c',\n", + " '4cdd4653d3056ea3d1096c592ae3651deff280154acc987aa535d752dd3f5ffb'\n", + "]\n", + "\n", + "\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16443172440\", \"gift_claiming_address\":\"cosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7\", \"gift_amount\":\"1477000\", \"proof\":[\"98bf79467efe4b717779d06490289e9a793e51221cef4b142cb5adca5ee6381c\",\"4cdd4653d3056ea3d1096c592ae3651deff280154acc987aa535d752dd3f5ffb\"]}}' && cyber tx wasm execute bostrom1fs5xwhralvmm49jdpy7grazcw8fsftu6d0pwn79xerkak65f83mqkn75jf \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 5\n", + "codespace: wasm\n", + "data: \"\"\n", + "gas_used: \"184240\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1175694\"\n", + "info: \"\"\n", + "logs: []\n", + "raw_log: 'failed to execute message; message index: 0: Address is not eligible to\n", + " claim airdrop, passport isn''t assigned: execute wasm contract failed'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: E69245763162F42ED68ECF400363DA08F9312829B839EFFEE63A3A3D2E61F460\n", + "\n", + "\n" + ] + } + ], + "source": [ + "def generate_proof_and_claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", + " proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {claim_row[network + \"_address\"]} --amount {claim_row.amount}',\n", + " display_data=display_data)\n", + " proof = proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", + " return execute_bash(\n", + " f'''CLAIM='{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{proof}}}}}' \\\n", + " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " display_data=display_data)\n", + "\n", + "for index, row in tqdm(claims_df.iterrows()):\n", + " if index == 0:\n", + " generate_proof_and_claim(row, network='cosmos', display_data=True)\n", + " else:\n", + " # generate_proof_and_claim(row)\n", + " pass\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From f0c8a576cc8a22a69eee4ecf726dc54cf5542d95 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Tue, 8 Feb 2022 23:05:28 +0800 Subject: [PATCH 09/69] Removed address validation for debug --- contracts/cw-cyber-passport/src/helpers.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 693872c..e5cf5b1 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -144,7 +144,7 @@ pub fn proof_address_cosmos( let hash = Sha256::digest(&adr_36_with_message); let sig: CosmosSignature = from_binary(&signature).unwrap(); - deps.api.addr_validate(&address.clone())?; + // deps.api.addr_validate(&address.clone())?; let (prefix, _, _) = bech32::decode(&address.clone()).unwrap(); let address_sig = pub_key_to_address(&deps, &sig.pub_key, &prefix)?; @@ -173,7 +173,8 @@ fn pub_key_to_address(deps: &Deps, pub_key: &[u8], prefix: &str) -> StdResult Date: Wed, 9 Feb 2022 13:46:41 +0800 Subject: [PATCH 10/69] Add release function to contract tests --- .../gift_and_passport_contracts_testing.ipynb | 606 ++++++++++++++++-- 1 file changed, 535 insertions(+), 71 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index d8ad0b3..2e9d9c9 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -46,12 +46,12 @@ "NETWORK = 'space-pussy-1'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", - "PASSPORT_CODE_ID = str(18)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz'\n", + "PASSPORT_CODE_ID = str(23)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu'\n", "\n", "INIT_GIFT_CONTRACT = False\n", "GIFT_CODE_ID = str(20)\n", - "GIFT_CONTRACT_ADDRESS = 'bostrom1fs5xwhralvmm49jdpy7grazcw8fsftu6d0pwn79xerkak65f83mqkn75jf'\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr'\n", "\n", "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'\n", @@ -102,8 +102,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1477000 john16443172440 QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc \n1 1477000 john16443172440 QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc \n\n ethereum_address \\\n0 0x08d8dd519689b85d36fd318fa88bd5d1586c4d6b \n1 0x58d86dd6b9a3915eb91706f840fa3ff179cd8fa8 \n\n ethereum_private_key \\\n0 0x0954aa3aac2ee8e3aeaed2343bf5bf407107780832d2... \n1 0xc1cb7f73a3d1e049b827c11d0fb16e4f30d27f6f79c6... \n\n bostrom_address \\\n0 bostrom1klp3t8kk7w924tw8et6gj7qtgfap8du0dqa0xe \n1 bostrom1tzj65n3emke5yx2ff93jhau8aennnnpjwpup8r \n\n cosmos_address \\\n0 cosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7 \n1 cosmos1tzj65n3emke5yx2ff93jhau8aennnnpjdjgjey \n\n cosmos_seed \\\n0 guitar travel bench congress dumb ride casino ... \n1 strike silent agent worry dolphin fantasy stoc... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0x4c94599713ce86629ef3975d460429ac01ac0942bc57... \n1 0xe06da8bf81781d90ff52a2d9acf2522376803f238c8e... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Awr+wK9wc00Ur0pATcxG3XKeqm74MoXdL... \n1 {'pub_key': 'AudAUcXCTDqtGHM97PskQ0jmL1A5wkMNl... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXdyK3dLOXdjMDBVcjBwQVRjeEczWE... \n1 eyJwdWJfa2V5IjoiQXVkQVVjWENURHF0R0hNOTdQc2tRMG... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16443172440QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc0x08d8dd519689b85d36fd318fa88bd5d1586c4d6b0x0954aa3aac2ee8e3aeaed2343bf5bf407107780832d2...bostrom1klp3t8kk7w924tw8et6gj7qtgfap8du0dqa0xecosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7guitar travel bench congress dumb ride casino ...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0x4c94599713ce86629ef3975d460429ac01ac0942bc57...{'pub_key': 'Awr+wK9wc00Ur0pATcxG3XKeqm74MoXdL...eyJwdWJfa2V5IjoiQXdyK3dLOXdjMDBVcjBwQVRjeEczWE...
11477000john16443172440QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc0x58d86dd6b9a3915eb91706f840fa3ff179cd8fa80xc1cb7f73a3d1e049b827c11d0fb16e4f30d27f6f79c6...bostrom1tzj65n3emke5yx2ff93jhau8aennnnpjwpup8rcosmos1tzj65n3emke5yx2ff93jhau8aennnnpjdjgjeystrike silent agent worry dolphin fantasy stoc...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xe06da8bf81781d90ff52a2d9acf2522376803f238c8e...{'pub_key': 'AudAUcXCTDqtGHM97PskQ0jmL1A5wkMNl...eyJwdWJfa2V5IjoiQXVkQVVjWENURHF0R0hNOTdQc2tRMG...
\n
" + "text/plain": " amount nickname avatar \\\n0 1477000 john16443837690 QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7 \n1 1477000 john16443837690 QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7 \n\n ethereum_address \\\n0 0xd14df4470b05641c1a3981715c4b71312a62d1a4 \n1 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f \n\n ethereum_private_key \\\n0 0x9a673f0100f478dff2781c6d33ceccd3fec05e89d8b6... \n1 0x1ce7f2e8c7a05dd7d81db0f05e0a6fcb640e5d8ea5c0... \n\n bostrom_address \\\n0 bostrom1dwksu778yh46nh4t2n49029r8e5007x5rhnrd5 \n1 bostrom1uj5d0u55sr2gftkp7r77sy5veedtapls32mxrp \n\n cosmos_address \\\n0 cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn \n1 cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax \n\n cosmos_seed \\\n0 curious hero enforce horn toward galaxy melt g... \n1 enhance attitude large trip mango charge loung... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0xc1b50472fb1ea80d3d92fabc08afd12b1e9940a508cc... \n1 0xb96e6dd252a4192f372d615989366a6f3a317e2947a3... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Aw0de58W6SsUe7X2TSbJs/ysyBVPFyqNb... \n1 {'pub_key': 'Albd6L8FKj/4xK2ap0nIvurF7EpvB4N0/... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXcwZGU1OFc2U3NVZTdYMlRTYkpzL3... \n1 eyJwdWJfa2V5IjoiQWxiZDZMOEZLai80eEsyYXAwbkl2dX... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16443837690QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p70xd14df4470b05641c1a3981715c4b71312a62d1a40x9a673f0100f478dff2781c6d33ceccd3fec05e89d8b6...bostrom1dwksu778yh46nh4t2n49029r8e5007x5rhnrd5cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snncurious hero enforce horn toward galaxy melt g...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xc1b50472fb1ea80d3d92fabc08afd12b1e9940a508cc...{'pub_key': 'Aw0de58W6SsUe7X2TSbJs/ysyBVPFyqNb...eyJwdWJfa2V5IjoiQXcwZGU1OFc2U3NVZTdYMlRTYkpzL3...
11477000john16443837690QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p70x12e463ff81d554b29f3ecfcfd0931bede067ab8f0x1ce7f2e8c7a05dd7d81db0f05e0a6fcb640e5d8ea5c0...bostrom1uj5d0u55sr2gftkp7r77sy5veedtapls32mxrpcosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04axenhance attitude large trip mango charge loung...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xb96e6dd252a4192f372d615989366a6f3a317e2947a3...{'pub_key': 'Albd6L8FKj/4xK2ap0nIvurF7EpvB4N0/...eyJwdWJfa2V5IjoiQWxiZDZMOEZLai80eEsyYXAwbkl2dX...
\n
" }, "execution_count": 2, "metadata": {}, @@ -173,7 +173,7 @@ { "cell_type": "markdown", "source": [ - "### Instantiate Gift Contract" + "### Instantiate Passport Contract" ], "metadata": { "collapsed": false, @@ -190,23 +190,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1fs5xwhralvmm49jdpy7grazcw8fsftu6d0pwn79xerkak65f83mqkn75jf\n" + "Passport contract address: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n" ] } ], "source": [ - "if INIT_GIFT_CONTRACT:\n", + "if INIT_PASSPORT_CONTRACT:\n", " init_output, init_error = execute_bash(\n", - " f'''INIT='{{\"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"passport\":\"{PASSPORT_CONTRACT_ADDRESS}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}' \\\n", - " && cyber tx wasm instantiate {GIFT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", + " f'''INIT='{{\"name\":\"CPT\", \"minter\":\"{os.getenv('WALLET_ADDRESS')}\", \"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"symbol\":\"CPT\"}}' \\\n", + " && cyber tx wasm instantiate {PASSPORT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", " if init_error:\n", " print(init_error)\n", " init_json = json.loads(init_output)\n", - " gift_contract_address = \\\n", + " passport_contract_address = \\\n", " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", "else:\n", - " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", - "print(f'Gift contract address: {gift_contract_address}')" + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" ], "metadata": { "collapsed": false, @@ -217,7 +217,9 @@ }, { "cell_type": "markdown", - "source": [], + "source": [ + "### Instantiate Gift Contract" + ], "metadata": { "collapsed": false, "pycharm": { @@ -233,23 +235,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "Passport contract address: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n" + "Gift contract address: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n" ] } ], "source": [ - "if INIT_PASSPORT_CONTRACT:\n", + "if INIT_GIFT_CONTRACT:\n", " init_output, init_error = execute_bash(\n", - " f'''INIT='{{\"name\":\"CPT\", \"minter\":\"{os.getenv('WALLET_ADDRESS')}\", \"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"symbol\":\"CPT\"}}' \\\n", - " && cyber tx wasm instantiate {PASSPORT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", + " f'''INIT='{{\"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}' \\\n", + " && cyber tx wasm instantiate {GIFT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", " if init_error:\n", " print(init_error)\n", " init_json = json.loads(init_output)\n", - " passport_contract_address = \\\n", + " gift_contract_address = \\\n", " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", "else:\n", - " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", - "print(f'Passport contract address: {passport_contract_address}')" + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" ], "metadata": { "collapsed": false, @@ -258,6 +260,16 @@ } } }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -298,7 +310,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: 8eb0a8b9253b71e260553b20fef948bd9746cdfca4de6ec7a55d297d2d8bf185\n" + "Merkle root: 40a778cd1b7c01441934d02a49f83a2b061e72ff91700e807177119eaebd29ea\n" ] } ], @@ -356,7 +368,7 @@ "output_type": "stream", "text": [ "data:\n", - " merkle_root: 8eb0a8b9253b71e260553b20fef948bd9746cdfca4de6ec7a55d297d2d8bf185\n", + " merkle_root: 40a778cd1b7c01441934d02a49f83a2b061e72ff91700e807177119eaebd29ea\n", "\n" ] } @@ -397,7 +409,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "76397c18e8aa48e09724bf46a5217c5d" + "model_id": "31ca01167f0c440dada76050376402c0" } }, "metadata": {}, @@ -407,13 +419,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"create_passport\":{\"avatar\":\"QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\", \"nickname\":\"john16443172440\"}}' && CONTRACT=\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"create_passport\":{\"avatar\":\"QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\", \"nickname\":\"john16443837690\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "code: 0\n", "codespace: \"\"\n", "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"227940\"\n", + "gas_used: \"237560\"\n", "gas_wanted: \"400000\"\n", - "height: \"1175691\"\n", + "height: \"1188801\"\n", "info: \"\"\n", "logs:\n", "- events:\n", @@ -421,25 +433,25 @@ " - key: particleFrom\n", " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", " - key: particleTo\n", - " value: QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\n", + " value: QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\n", " - key: particleFrom\n", " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", " - key: particleTo\n", - " value: QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\n", + " value: QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\n", " - key: particleFrom\n", - " value: QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\n", + " value: QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\n", " - key: particleTo\n", " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", " - key: particleFrom\n", - " value: QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\n", + " value: QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\n", " - key: particleTo\n", " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", " - key: neuron\n", - " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", " type: cyberlink\n", " - attributes:\n", " - key: _contract_address\n", - " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", " type: execute\n", " - attributes:\n", " - key: action\n", @@ -451,20 +463,20 @@ " type: message\n", " - attributes:\n", " - key: _contract_address\n", - " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", " - key: action\n", " value: mint\n", " - key: minter\n", - " value: bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", " - key: token_id\n", - " value: \"19\"\n", + " value: \"3\"\n", " type: wasm\n", " log: \"\"\n", " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\"},{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\"},{\"key\":\"particleFrom\",\"value\":\"QmTc6XV8KUrvsY1j2TJgXRe6FmZsBtKSr9USKN1vXN9vMZ\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleFrom\",\"value\":\"QmQHSQFjJgssCY169nDzN4Dfi7Gf6eeSFExtMAcGqA8nBc\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"},{\"key\":\"action\",\"value\":\"mint\"},{\"key\":\"minter\",\"value\":\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\"},{\"key\":\"token_id\",\"value\":\"19\"}]}]}]'\n", + "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\"},{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\"},{\"key\":\"particleFrom\",\"value\":\"QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleFrom\",\"value\":\"QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"mint\"},{\"key\":\"minter\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"token_id\",\"value\":\"3\"}]}]}]'\n", "timestamp: \"\"\n", "tx: null\n", - "txhash: 98D906104DB987D69080B4BB3A5DDD5D4FA3D2749BE78828F59D57E2A0DC491D\n", + "txhash: 66E497480E4442D441383D069B08780FC9408B32D1463CBE2BDF088FB82A3699\n", "\n", "\n" ] @@ -513,7 +525,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "553f34c27cc94518af61ebaf641cb2c3" + "model_id": "a4d69b9c4a7b48abb3a2f3fc79e3102b" } }, "metadata": {}, @@ -523,21 +535,160 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"proof_address\":{\"nickname\":\"john16443172440\", \"address\":\"cosmos1tzj65n3emke5yx2ff93jhau8aennnnpjdjgjey\", \"signature\":\"eyJwdWJfa2V5IjoiQXVkQVVjWENURHF0R0hNOTdQc2tRMGptTDFBNXdrTU5sSFp1QXRwNTZyOUEiLCJzaWduYXR1cmUiOiJtQmw2Y1FUSTMzRHF1S211NWFBNHYxblcyQUxLKzdyWWtaM0lXNFVvK3Znc3NYOHJjN0hoV05od0ZnMmZQTXlZbnhMSjJzZVdQczVnbnh6RFNlNlEvQT09In0=\"}}' && CONTRACT=\"bostrom1hxwv9eu9duxkuvluunxlayy9dhzwtm3e84fx47suf5jju04gumsqx7afgz\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 5\n", - "codespace: wasm\n", - "data: \"\"\n", - "gas_used: \"120020\"\n", + "REGISTER='{\"proof_address\":{\"nickname\":\"john16443837690\", \"address\":\"cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn\", \"signature\":\"eyJwdWJfa2V5IjoiQXcwZGU1OFc2U3NVZTdYMlRTYkpzL3lzeUJWUEZ5cU5iQisxMWdqSmVsRlIiLCJzaWduYXR1cmUiOiJGbGlrb1NhK2xxTjgyTjVuQlN1VzVNNHlObHRqWHVKLzIvMjlvYStKVVpGbENVdWQ2VWc3K2pEZHJsUklQd0plWmpCSzUxZHlDcHpwa3hrN1NjVjhuZz09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"206526\"\n", "gas_wanted: \"400000\"\n", - "height: \"1175693\"\n", + "height: \"1188804\"\n", "info: \"\"\n", - "logs: []\n", - "raw_log: 'failed to execute message; message index: 0: Address is not eligible to\n", - " claim airdrop, Generic error: addr_validate errored: invalid Bech32 prefix; expected\n", - " bostrom, got cosmos: execute wasm contract failed'\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: particleFrom\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: particleTo\n", + " value: QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\n", + " - key: particleFrom\n", + " value: QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\n", + " - key: particleTo\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: neuron\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " type: cyberlink\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " - key: action\n", + " value: proof_address\n", + " - key: nickname\n", + " value: john16443837690\n", + " - key: address\n", + " value: cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\"},{\"key\":\"particleFrom\",\"value\":\"QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16443837690\"},{\"key\":\"address\",\"value\":\"cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn\"}]}]}]'\n", "timestamp: \"\"\n", "tx: null\n", - "txhash: 6D5BC257C197C9A2DCCC7E6DF076A3C58149368F0B12333D7281E14ECCEA844C\n", + "txhash: FD98FC29210F2C949DE87CAEBCD74784C02DC3E5E721EADD9044056E7FD551C7\n", + "\n", + "\n", + "REGISTER='{\"proof_address\":{\"nickname\":\"john16443837690\", \"address\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\", \"signature\":\"0xb96e6dd252a4192f372d615989366a6f3a317e2947a3c712499ff9043868f4dc6d7b67af3ff18cb6c199fe91ece397b3f739aa917fe51c90c34c45568fdc3bdd1c\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"207732\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1188805\"\n", + "info: \"\"\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: particleFrom\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: particleTo\n", + " value: QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\n", + " - key: particleFrom\n", + " value: QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\n", + " - key: particleTo\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: neuron\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " type: cyberlink\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " - key: action\n", + " value: proof_address\n", + " - key: nickname\n", + " value: john16443837690\n", + " - key: address\n", + " value: 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\"},{\"key\":\"particleFrom\",\"value\":\"QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16443837690\"},{\"key\":\"address\",\"value\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"}]}]}]'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: ACFDB8E039B412E2974AD640B1CB987209C09F20ED7B747735ECE8BD273BCA0A\n", + "\n", + "\n", + "REGISTER='{\"proof_address\":{\"nickname\":\"john16443837690\", \"address\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\", \"signature\":\"eyJwdWJfa2V5IjoiQWxiZDZMOEZLai80eEsyYXAwbkl2dXJGN0VwdkI0TjAvSEVJR1BMbkFrNUIiLCJzaWduYXR1cmUiOiJyRzU3SHhubjlPVER0aWNyYjZHTmlIYldkL01obXBZQUF1WGZIREdPS1VjTE9GQXY0WVlEMC80K0NNcG4xQ044N2lNT3NqckxjZ3FJSUIzZXcxSmgxdz09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"210182\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1188806\"\n", + "info: \"\"\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: particleFrom\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: particleTo\n", + " value: QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\n", + " - key: particleFrom\n", + " value: QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\n", + " - key: particleTo\n", + " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + " - key: neuron\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " type: cyberlink\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", + " - key: action\n", + " value: proof_address\n", + " - key: nickname\n", + " value: john16443837690\n", + " - key: address\n", + " value: cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\"},{\"key\":\"particleFrom\",\"value\":\"QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16443837690\"},{\"key\":\"address\",\"value\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"}]}]}]'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: EA3E5EB82ED3E23F7158476BF4F306A42F54F991487108E1AA0983F62D86107D\n", "\n", "\n" ] @@ -553,12 +704,11 @@ "\n", "for index, row in tqdm(claims_df.iterrows()):\n", " if index == 1:\n", - " # proof_address(row, display_data=True)\n", + " proof_address(row, display_data=True)\n", " proof_address(row, network='cosmos', display_data=True)\n", " else:\n", - " # proof_address(row)\n", - " # proof_address(row, network='cosmos', display_data=True)\n", - " pass" + " proof_address(row)\n", + " proof_address(row, network='cosmos', display_data=True)" ], "metadata": { "collapsed": false, @@ -589,7 +739,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "5f5df723890448cbaa575a6a8e463eb3" + "model_id": "e4543e90d082466b8907b01fffa083de" } }, "metadata": {}, @@ -599,27 +749,142 @@ "name": "stdout", "output_type": "stream", "text": [ - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7 --amount 1477000\n", + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f --amount 1477000\n", "[\n", - " '98bf79467efe4b717779d06490289e9a793e51221cef4b142cb5adca5ee6381c',\n", - " '4cdd4653d3056ea3d1096c592ae3651deff280154acc987aa535d752dd3f5ffb'\n", + " '7158577a70cf270d0590f1960b5449f1faeaa0d8206de7e2653e6a28b864cd34',\n", + " '84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8'\n", "]\n", "\n", "\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16443172440\", \"gift_claiming_address\":\"cosmos1klp3t8kk7w924tw8et6gj7qtgfap8du0wnfuc7\", \"gift_amount\":\"1477000\", \"proof\":[\"98bf79467efe4b717779d06490289e9a793e51221cef4b142cb5adca5ee6381c\",\"4cdd4653d3056ea3d1096c592ae3651deff280154acc987aa535d752dd3f5ffb\"]}}' && cyber tx wasm execute bostrom1fs5xwhralvmm49jdpy7grazcw8fsftu6d0pwn79xerkak65f83mqkn75jf \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 5\n", - "codespace: wasm\n", - "data: \"\"\n", - "gas_used: \"184240\"\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16443837690\", \"gift_claiming_address\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\", \"gift_amount\":\"1477000\", \"proof\":[\"7158577a70cf270d0590f1960b5449f1faeaa0d8206de7e2653e6a28b864cd34\",\"84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8\"]}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"309029\"\n", "gas_wanted: \"400000\"\n", - "height: \"1175694\"\n", + "height: \"1188809\"\n", "info: \"\"\n", - "logs: []\n", - "raw_log: 'failed to execute message; message index: 0: Address is not eligible to\n", - " claim airdrop, passport isn''t assigned: execute wasm contract failed'\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: receiver\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: amount\n", + " value: 100000boot\n", + " type: coin_received\n", + " - attributes:\n", + " - key: spender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 100000boot\n", + " type: coin_spent\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: recipient\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: sender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 100000boot\n", + " type: transfer\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: action\n", + " value: claim\n", + " - key: original\n", + " value: 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\n", + " - key: target\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: amount\n", + " value: \"28231082\"\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"claim\"},{\"key\":\"original\",\"value\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"},{\"key\":\"target\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"28231082\"}]}]}]'\n", "timestamp: \"\"\n", "tx: null\n", - "txhash: E69245763162F42ED68ECF400363DA08F9312829B839EFFEE63A3A3D2E61F460\n", + "txhash: 34DD4D41089F16A55965E643DF5ABA1EB64D6E1EE1E8F125829A1D23A6111C9C\n", + "\n", + "\n", + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax --amount 1477000\n", + "[\n", + " 'd3a0b28fde88981932000908e10d412191743e31a9c0b6435c47337fc624f4eb',\n", + " '84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8'\n", + "]\n", + "\n", + "\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16443837690\", \"gift_claiming_address\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\", \"gift_amount\":\"1477000\", \"proof\":[\"d3a0b28fde88981932000908e10d412191743e31a9c0b6435c47337fc624f4eb\",\"84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8\"]}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"309112\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1188810\"\n", + "info: \"\"\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: receiver\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: amount\n", + " value: 100000boot\n", + " type: coin_received\n", + " - attributes:\n", + " - key: spender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 100000boot\n", + " type: coin_spent\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: recipient\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: sender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 100000boot\n", + " type: transfer\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: action\n", + " value: claim\n", + " - key: original\n", + " value: cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\n", + " - key: target\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: amount\n", + " value: \"27591123\"\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"claim\"},{\"key\":\"original\",\"value\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"},{\"key\":\"target\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"27591123\"}]}]}]'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: 8EABB8EE3F6D707AEAEF2E7F0B542AA0C393DD8ECA7976493310D1A0D7B1FE37\n", "\n", "\n" ] @@ -636,11 +901,198 @@ " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", - " if index == 0:\n", + " if index == 1:\n", + " generate_proof_and_claim(row, display_data=True)\n", " generate_proof_and_claim(row, network='cosmos', display_data=True)\n", " else:\n", - " # generate_proof_and_claim(row)\n", - " pass\n" + " generate_proof_and_claim(row)\n", + " generate_proof_and_claim(row, network='cosmos')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Release Gift" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "execution_count": 11 + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "bf998ee44ad74c1c8a0e7f8f83e091bc" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CLAIM='{\"release\":{\"gift_address\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"159137\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1188900\"\n", + "info: \"\"\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: receiver\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: amount\n", + " value: 2813108boot\n", + " type: coin_received\n", + " - attributes:\n", + " - key: spender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 2813108boot\n", + " type: coin_spent\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: recipient\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: sender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 2813108boot\n", + " type: transfer\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: action\n", + " value: release\n", + " - key: address\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: gift_address\n", + " value: 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\n", + " - key: stage\n", + " value: \"9\"\n", + " - key: amount\n", + " value: \"2813108\"\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"2813108boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2813108boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2813108boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"release\"},{\"key\":\"address\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"gift_address\",\"value\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"},{\"key\":\"stage\",\"value\":\"9\"},{\"key\":\"amount\",\"value\":\"2813108\"}]}]}]'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: 68CB072A6AAA5926BEAFFE1196B498247E2125F91166C4541A7FE57A6E99E6CA\n", + "\n", + "\n", + "CLAIM='{\"release\":{\"gift_address\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "code: 0\n", + "codespace: \"\"\n", + "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", + "gas_used: \"159204\"\n", + "gas_wanted: \"400000\"\n", + "height: \"1188901\"\n", + "info: \"\"\n", + "logs:\n", + "- events:\n", + " - attributes:\n", + " - key: receiver\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: amount\n", + " value: 2749112boot\n", + " type: coin_received\n", + " - attributes:\n", + " - key: spender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 2749112boot\n", + " type: coin_spent\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " type: execute\n", + " - attributes:\n", + " - key: action\n", + " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", + " - key: module\n", + " value: wasm\n", + " - key: sender\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " type: message\n", + " - attributes:\n", + " - key: recipient\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: sender\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: amount\n", + " value: 2749112boot\n", + " type: transfer\n", + " - attributes:\n", + " - key: _contract_address\n", + " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", + " - key: action\n", + " value: release\n", + " - key: address\n", + " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", + " - key: gift_address\n", + " value: cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\n", + " - key: stage\n", + " value: \"9\"\n", + " - key: amount\n", + " value: \"2749112\"\n", + " type: wasm\n", + " log: \"\"\n", + " msg_index: 0\n", + "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"2749112boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2749112boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2749112boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"release\"},{\"key\":\"address\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"gift_address\",\"value\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"},{\"key\":\"stage\",\"value\":\"9\"},{\"key\":\"amount\",\"value\":\"2749112\"}]}]}]'\n", + "timestamp: \"\"\n", + "tx: null\n", + "txhash: 36E1803CB6680550504FABBF9038B3D5D534D1938C3D6BA68C0A1EC469CFC100\n", + "\n", + "\n" + ] + } + ], + "source": [ + "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", + " return execute_bash(\n", + " f'''CLAIM='{{\"release\":{{\"gift_address\":\"{claim_row[network + \"_address\"]}\"}}}}' \\\n", + " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " display_data=display_data)\n", + "\n", + "for index, row in tqdm(claims_df.iterrows()):\n", + " if index == 1:\n", + " release(row, display_data=True)\n", + " release(row, network='cosmos', display_data=True)\n", + " else:\n", + " release(row)\n", + " release(row, network='cosmos')\n" ], "metadata": { "collapsed": false, @@ -648,6 +1100,18 @@ "name": "#%%\n" } } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } } ], "metadata": { From 34877476ac4ffc7200299af0624252ca25068dd3 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Fri, 11 Feb 2022 16:21:21 +0800 Subject: [PATCH 11/69] Add display of readable contract logs --- .../gift_and_passport_contracts_testing.ipynb | 1813 ++++++++++++----- 1 file changed, 1294 insertions(+), 519 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 2e9d9c9..0dba688 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -35,7 +35,7 @@ "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [1_477_000]\n", + "CLAIM_AMOUNT_LIST = [1_477_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", "COEF_UP = str(20)\n", @@ -51,19 +51,25 @@ "\n", "INIT_GIFT_CONTRACT = False\n", "GIFT_CODE_ID = str(20)\n", - "GIFT_CONTRACT_ADDRESS = 'bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr'\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", "\n", "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'\n", "\n", + "\n", "def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]:\n", " _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate()\n", " if _error:\n", " display_data = True\n", " if display_data:\n", " print(bash_command)\n", - " print(_output.decode('utf-8'))\n", - " print(_error.decode('utf-8'))\n", + " if _output:\n", + " try:\n", + " print(json.dumps(json.loads(_output.decode('utf-8')), indent=4, sort_keys=True))\n", + " except json.JSONDecodeError:\n", + " print(_output)\n", + " if _error:\n", + " print(json.dumps(json.loads(_error.decode('utf-8')), indent=4, sort_keys=True))\n", " return _output.decode('utf-8'), _error.decode('utf-8')" ], "metadata": { @@ -102,8 +108,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1477000 john16443837690 QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7 \n1 1477000 john16443837690 QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7 \n\n ethereum_address \\\n0 0xd14df4470b05641c1a3981715c4b71312a62d1a4 \n1 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f \n\n ethereum_private_key \\\n0 0x9a673f0100f478dff2781c6d33ceccd3fec05e89d8b6... \n1 0x1ce7f2e8c7a05dd7d81db0f05e0a6fcb640e5d8ea5c0... \n\n bostrom_address \\\n0 bostrom1dwksu778yh46nh4t2n49029r8e5007x5rhnrd5 \n1 bostrom1uj5d0u55sr2gftkp7r77sy5veedtapls32mxrp \n\n cosmos_address \\\n0 cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn \n1 cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax \n\n cosmos_seed \\\n0 curious hero enforce horn toward galaxy melt g... \n1 enhance attitude large trip mango charge loung... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0xc1b50472fb1ea80d3d92fabc08afd12b1e9940a508cc... \n1 0xb96e6dd252a4192f372d615989366a6f3a317e2947a3... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Aw0de58W6SsUe7X2TSbJs/ysyBVPFyqNb... \n1 {'pub_key': 'Albd6L8FKj/4xK2ap0nIvurF7EpvB4N0/... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXcwZGU1OFc2U3NVZTdYMlRTYkpzL3... \n1 eyJwdWJfa2V5IjoiQWxiZDZMOEZLai80eEsyYXAwbkl2dX... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16443837690QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p70xd14df4470b05641c1a3981715c4b71312a62d1a40x9a673f0100f478dff2781c6d33ceccd3fec05e89d8b6...bostrom1dwksu778yh46nh4t2n49029r8e5007x5rhnrd5cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snncurious hero enforce horn toward galaxy melt g...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xc1b50472fb1ea80d3d92fabc08afd12b1e9940a508cc...{'pub_key': 'Aw0de58W6SsUe7X2TSbJs/ysyBVPFyqNb...eyJwdWJfa2V5IjoiQXcwZGU1OFc2U3NVZTdYMlRTYkpzL3...
11477000john16443837690QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p70x12e463ff81d554b29f3ecfcfd0931bede067ab8f0x1ce7f2e8c7a05dd7d81db0f05e0a6fcb640e5d8ea5c0...bostrom1uj5d0u55sr2gftkp7r77sy5veedtapls32mxrpcosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04axenhance attitude large trip mango charge loung...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xb96e6dd252a4192f372d615989366a6f3a317e2947a3...{'pub_key': 'Albd6L8FKj/4xK2ap0nIvurF7EpvB4N0/...eyJwdWJfa2V5IjoiQWxiZDZMOEZLai80eEsyYXAwbkl2dX...
\n
" + "text/plain": " amount nickname avatar \\\n0 1477000 john16445669770 QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v \n1 1477000 john16445669771 QmS4pvkZzQcJMDYrMCZKDpBNoWc7HWJnFKHi1dRhmjRrLy \n\n ethereum_address \\\n0 0x31419fd3943c05836fc708ba6e5b7353accdcc82 \n1 0x42931499d6d14a05fb312808123a564e30a66a0c \n\n ethereum_private_key \\\n0 0xb5327df33d01f31e0573c5a4484ac6d6313a3e185c40... \n1 0x578a91df8f628383aa92ae7d2a05a0e557c72672e6cf... \n\n bostrom_address \\\n0 bostrom1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zq7ttxs \n1 bostrom12h0p07w95x5r3xjr03999pvx8535vnemk9d7v3 \n\n cosmos_address \\\n0 cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch \n1 cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk \n\n cosmos_seed \\\n0 layer below poem mom print hidden allow povert... \n1 lunar calm pond lizard want mobile purpose pat... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0xbaf8c4a43f098c1c2a35ea0513edb361c93ef0113f14... \n1 0xc37be3a26e4add0a57fde48d3ba130a126e1195350f0... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AiWoSSCPapVl5ob/LHjlQzQkw+kSLTHbc... \n1 {'pub_key': 'A1QeouLqZzeXmOicT59AYajB0ynmteSes... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRel... \n1 eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYW... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16445669770QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v0x31419fd3943c05836fc708ba6e5b7353accdcc820xb5327df33d01f31e0573c5a4484ac6d6313a3e185c40...bostrom1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zq7ttxscosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcchlayer below poem mom print hidden allow povert...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xbaf8c4a43f098c1c2a35ea0513edb361c93ef0113f14...{'pub_key': 'AiWoSSCPapVl5ob/LHjlQzQkw+kSLTHbc...eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRel...
11477000john16445669771QmS4pvkZzQcJMDYrMCZKDpBNoWc7HWJnFKHi1dRhmjRrLy0x42931499d6d14a05fb312808123a564e30a66a0c0x578a91df8f628383aa92ae7d2a05a0e557c72672e6cf...bostrom12h0p07w95x5r3xjr03999pvx8535vnemk9d7v3cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjklunar calm pond lizard want mobile purpose pat...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xc37be3a26e4add0a57fde48d3ba130a126e1195350f0...{'pub_key': 'A1QeouLqZzeXmOicT59AYajB0ynmteSes...eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYW...
\n
" }, "execution_count": 2, "metadata": {}, @@ -112,10 +118,10 @@ ], "source": [ "claims_list = []\n", - "for _ in range(NUMBER_OF_PARTICIPANTS):\n", - " claim_item = {'amount': CLAIM_AMOUNT_LIST[0],\n", - " 'nickname': NICKNAME_LIST[0],\n", - " 'avatar': AVATAR_CID_LIST[0]}\n", + "for i in range(NUMBER_OF_PARTICIPANTS):\n", + " claim_item = {'amount': CLAIM_AMOUNT_LIST[i],\n", + " 'nickname': NICKNAME_LIST[i],\n", + " 'avatar': AVATAR_CID_LIST[i]}\n", "\n", " # Generate Ethereum wallet\n", " ethereum_wallet = w3.eth.account.create(KEY_PHRASE)\n", @@ -198,7 +204,7 @@ "if INIT_PASSPORT_CONTRACT:\n", " init_output, init_error = execute_bash(\n", " f'''INIT='{{\"name\":\"CPT\", \"minter\":\"{os.getenv('WALLET_ADDRESS')}\", \"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"symbol\":\"CPT\"}}' \\\n", - " && cyber tx wasm instantiate {PASSPORT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", + " && cyber tx wasm instantiate {PASSPORT_CODE_ID} \"$INIT\" --from $WALLET --label \"cybergift passport test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", " if init_error:\n", " print(init_error)\n", " init_json = json.loads(init_output)\n", @@ -235,7 +241,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n" + "Gift contract address: bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\n" ] } ], @@ -260,6 +266,67 @@ } } }, + { + "cell_type": "code", + "execution_count": 26, + "outputs": [], + "source": [ + "def get_contract_name(contract_address: str) -> str:\n", + " if contract_address == gift_contract_address:\n", + " return 'Gift Contract'\n", + " elif contract_address == passport_contract_address:\n", + " return 'Passport Contract'\n", + " elif contract_address == os.getenv('WALLET_ADDRESS'):\n", + " return 'Wallet'\n", + " else:\n", + " return contract_address\n", + "\n", + "\n", + "def parse_contract_execution_json(contract_execution_json: str) -> None:\n", + " for log_item in json.loads(contract_execution_json)['logs']:\n", + " for event_item in log_item['events']:\n", + " print('')\n", + " if event_item['type'] == 'message':\n", + " if len(event_item[\"attributes\"]) == 3:\n", + " print(f'message from {get_contract_name(event_item[\"attributes\"][-1][\"value\"])} {event_item[\"attributes\"][1][\"value\"]} {event_item[\"attributes\"][0][\"value\"]}')\n", + " else:\n", + " print(event_item)\n", + " elif event_item['type'] == 'execute':\n", + " if len(event_item[\"attributes\"]) == 1:\n", + " print(f'execute contract: {get_contract_name(event_item[\"attributes\"][0][\"value\"])}')\n", + " else:\n", + " print(event_item)\n", + " elif event_item['type'] == 'cyberlink':\n", + " print('cyberlinks')\n", + " for i in range(len(event_item['attributes'])//2):\n", + " print(f'\\t{event_item[\"attributes\"][i * 2][\"value\"]} -> {event_item[\"attributes\"][i * 2 + 1][\"value\"]}')\n", + " print(f'\\tneuron: {get_contract_name(event_item[\"attributes\"][-1][\"value\"])}')\n", + " elif event_item['type'] == 'coin_received':\n", + " print('coin_received')\n", + " for attr_item in event_item[\"attributes\"]:\n", + " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", + " elif event_item['type'] == 'coin_spent':\n", + " print('coin_spent')\n", + " for attr_item in event_item[\"attributes\"]:\n", + " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", + " elif event_item['type'] == 'wasm':\n", + " print('wasm')\n", + " for attr_item in event_item[\"attributes\"]:\n", + " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", + " elif event_item['type'] == 'transfer':\n", + " print('transfer')\n", + " for attr_item in event_item[\"attributes\"]:\n", + " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", + " else:\n", + " print(event_item)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [], @@ -284,7 +351,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "outputs": [], "source": [ "root_source_list = [{'address': _item['ethereum_address'],\n", @@ -304,13 +371,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: 40a778cd1b7c01441934d02a49f83a2b061e72ff91700e807177119eaebd29ea\n" + "Merkle root: cec353c5df0b490ab2679ce623deda7205e73280f54a8aaf90e840ba22b1b1c8\n" ] } ], @@ -330,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "outputs": [], "source": [ "root_register_output, root_register_error = \\\n", @@ -361,14 +428,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data:\n", - " merkle_root: 40a778cd1b7c01441934d02a49f83a2b061e72ff91700e807177119eaebd29ea\n", + " merkle_root: cec353c5df0b490ab2679ce623deda7205e73280f54a8aaf90e840ba22b1b1c8\n", "\n" ] } @@ -401,7 +468,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "outputs": [ { "data": { @@ -409,7 +476,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "31ca01167f0c440dada76050376402c0" + "model_id": "e03630b3a83a42fdb5df85519fdb03b8" } }, "metadata": {}, @@ -419,66 +486,116 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"create_passport\":{\"avatar\":\"QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\", \"nickname\":\"john16443837690\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"237560\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188801\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: particleFrom\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: particleTo\n", - " value: QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\n", - " - key: particleFrom\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: particleTo\n", - " value: QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\n", - " - key: particleFrom\n", - " value: QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\n", - " - key: particleTo\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: particleFrom\n", - " value: QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\n", - " - key: particleTo\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: neuron\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: cyberlink\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " - key: action\n", - " value: mint\n", - " - key: minter\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " - key: token_id\n", - " value: \"3\"\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\"},{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\"},{\"key\":\"particleFrom\",\"value\":\"QmPabJn9MLWtUd545K1dV8NCrqdY92L34BhwEWHPDTDvNE\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleFrom\",\"value\":\"QmXuaeDdSqmhn2ABzRyZ5ikSScNSEnNRj2y7Xg5rkoX5p7\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"mint\"},{\"key\":\"minter\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"token_id\",\"value\":\"3\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: 66E497480E4442D441383D069B08780FC9408B32D1463CBE2BDF088FB82A3699\n", - "\n", - "\n" + "REGISTER='{\"create_passport\":{\"avatar\":\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\", \"nickname\":\"john16445669770\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"237661\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224329\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"cyberlink\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"mint\"\n", + " },\n", + " {\n", + " \"key\": \"minter\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " },\n", + " {\n", + " \"key\": \"token_id\",\n", + " \"value\": \"11\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"11\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"9F8DBAE2338C4594A11B5A71CBEAC2DDFA7BE9EB0D782C7BF0CC397E1665B1FD\"\n", + "}\n" ] } ], @@ -487,12 +604,12 @@ " return execute_bash(\n", " f'''REGISTER='{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}' \\\n", " && CONTRACT=\"{passport_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", " if index == 0:\n", - " create_passport(row, display_data=True)\n", + " create_passport_json, _ = create_passport(row, display_data=True)\n", " else:\n", " create_passport(row)" ], @@ -503,6 +620,44 @@ } } }, + { + "cell_type": "code", + "execution_count": 27, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "cyberlinks\n", + "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\n", + "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\n", + "\tQmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + "\tQmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + "\tneuron: Passport Contract\n", + "\n", + "execute contract: Passport Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: mint\n", + "\tminter: Passport Contract\n", + "\ttoken_id: 11\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(create_passport_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -517,7 +672,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "outputs": [ { "data": { @@ -525,7 +680,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "a4d69b9c4a7b48abb3a2f3fc79e3102b" + "model_id": "91cc53b2e0754ccb9e032c03b38d4c46" } }, "metadata": {}, @@ -535,162 +690,288 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"proof_address\":{\"nickname\":\"john16443837690\", \"address\":\"cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn\", \"signature\":\"eyJwdWJfa2V5IjoiQXcwZGU1OFc2U3NVZTdYMlRTYkpzL3lzeUJWUEZ5cU5iQisxMWdqSmVsRlIiLCJzaWduYXR1cmUiOiJGbGlrb1NhK2xxTjgyTjVuQlN1VzVNNHlObHRqWHVKLzIvMjlvYStKVVpGbENVdWQ2VWc3K2pEZHJsUklQd0plWmpCSzUxZHlDcHpwa3hrN1NjVjhuZz09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"206526\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188804\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: particleFrom\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: particleTo\n", - " value: QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\n", - " - key: particleFrom\n", - " value: QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\n", - " - key: particleTo\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: neuron\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: cyberlink\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " - key: action\n", - " value: proof_address\n", - " - key: nickname\n", - " value: john16443837690\n", - " - key: address\n", - " value: cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\"},{\"key\":\"particleFrom\",\"value\":\"QmPcvmPVMddRnUVMCZM4tDcm6SbpRdrTMQdWJSfRYBsz3g\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16443837690\"},{\"key\":\"address\",\"value\":\"cosmos1dwksu778yh46nh4t2n49029r8e5007x5qy8snn\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: FD98FC29210F2C949DE87CAEBCD74784C02DC3E5E721EADD9044056E7FD551C7\n", - "\n", - "\n", - "REGISTER='{\"proof_address\":{\"nickname\":\"john16443837690\", \"address\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\", \"signature\":\"0xb96e6dd252a4192f372d615989366a6f3a317e2947a3c712499ff9043868f4dc6d7b67af3ff18cb6c199fe91ece397b3f739aa917fe51c90c34c45568fdc3bdd1c\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"207732\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188805\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: particleFrom\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: particleTo\n", - " value: QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\n", - " - key: particleFrom\n", - " value: QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\n", - " - key: particleTo\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: neuron\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: cyberlink\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " - key: action\n", - " value: proof_address\n", - " - key: nickname\n", - " value: john16443837690\n", - " - key: address\n", - " value: 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\"},{\"key\":\"particleFrom\",\"value\":\"QmNr38b1jTdejyFbSFmiqYXMeULUfx11KQpNUgYaKd1Roq\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16443837690\"},{\"key\":\"address\",\"value\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: ACFDB8E039B412E2974AD640B1CB987209C09F20ED7B747735ECE8BD273BCA0A\n", - "\n", - "\n", - "REGISTER='{\"proof_address\":{\"nickname\":\"john16443837690\", \"address\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\", \"signature\":\"eyJwdWJfa2V5IjoiQWxiZDZMOEZLai80eEsyYXAwbkl2dXJGN0VwdkI0TjAvSEVJR1BMbkFrNUIiLCJzaWduYXR1cmUiOiJyRzU3SHhubjlPVER0aWNyYjZHTmlIYldkL01obXBZQUF1WGZIREdPS1VjTE9GQXY0WVlEMC80K0NNcG4xQ044N2lNT3NqckxjZ3FJSUIzZXcxSmgxdz09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"210182\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188806\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: particleFrom\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: particleTo\n", - " value: QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\n", - " - key: particleFrom\n", - " value: QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\n", - " - key: particleTo\n", - " value: QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - " - key: neuron\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: cyberlink\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n", - " - key: action\n", - " value: proof_address\n", - " - key: nickname\n", - " value: john16443837690\n", - " - key: address\n", - " value: cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"cyberlink\",\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"particleTo\",\"value\":\"QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\"},{\"key\":\"particleFrom\",\"value\":\"QmRwoL2x25oP4DfJBZkarVhtT5Q1EWtjr2ri5pcvSvn8So\"},{\"key\":\"particleTo\",\"value\":\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"},{\"key\":\"neuron\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16443837690\"},{\"key\":\"address\",\"value\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: EA3E5EB82ED3E23F7158476BF4F306A42F54F991487108E1AA0983F62D86107D\n", - "\n", - "\n" + "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669770\", \"address\":\"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\", \"signature\":\"eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRelFrdytrU0xUSGJjdVR2emp5TStTVUsiLCJzaWduYXR1cmUiOiJJZUt0WmRLSE1uKy9uV0V5YkVLWjBTbS8yL0x0YVIzNGFaQzY2emZ1Q1hBTW5mN1pYV2hXUlgzYWNEbkNFVk1jVEZYVUQ2Z2NqdnNZdndCeG95NFN5QT09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"206533\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224332\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"cyberlink\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"proof_address\"\n", + " },\n", + " {\n", + " \"key\": \"nickname\",\n", + " \"value\": \"john16445669770\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669770\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"43A6ED5B08EAC2D508376660D8F2BF8E58F642271FC7E2B91B1A85ACD4CBDD78\"\n", + "}\n", + "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669771\", \"address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\", \"signature\":\"0xc37be3a26e4add0a57fde48d3ba130a126e1195350f03354b4f989960eb3e3196f272979d3da106b731fa38e3a12572ecae121fdc3899ecf846819d04b94b0b51b\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"204108\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224333\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"cyberlink\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"proof_address\"\n", + " },\n", + " {\n", + " \"key\": \"nickname\",\n", + " \"value\": \"john16445669771\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669771\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"F98E65A9189B34C22B362D1CE4A7E2BAB6BC896C1E31B1CEA938FBFCE8225A4A\"\n", + "}\n", + "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669771\", \"address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\", \"signature\":\"eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYWpCMHlubXRlU2VzUnVNK3E3MHl5ckYiLCJzaWduYXR1cmUiOiJibzJQWGMxNmZRTW9JTUxmM0FWWGhKcWc0TGdFMWc5SVZtdUxQN2RqWnRKM0FUa0VvTzVlckxNUjZtNXYyY3ZENEU1NDd2RE9sU1M3aCtQa3pWWDhJZz09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"206533\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224334\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"cyberlink\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"proof_address\"\n", + " },\n", + " {\n", + " \"key\": \"nickname\",\n", + " \"value\": \"john16445669771\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669771\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"9C6A4995EEEE4201DA9F4137DFBC5EEEF4847A673AB8AC83E155813DD0F3AE49\"\n", + "}\n" ] } ], @@ -699,13 +980,13 @@ " return execute_bash(\n", " f'''REGISTER='{{\"proof_address\":{{\"nickname\":\"{claim_row[\"nickname\"]}\", \"address\":\"{claim_row[network + \"_address\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}' \\\n", " && CONTRACT=\"{passport_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", " if index == 1:\n", - " proof_address(row, display_data=True)\n", - " proof_address(row, network='cosmos', display_data=True)\n", + " proof_ethereum_address_json, _ = proof_address(row, display_data=True)\n", + " proof_cosmos_address_json, _ = proof_address(row, network='cosmos', display_data=True)\n", " else:\n", " proof_address(row)\n", " proof_address(row, network='cosmos', display_data=True)" @@ -717,6 +998,78 @@ } } }, + { + "cell_type": "code", + "execution_count": 28, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "cyberlinks\n", + "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\n", + "\tQmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + "\tneuron: Passport Contract\n", + "\n", + "execute contract: Passport Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16445669771\n", + "\taddress: 0x42931499d6d14a05fb312808123a564e30a66a0c\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(proof_ethereum_address_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 29, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "cyberlinks\n", + "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\n", + "\tQmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", + "\tneuron: Passport Contract\n", + "\n", + "execute contract: Passport Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16445669771\n", + "\taddress: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(proof_cosmos_address_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -731,7 +1084,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 15, "outputs": [ { "data": { @@ -739,7 +1092,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "e4543e90d082466b8907b01fffa083de" + "model_id": "0f9fede9ba2145a4b04246aac54c4303" } }, "metadata": {}, @@ -749,144 +1102,242 @@ "name": "stdout", "output_type": "stream", "text": [ - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f --amount 1477000\n", - "[\n", - " '7158577a70cf270d0590f1960b5449f1faeaa0d8206de7e2653e6a28b864cd34',\n", - " '84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8'\n", - "]\n", - "\n", - "\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16443837690\", \"gift_claiming_address\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\", \"gift_amount\":\"1477000\", \"proof\":[\"7158577a70cf270d0590f1960b5449f1faeaa0d8206de7e2653e6a28b864cd34\",\"84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8\"]}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"309029\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188809\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: receiver\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: amount\n", - " value: 100000boot\n", - " type: coin_received\n", - " - attributes:\n", - " - key: spender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 100000boot\n", - " type: coin_spent\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: recipient\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: sender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 100000boot\n", - " type: transfer\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: action\n", - " value: claim\n", - " - key: original\n", - " value: 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\n", - " - key: target\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: amount\n", - " value: \"28231082\"\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"claim\"},{\"key\":\"original\",\"value\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"},{\"key\":\"target\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"28231082\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: 34DD4D41089F16A55965E643DF5ABA1EB64D6E1EE1E8F125829A1D23A6111C9C\n", - "\n", - "\n", - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax --amount 1477000\n", - "[\n", - " 'd3a0b28fde88981932000908e10d412191743e31a9c0b6435c47337fc624f4eb',\n", - " '84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8'\n", - "]\n", - "\n", - "\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16443837690\", \"gift_claiming_address\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\", \"gift_amount\":\"1477000\", \"proof\":[\"d3a0b28fde88981932000908e10d412191743e31a9c0b6435c47337fc624f4eb\",\"84245b794cadde296c0a5aa88e38776509cdf2ddd2971b957908cd55c1ebd8b8\"]}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"309112\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188810\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: receiver\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: amount\n", - " value: 100000boot\n", - " type: coin_received\n", - " - attributes:\n", - " - key: spender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 100000boot\n", - " type: coin_spent\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: recipient\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: sender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 100000boot\n", - " type: transfer\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: action\n", - " value: claim\n", - " - key: original\n", - " value: cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\n", - " - key: target\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: amount\n", - " value: \"27591123\"\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"100000boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"claim\"},{\"key\":\"original\",\"value\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"},{\"key\":\"target\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"27591123\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: 8EABB8EE3F6D707AEAEF2E7F0B542AA0C393DD8ECA7976493310D1A0D7B1FE37\n", - "\n", - "\n" + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x42931499d6d14a05fb312808123a564e30a66a0c --amount 1477000\n", + "b\"[\\n 'b9bf7453f7b3442c281fd3c3ffa2aec387395682c0d16cb6800f8ca06c407e44',\\n '8b39367c8d583dc84ff9adf8dc57424b28520bb7dfd3e2b001370c22b5d12626'\\n]\\n\"\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16445669771\", \"gift_claiming_address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\", \"gift_amount\":\"1477000\", \"proof\":[\"b9bf7453f7b3442c281fd3c3ffa2aec387395682c0d16cb6800f8ca06c407e44\",\"8b39367c8d583dc84ff9adf8dc57424b28520bb7dfd3e2b001370c22b5d12626\"]}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"308419\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224337\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"claim\"\n", + " },\n", + " {\n", + " \"key\": \"original\",\n", + " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", + " },\n", + " {\n", + " \"key\": \"target\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"28885541\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"28885541\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"3F3C36A7051F081F668E69C878654A731DB657A3E0EF973DB55BF9A58CA33EE6\"\n", + "}\n", + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk --amount 1477000\n", + "b\"[\\n '6cd0edca780f0eaa32b8def55e83445bc56381aa2a7bac2d08680a7318c1fc88',\\n '3ffd6f13d7134caab82a3a5bade2fb3f22d6c40153d7ee1560b6a458b70f3bc1'\\n]\\n\"\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16445669771\", \"gift_claiming_address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\", \"gift_amount\":\"1477000\", \"proof\":[\"6cd0edca780f0eaa32b8def55e83445bc56381aa2a7bac2d08680a7318c1fc88\",\"3ffd6f13d7134caab82a3a5bade2fb3f22d6c40153d7ee1560b6a458b70f3bc1\"]}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"308810\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224338\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"claim\"\n", + " },\n", + " {\n", + " \"key\": \"original\",\n", + " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", + " },\n", + " {\n", + " \"key\": \"target\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"28231082\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"28231082\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"4CE9DC78AEA4A566A60884AF618CFAFE5FF1C3B9804354603E9C2BE2623EA574\"\n", + "}\n" ] } ], @@ -897,13 +1348,13 @@ " proof = proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", " return execute_bash(\n", " f'''CLAIM='{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{proof}}}}}' \\\n", - " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", " if index == 1:\n", - " generate_proof_and_claim(row, display_data=True)\n", - " generate_proof_and_claim(row, network='cosmos', display_data=True)\n", + " claim_ethereum_json, _ = generate_proof_and_claim(row, display_data=True)\n", + " claim_cosmos_json, _ = generate_proof_and_claim(row, network='cosmos', display_data=True)\n", " else:\n", " generate_proof_and_claim(row)\n", " generate_proof_and_claim(row, network='cosmos')" @@ -915,6 +1366,96 @@ } } }, + { + "cell_type": "code", + "execution_count": 30, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin_received\n", + "\treceiver: Wallet\n", + "\tamount: 100000boot\n", + "\n", + "coin_spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x42931499d6d14a05fb312808123a564e30a66a0c\n", + "\ttarget: Wallet\n", + "\tamount: 28885541\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(claim_ethereum_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 31, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin_received\n", + "\treceiver: Wallet\n", + "\tamount: 100000boot\n", + "\n", + "coin_spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n", + "\ttarget: Wallet\n", + "\tamount: 28231082\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(claim_cosmos_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -930,7 +1471,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 18, "outputs": [ { "data": { @@ -938,7 +1479,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "bf998ee44ad74c1c8a0e7f8f83e091bc" + "model_id": "8de1eda2e0714816b3d244b1894c61d8" } }, "metadata": {}, @@ -948,134 +1489,246 @@ "name": "stdout", "output_type": "stream", "text": [ - "CLAIM='{\"release\":{\"gift_address\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"159137\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188900\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: receiver\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: amount\n", - " value: 2813108boot\n", - " type: coin_received\n", - " - attributes:\n", - " - key: spender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 2813108boot\n", - " type: coin_spent\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: recipient\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: sender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 2813108boot\n", - " type: transfer\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: action\n", - " value: release\n", - " - key: address\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: gift_address\n", - " value: 0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\n", - " - key: stage\n", - " value: \"9\"\n", - " - key: amount\n", - " value: \"2813108\"\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"2813108boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2813108boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2813108boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"release\"},{\"key\":\"address\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"gift_address\",\"value\":\"0x12e463ff81d554b29f3ecfcfd0931bede067ab8f\"},{\"key\":\"stage\",\"value\":\"9\"},{\"key\":\"amount\",\"value\":\"2813108\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: 68CB072A6AAA5926BEAFFE1196B498247E2125F91166C4541A7FE57A6E99E6CA\n", - "\n", - "\n", - "CLAIM='{\"release\":{\"gift_address\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"}}' && cyber tx wasm execute bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "code: 0\n", - "codespace: \"\"\n", - "data: 0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\n", - "gas_used: \"159204\"\n", - "gas_wanted: \"400000\"\n", - "height: \"1188901\"\n", - "info: \"\"\n", - "logs:\n", - "- events:\n", - " - attributes:\n", - " - key: receiver\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: amount\n", - " value: 2749112boot\n", - " type: coin_received\n", - " - attributes:\n", - " - key: spender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 2749112boot\n", - " type: coin_spent\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " type: execute\n", - " - attributes:\n", - " - key: action\n", - " value: /cosmwasm.wasm.v1.MsgExecuteContract\n", - " - key: module\n", - " value: wasm\n", - " - key: sender\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " type: message\n", - " - attributes:\n", - " - key: recipient\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: sender\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: amount\n", - " value: 2749112boot\n", - " type: transfer\n", - " - attributes:\n", - " - key: _contract_address\n", - " value: bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\n", - " - key: action\n", - " value: release\n", - " - key: address\n", - " value: bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\n", - " - key: gift_address\n", - " value: cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\n", - " - key: stage\n", - " value: \"9\"\n", - " - key: amount\n", - " value: \"2749112\"\n", - " type: wasm\n", - " log: \"\"\n", - " msg_index: 0\n", - "raw_log: '[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"amount\",\"value\":\"2749112boot\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2749112boot\"}]},{\"type\":\"execute\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"sender\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"amount\",\"value\":\"2749112boot\"}]},{\"type\":\"wasm\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1hn6633cdt7xh28psanrpe6w0sask3ga6rfs02082hes0epw6r2wsn5r6nr\"},{\"key\":\"action\",\"value\":\"release\"},{\"key\":\"address\",\"value\":\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"},{\"key\":\"gift_address\",\"value\":\"cosmos1uj5d0u55sr2gftkp7r77sy5veedtaplsje04ax\"},{\"key\":\"stage\",\"value\":\"9\"},{\"key\":\"amount\",\"value\":\"2749112\"}]}]}]'\n", - "timestamp: \"\"\n", - "tx: null\n", - "txhash: 36E1803CB6680550504FABBF9038B3D5D534D1938C3D6BA68C0A1EC469CFC100\n", - "\n", - "\n" + "CLAIM='{\"release\":{\"gift_address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\"}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"159137\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224341\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2878554boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2878554boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2878554boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"release\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"gift_address\",\n", + " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", + " },\n", + " {\n", + " \"key\": \"stage\",\n", + " \"value\": \"9\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2878554\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"A1E6B341DB43CF410B32F31BC46EA6166E08D7F92CF7CC83A7F74DDC7FC48579\"\n", + "}\n", + "CLAIM='{\"release\":{\"gift_address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"159205\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1224342\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2813108boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2813108boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2813108boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"release\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"gift_address\",\n", + " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", + " },\n", + " {\n", + " \"key\": \"stage\",\n", + " \"value\": \"9\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"2813108\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"53BE9FF78C682BD88B1808A7BC71B6B86B9A91BB2CF3F779CBD87EB65A98A293\"\n", + "}\n" ] } ], @@ -1083,13 +1736,13 @@ "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", " f'''CLAIM='{{\"release\":{{\"gift_address\":\"{claim_row[network + \"_address\"]}\"}}}}' \\\n", - " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", " if index == 1:\n", - " release(row, display_data=True)\n", - " release(row, network='cosmos', display_data=True)\n", + " release_ethereum_json, _ = release(row, display_data=True)\n", + " release_cosmos_json, _ = release(row, network='cosmos', display_data=True)\n", " else:\n", " release(row)\n", " release(row, network='cosmos')\n" @@ -1101,6 +1754,128 @@ } } }, + { + "cell_type": "code", + "execution_count": 32, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin_received\n", + "\treceiver: Wallet\n", + "\tamount: 2878554boot\n", + "\n", + "coin_spent\n", + "\tspender: Gift Contract\n", + "\tamount: 2878554boot\n", + "\n", + "execute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 2878554boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: Wallet\n", + "\tgift_address: 0x42931499d6d14a05fb312808123a564e30a66a0c\n", + "\tstage: 9\n", + "\tamount: 2878554\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(release_ethereum_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 33, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin_received\n", + "\treceiver: Wallet\n", + "\tamount: 2813108boot\n", + "\n", + "coin_spent\n", + "\tspender: Gift Contract\n", + "\tamount: 2813108boot\n", + "\n", + "execute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 2813108boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: Wallet\n", + "\tgift_address: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n", + "\tstage: 9\n", + "\tamount: 2813108\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(release_cosmos_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 34, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first release: 2_878_554\n", + "coef: 19.56\n" + ] + } + ], + "source": [ + "# gift_address 0x30f99350a8b2e4acf87cdb197e347fb434fe0856\n", + "# gift amount 1_477_000\n", + "# first claim 28_885_541\n", + "# claim transfer 100_000\n", + "# first release 2_878_554\n", + "\n", + "print(f'first release: {int((28_885_541 - 100_000) * 0.1):>_}')\n", + "print(f'first coef: {28_885_541 / 1_477_000:>,.2f}')\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "code", "execution_count": null, From 70394cb5a43cc5c25f04e79165f171b01cd6e933 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 10 Feb 2022 15:07:51 +0800 Subject: [PATCH 12/69] Added passport owner address to the message --- contracts/cw-cyber-passport/src/execute.rs | 4 +-- contracts/cw-cyber-passport/src/helpers.rs | 31 ++++++++++++---------- contracts/cw-cyber-passport/src/tests.rs | 12 ++++++--- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 2922b08..d840bf6 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -293,12 +293,12 @@ pub fn execute_proof_address( let proof_res:bool; if decode_address(&address).is_err() { - proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), CONSTITUTION.into(), signature) + proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), info.sender.to_string(), CONSTITUTION.into(), signature) .map_err(|err| ContractError::IsNotEligible { msg: err.to_string(), })?; } else { - proof_res = proof_address_ethereum(deps.as_ref(), address.clone(), CONSTITUTION.into(), signature) + proof_res = proof_address_ethereum(deps.as_ref(), address.clone(), info.sender.to_string(),CONSTITUTION.into(), signature) .map_err(|err| ContractError::IsNotEligible { msg: err.to_string(), })?; diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index e5cf5b1..f9518e2 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -1,4 +1,5 @@ use std::convert::TryInto; +use std::ops::Add; use bech32::{ToBase32, Variant}; use cosmwasm_std::{Addr, Binary, Deps, from_binary, StdError, StdResult}; @@ -15,14 +16,17 @@ use crate::error::ContractError; pub fn proof_address_ethereum( deps: Deps, address: String, + passport_owner: String, message: String, signature: Binary, ) -> Result { let mut hasher = Keccak256::new(); + let msg = passport_owner.add(":").add(&message); + println!("msg: {}", msg); // TODO add address:particle as sign message, where address is passport holder address - hasher.update(format!("\x19Ethereum Signed Message:\n{}", message.len())); - hasher.update(message); + hasher.update(format!("\x19Ethereum Signed Message:\n{}", msg.len())); + hasher.update(msg); let hash = hasher.finalize(); let sig = decode_signature(&signature.clone().to_string())?; @@ -111,10 +115,11 @@ pub fn decode_signature(input: &str) -> StdResult<[u8; 65]> { pub fn proof_address_cosmos( deps: Deps, address: String, - _message: String, + passport_owner: String, + message: String, signature: Binary, ) -> Result { - // build ADR-36 tx, not supported by cosmwasm because json imports float operations inside + // TODO clean up before release // let obj = json!( // { // "account_number":"0", @@ -132,16 +137,14 @@ pub fn proof_address_cosmos( // "sequence":"0" // }); - // message already included - // TODO add address:particle as sign message, where address is passport holder address - let mut adr_36_with_message:Vec = vec![123,34,97,99,99,111,117,110,116,95,110,117,109,98,101,114,34,58,34,48,34,44,34,99,104,97,105,110,95,105,100,34,58,34,34,44,34,102,101,101,34,58,123,34,97,109,111,117,110,116,34,58,91,93,44,34,103,97,115,34,58,34,48,34,125,44,34,109,101,109,111,34,58,34,34,44,34,109,115,103,115,34,58,91,123,34,116,121,112,101,34,58,34,115,105,103,110,47,77,115,103,83,105,103,110,68,97,116,97,34,44,34,118,97,108,117,101,34,58,123,34,100,97,116,97,34,58,34,85,87,49,83,87,68,104,120,87,87,100,108,87,109,57,90,84,84,78,78,78,88,112,54,85,87,70,88,82,88,66,87,82,109,82,119,97,87,52,50,82,110,90,87,87,72,90,119,78,108,74,81,85,85,115,122,98,51,86,109,86,103,61,61,34,44,34,115,105,103,110,101,114,34,58,34]; - let mut adr_36_postfix:Vec = vec![34,125,125,93,44,34,115,101,113,117,101,110,99,101,34,58,34,48,34,125]; - adr_36_with_message.append(&mut address.clone().as_bytes().to_vec()); - adr_36_with_message.append(&mut adr_36_postfix); - - // println!("raw {:?}", adr_36_prefix_with_message.as_slice()); - // println!("json {:?}", obj.to_string().as_bytes()); - let hash = Sha256::digest(&adr_36_with_message); + let msg = passport_owner.add(":").add(&message); + let mut msg_adr36:Vec = vec![123,34,97,99,99,111,117,110,116,95,110,117,109,98,101,114,34,58,34,48,34,44,34,99,104,97,105,110,95,105,100,34,58,34,34,44,34,102,101,101,34,58,123,34,97,109,111,117,110,116,34,58,91,93,44,34,103,97,115,34,58,34,48,34,125,44,34,109,101,109,111,34,58,34,34,44,34,109,115,103,115,34,58,91,123,34,116,121,112,101,34,58,34,115,105,103,110,47,77,115,103,83,105,103,110,68,97,116,97,34,44,34,118,97,108,117,101,34,58,123,34,100,97,116,97,34,58,34]; + msg_adr36.append(&mut base64::encode(msg).as_bytes().to_vec()); + msg_adr36.append(&mut vec![34,44,34,115,105,103,110,101,114,34,58,34]); + msg_adr36.append(&mut address.clone().as_bytes().to_vec()); + msg_adr36.append(&mut vec![34,125,125,93,44,34,115,101,113,117,101,110,99,101,34,58,34,48,34,125]); + + let hash = Sha256::digest(&msg_adr36); let sig: CosmosSignature = from_binary(&signature).unwrap(); // deps.api.addr_validate(&address.clone())?; diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 819393c..1425c67 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -105,7 +105,8 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), + // signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), + signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), }; let info = mock_info(&citizen, &[]); @@ -121,7 +122,8 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), - signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), + // signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), }; let info = mock_info(&citizen, &[]); @@ -142,7 +144,8 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), + // signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), + signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), }; let info = mock_info(&citizen, &[]); @@ -153,7 +156,8 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), - signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), + // signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), }; let info = mock_info(&citizen, &[]); From f88345c9901d1f9bee82a9e765e6bafef6563d8d Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 10 Feb 2022 16:17:55 +0800 Subject: [PATCH 13/69] Added active passport mapping --- contracts/cw-cyber-passport/src/contract.rs | 6 ++- contracts/cw-cyber-passport/src/execute.rs | 48 ++++++++++++++++++++- contracts/cw-cyber-passport/src/helpers.rs | 1 - contracts/cw-cyber-passport/src/msg.rs | 2 + contracts/cw-cyber-passport/src/query.rs | 11 ++++- contracts/cw-cyber-passport/src/state.rs | 4 +- contracts/cw-cyber-passport/src/tests.rs | 3 +- 7 files changed, 67 insertions(+), 8 deletions(-) diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index b7bb6b0..01d7d58 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -4,9 +4,9 @@ use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, StdResult, to_binary use cyber_std::CyberMsgWrapper; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_minter, execute_set_owner, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; -use crate::query::{query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; +use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; type Response = cosmwasm_std::Response; @@ -43,6 +43,7 @@ pub fn execute( ExecuteMsg::RemoveAddress {nickname, address } => execute_remove_address(deps, env, info, nickname, address), ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), + ExecuteMsg::SetActive { token_id } => execute_set_active(deps, env, info, token_id), // Overwrite CW721 methods ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), @@ -65,6 +66,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::PassportByNickname {nickname} => to_binary(&query_passport_by_nickname(deps, nickname)?), QueryMsg::MetadataByNickname {nickname} => to_binary(&query_metadata_by_nickname(deps, nickname)?), QueryMsg::PassportSigned {nickname, address} => to_binary(&query_passort_signed(deps, nickname, address)?), + QueryMsg::ActivePassport { address } => to_binary(&query_active_passport(deps, address)?), // CW721 methods _ => PassportContract::default().query(deps, env, msg.into()), } diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index d840bf6..ec1f99f 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -15,7 +15,7 @@ use cyber_std::{ use crate::error::ContractError; use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address}; -use crate::state::{AddressPortID, Extension, NICKNAMES, PassportContract, PassportMetadata, PORTID}; +use crate::state::{ACTIVE, AddressPortID, Extension, NICKNAMES, PassportContract, PassportMetadata, PORTID}; use crate::state::{Config, CONFIG}; type Response = cosmwasm_std::Response; @@ -92,11 +92,15 @@ pub fn execute_create_passport( deps.storage, &nickname, &AddressPortID{ - address: info.sender, + address: info.clone().sender, portid: last_portid.to_string() } )?; + if !ACTIVE.has(deps.storage, &info.clone().sender) { + ACTIVE.save(deps.storage, &info.clone().sender, &last_portid.to_string())?; + } + // // let sub = SubMsg::reply_on_success(msg, CYBERLINK_ID).with_gas_limit(128_000); // let response = cw721_contract.mint(deps, env, info, mint_msg)?; // // https://github.com/cybercongress/go-cyber/blob/main/x/graph/types/errors.go#L8 @@ -461,6 +465,13 @@ pub fn execute_transfer_nft( } )?; + if ACTIVE.has(deps.storage, &info.clone().sender) { + let active = ACTIVE.load(deps.storage, &info.clone().sender)?; + if active == token_id { + ACTIVE.remove(deps.storage, &info.clone().sender); + } + } + let nick_particle = _prepare_particle(nickname.clone()); let avatar_particle = _check_particle(avatar.clone())?; let address_particle = _prepare_particle(info.clone().sender.into()); @@ -521,6 +532,13 @@ pub fn execute_send_nft( None => return Err(ContractError::TokenNotFound {}), })?; + if ACTIVE.has(deps.storage, &info.clone().sender) { + let active = ACTIVE.load(deps.storage, &info.clone().sender)?; + if active == token_id { + ACTIVE.remove(deps.storage, &info.clone().sender); + } + } + // TODO think about contract as passport holder (cyberlinks/nickname?) let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; @@ -545,6 +563,13 @@ pub fn execute_burn( let nick_particle = _prepare_particle(token_info.clone().extension.nickname); let cyberhole_particle = _prepare_particle("cyberhole".into()); + if ACTIVE.has(deps.storage, &info.clone().sender) { + let active = ACTIVE.load(deps.storage, &info.clone().sender)?; + if active == token_id { + ACTIVE.remove(deps.storage, &info.clone().sender); + } + } + // avatar <-> cyberhole <-> nickname // NOTE if one of cyberlinks from set is exist it will revert whole message and other links // TODO split in separate submessages? @@ -623,6 +648,25 @@ pub fn execute_set_owner( ])) } +pub fn execute_set_active( + deps: DepsMut, + env: Env, + info: MessageInfo, + token_id: String, +) -> Result { + let cw721_contract = PassportContract::default(); + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env, token_id.clone(), false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + ACTIVE.save(deps.storage, &info.clone().sender, &token_id.clone())?; + Ok(Response::new().add_attributes(vec![ + attr("action", "set_active"), + attr("address", info.sender.to_string()), + attr("token_id", token_id) + ])) +} + pub fn try_migrate( deps: DepsMut, version: String, diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index f9518e2..7b71de7 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -23,7 +23,6 @@ pub fn proof_address_ethereum( let mut hasher = Keccak256::new(); let msg = passport_owner.add(":").add(&message); - println!("msg: {}", msg); // TODO add address:particle as sign message, where address is passport holder address hasher.update(format!("\x19Ethereum Signed Message:\n{}", msg.len())); hasher.update(msg); diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index f6f0ba7..4052be4 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -66,6 +66,7 @@ pub enum ExecuteMsg { }, SetMinter { minter: String }, SetOwner { owner: String }, + SetActive { token_id: String }, // Overwrite Standard CW721 ExecuteMsg @@ -150,6 +151,7 @@ pub enum QueryMsg { nickname: String, address: String }, + ActivePassport { address: String }, // Standard CW721 queries OwnerOf { diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index a39cbcf..3204465 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -1,7 +1,7 @@ use cosmwasm_std::{Deps, StdResult}; use cw721_base::state::TokenInfo; use crate::msg::{ConfigResponse, PortidResponse, AddressResponse, SignatureResponse}; -use crate::state::{CONFIG, NICKNAMES, PassportContract, PassportMetadata, PORTID}; +use crate::state::{ACTIVE, CONFIG, NICKNAMES, PassportContract, PassportMetadata, PORTID}; pub fn query_config(deps: Deps) -> StdResult { let cfg = CONFIG.load(deps.storage)?; @@ -36,6 +36,15 @@ pub fn query_portid(deps: Deps) -> StdResult { Ok(PortidResponse { portid: portid.into() }) } +pub fn query_active_passport(deps: Deps, address: String) -> StdResult> { + let active = ACTIVE.load(deps.storage, &deps.api.addr_validate(&address)?)?; + let cw721_contract = PassportContract::default(); + let token_info = cw721_contract + .tokens + .load(deps.storage, &active)?; + Ok(token_info) +} + pub fn query_passort_signed( deps: Deps, nickname: String, diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index b3a266f..78a3219 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -20,9 +20,11 @@ pub struct AddressPortID { } pub const CONFIG: Item = Item::new("config"); -pub const NICKNAMES: Map<&str, AddressPortID> = Map::new("nicknames"); pub const PORTID: Item = Item::new("portid"); +pub const ACTIVE: Map<&Addr, String> = Map::new("active"); +pub const NICKNAMES: Map<&str, AddressPortID> = Map::new("nicknames"); + #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)] #[serde(rename_all = "snake_case")] pub struct PassportMetadata { diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 1425c67..297a561 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -7,7 +7,7 @@ mod tests { use crate::state::PassportMetadata; use crate::contract::{execute, instantiate}; use crate::error::ContractError; - use crate::query::{query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; + use crate::query::{query_active_passport, query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; #[test] fn proper_initialization() { @@ -68,6 +68,7 @@ mod tests { } }; assert_eq!(query_passport_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport); + assert_eq!(query_active_passport(deps.as_ref(), citizen.into()).unwrap(), expected_passport); let update_name_msg = ExecuteMsg::UpdateName { old_nickname: "test_nickname".to_string(), From bd24ffe23aae61c871b1afb1beaefc6b52813c9c Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Sun, 13 Feb 2022 15:34:36 +0800 Subject: [PATCH 14/69] Added subspaces and linking with submsgs, linking data transformation --- Cargo.lock | 1 + Cargo.toml | 2 +- contracts/cw-cyber-passport/Cargo.toml | 1 + .../cw-cyber-passport/schema/config.json | 14 +- .../cw-cyber-passport/schema/execute_msg.json | 48 +++ .../schema/instantiate_msg.json | 12 + .../cw-cyber-passport/schema/query_msg.json | 20 + contracts/cw-cyber-passport/src/contract.rs | 24 +- contracts/cw-cyber-passport/src/error.rs | 5 + contracts/cw-cyber-passport/src/execute.rs | 387 ++++++++++++------ contracts/cw-cyber-passport/src/msg.rs | 12 + contracts/cw-cyber-passport/src/query.rs | 7 +- contracts/cw-cyber-passport/src/state.rs | 3 + contracts/cw-cyber-passport/src/tests.rs | 11 +- 14 files changed, 411 insertions(+), 136 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f9925f..e29a44f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -289,6 +289,7 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", + "cw-cyber-subgraph", "cw-storage-plus 0.10.3", "cw-utils", "cw2 0.10.3", diff --git a/Cargo.toml b/Cargo.toml index 7b4343c..80436a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["contracts/cw-cyber-passport", "contracts/cw-cyber-airdrop", "contracts/cw-cyber-subgraph"] +members = ["contracts/cw-cyber-subgraph", "contracts/cw-cyber-passport", "contracts/cw-cyber-airdrop"] [profile.release.package.cw721-marketplace] codegen-units = 1 diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index ea91aec..662ea56 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -50,6 +50,7 @@ serde = { version = "1.0.127", default-features = false, features = ["derive"] } thiserror = { version = "1.0.26" } cid = "0.7.0" cyber-std = { path = "../cyber-std" } +cw-cyber-subgraph = { path = "../cw-cyber-subgraph" } cw-utils = { version = "0.11.1" } hex = "0.4" sha2 = { version = "0.9.5", default-features = false } diff --git a/contracts/cw-cyber-passport/schema/config.json b/contracts/cw-cyber-passport/schema/config.json index 92b5b28..1655f55 100644 --- a/contracts/cw-cyber-passport/schema/config.json +++ b/contracts/cw-cyber-passport/schema/config.json @@ -3,11 +3,23 @@ "title": "Config", "type": "object", "required": [ - "owner" + "avatar_subspace", + "name_subspace", + "owner", + "proof_subspace" ], "properties": { + "avatar_subspace": { + "$ref": "#/definitions/Addr" + }, + "name_subspace": { + "$ref": "#/definitions/Addr" + }, "owner": { "$ref": "#/definitions/Addr" + }, + "proof_subspace": { + "$ref": "#/definitions/Addr" } }, "definitions": { diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index 4cbb866..19c720d 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -166,6 +166,54 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "set_active" + ], + "properties": { + "set_active": { + "type": "object", + "required": [ + "token_id" + ], + "properties": { + "token_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_subspaces" + ], + "properties": { + "set_subspaces": { + "type": "object", + "required": [ + "avatar_subspace", + "name_subspace", + "proof_subspace" + ], + "properties": { + "avatar_subspace": { + "type": "string" + }, + "name_subspace": { + "type": "string" + }, + "proof_subspace": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "description": "Transfer is a base message to move a token to another account without triggering actions", "type": "object", diff --git a/contracts/cw-cyber-passport/schema/instantiate_msg.json b/contracts/cw-cyber-passport/schema/instantiate_msg.json index dc9ceef..128baf7 100644 --- a/contracts/cw-cyber-passport/schema/instantiate_msg.json +++ b/contracts/cw-cyber-passport/schema/instantiate_msg.json @@ -3,12 +3,18 @@ "title": "InstantiateMsg", "type": "object", "required": [ + "avatar_subspace", "minter", "name", + "name_subspace", "owner", + "proof_subspace", "symbol" ], "properties": { + "avatar_subspace": { + "type": "string" + }, "minter": { "description": "The minter is the only one who can create new NFTs. This is designed for a base NFT that is controlled by an external program or contract. You will likely replace this with custom logic in custom NFTs", "type": "string" @@ -17,9 +23,15 @@ "description": "Name of the NFT contract", "type": "string" }, + "name_subspace": { + "type": "string" + }, "owner": { "type": "string" }, + "proof_subspace": { + "type": "string" + }, "symbol": { "description": "Symbol of the NFT contract", "type": "string" diff --git a/contracts/cw-cyber-passport/schema/query_msg.json b/contracts/cw-cyber-passport/schema/query_msg.json index 8243684..30cc414 100644 --- a/contracts/cw-cyber-passport/schema/query_msg.json +++ b/contracts/cw-cyber-passport/schema/query_msg.json @@ -110,6 +110,26 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "active_passport" + ], + "properties": { + "active_passport": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 01d7d58..ba853fb 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -1,10 +1,10 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, StdResult, to_binary}; +use cosmwasm_std::{Binary, ContractResult, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to_binary}; use cyber_std::CyberMsgWrapper; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERLINK_ID_MSG}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; @@ -20,6 +20,9 @@ pub fn instantiate( ) -> StdResult { let config = Config { owner: deps.api.addr_validate(&msg.clone().owner)?, + name_subspace: deps.api.addr_validate(&msg.clone().name_subspace)?, + avatar_subspace: deps.api.addr_validate(&msg.clone().avatar_subspace)?, + proof_subspace: deps.api.addr_validate(&msg.clone().proof_subspace)? }; CONFIG.save(deps.storage, &config)?; @@ -44,6 +47,11 @@ pub fn execute( ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), ExecuteMsg::SetActive { token_id } => execute_set_active(deps, env, info, token_id), + ExecuteMsg::SetSubspaces { + name_subspace, + avatar_subspace, + proof_subspace + } => execute_set_subspaces(deps, env, info, name_subspace, avatar_subspace, proof_subspace), // Overwrite CW721 methods ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), @@ -72,6 +80,18 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { } } +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn reply(_deps: DepsMut, _env: Env, reply: Reply) -> Result { + if reply.id != CYBERLINK_ID_MSG { + return Err(ContractError::UnknownReplyId { id: reply.id }); + } + // let res = match reply.result { + // ContractResult::Ok(_) => Response::new(), + // ContractResult::Err(_) => Response::new() + // }; + Ok(Response::new()) +} + #[cfg_attr(not(feature = "library"), entry_point)] pub fn migrate( deps: DepsMut, diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 59e328f..c9b490c 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -24,6 +24,11 @@ pub enum ContractError { // ----- + #[error("Got a submessage reply with unknown id: {id}")] + UnknownReplyId { id: u64 }, + + // ----- + #[error("Invalid particle")] InvalidParticle {}, diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index ec1f99f..94ec712 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -3,15 +3,14 @@ use std::str::FromStr; use cid::{Cid, Version}; use cid::multihash::{Code, MultihashDigest}; -use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, Uint128}; +use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, ReplyOn, SubMsg, to_binary, Uint128, WasmMsg}; use cw2::{get_contract_version, set_contract_version}; use cw721::{Cw721Execute, Cw721Query}; use cw721_base::MintMsg; use cw_utils::must_pay; +use cw_cyber_subgraph::msg::{ExecuteMsg as SubgraphExecuteMsg}; -use cyber_std::{ - create_cyberlink_msg, CyberMsgWrapper, Link, -}; +use cyber_std::{CyberMsgWrapper, Link}; use crate::error::ContractError; use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address}; @@ -22,6 +21,7 @@ type Response = cosmwasm_std::Response; // TODO discuss and make this configurable in config const CONSTITUTION: &str = "QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV"; +pub const CYBERLINK_ID_MSG: u64 = 42; pub fn execute_create_passport( deps: DepsMut, @@ -49,30 +49,53 @@ pub fn execute_create_passport( let avatar_particle = _check_particle(avatar.clone())?; let address_particle = _prepare_particle(info.clone().sender.into()); + + let config = CONFIG.load(deps.storage)?; + // nickname <-> address <-> avatar - // NOTE if one of cyberlinks from the set is exist it will revert whole message and other links - // TODO split in separate submessages? - let links= vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ]; + let name_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.name_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; - let contract = env.clone().contract.address; - let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + let avatar_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.avatar_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; let last_portid = PORTID.load(deps.storage).unwrap().add(1); let mint_msg = MintMsg { @@ -101,13 +124,6 @@ pub fn execute_create_passport( ACTIVE.save(deps.storage, &info.clone().sender, &last_portid.to_string())?; } - // // let sub = SubMsg::reply_on_success(msg, CYBERLINK_ID).with_gas_limit(128_000); - // let response = cw721_contract.mint(deps, env, info, mint_msg)?; - // // https://github.com/cybercongress/go-cyber/blob/main/x/graph/types/errors.go#L8 - // // TODO run transaction if cyberlink already exist (graph error) - // // TODO fail transaction in all other error cases (graph errors) or ignore this case - // // Ok(response.add_submessage(sub)) - let internal_info = MessageInfo { sender: env.clone().contract.address, funds: info.funds, @@ -115,11 +131,21 @@ pub fn execute_create_passport( let response = cw721_contract.mint(deps, env, internal_info, mint_msg)?; - Ok(response.add_message(cyberlink_msg)) + Ok(response + .add_submessage(name_subgraph_submsg) + .add_submessage(avatar_subgraph_submsg) + ) } fn _prepare_particle(input: String) -> Cid { - let h = Code::Sha2_256.digest(&input.as_bytes()); + + // unixfs/dagnode/proto shortcut + let length: u8 = input.len() as u8; + let mut raw: Vec = vec![10, length.add(6) as u8, 8, 2, 18, length]; + raw.append(&mut input.as_bytes().to_vec()); + raw.append(&mut vec![24, length]); + + let h = Code::Sha2_256.digest(&raw.as_slice()); let particle = Cid::new_v0(h).unwrap(); particle } @@ -193,25 +219,33 @@ pub fn execute_update_name( let nick_particle = _prepare_particle(new_name.clone()); let address_particle = _prepare_particle(info.clone().sender.into()); - // nickname <-> address - // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate submessages? - let links= vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - } - ]; + let config = CONFIG.load(deps.storage)?; - let contract = env.clone().contract.address; - let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + // nickname <-> address + let name_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.name_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; Ok(Response::new() - .add_message(cyberlink_msg) + .add_submessage(name_subgraph_submsg) .add_attributes(vec![ attr("action", "update_nickname"), attr("old_name", old_name), @@ -250,25 +284,33 @@ pub fn execute_update_avatar( let avatar_particle = _check_particle(new_avatar.clone())?; let address_particle = _prepare_particle(info.clone().sender.into()); - // nickname <-> address - // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate submessages? - let links= vec![ - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into(), - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ]; + let config = CONFIG.load(deps.storage)?; - let contract = env.clone().contract.address; - let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + // nickname <-> address + let avatar_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.avatar_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; Ok(Response::new() - .add_message(cyberlink_msg) + .add_submessage(avatar_subgraph_submsg) .add_attributes(vec![ attr("action", "update_avatar"), attr("nickname", nickname), @@ -338,25 +380,33 @@ pub fn execute_proof_address( let proved_address_particle = _prepare_particle(address.clone()); let address_particle = _prepare_particle(info.clone().sender.into()); - // prooved_address <-> address - // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate submessages? - let links= vec![ - Link{ - from: address_particle.clone().into(), - to: proved_address_particle.clone().into(), - }, - Link{ - from: proved_address_particle.clone().into(), - to: address_particle.clone().into() - } - ]; + let config = CONFIG.load(deps.storage)?; - let contract = env.clone().contract.address; - let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + // proved_address <-> address + let proof_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.proof_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: address_particle.clone().into(), + to: proved_address_particle.clone().into(), + }, + Link{ + from: proved_address_particle.clone().into(), + to: address_particle.clone().into() + } + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; Ok(Response::new() - .add_message(cyberlink_msg) + .add_submessage(proof_subgraph_submsg) .add_attributes(vec![ attr("action", "proof_address"), attr("nickname", nickname), @@ -437,6 +487,8 @@ pub fn execute_transfer_nft( recipient: String, token_id: String, ) -> Result { + let config = CONFIG.load(deps.storage)?; + let cw721_contract = PassportContract::default(); let mut nickname = String::default(); @@ -477,34 +529,54 @@ pub fn execute_transfer_nft( let address_particle = _prepare_particle(info.clone().sender.into()); // nickname <-> address <-> avatar - // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate submessages? - let links= vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ]; + let name_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.name_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; - let contract = env.clone().contract.address; - let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + let avatar_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.avatar_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; - Ok(response - .add_message(cyberlink_msg) + .add_submessage(name_subgraph_submsg) + .add_submessage(avatar_subgraph_submsg) ) } @@ -570,35 +642,57 @@ pub fn execute_burn( } } + let config = CONFIG.load(deps.storage)?; // avatar <-> cyberhole <-> nickname - // NOTE if one of cyberlinks from set is exist it will revert whole message and other links - // TODO split in separate submessages? - let links= vec![ - Link{ - from: cyberhole_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: cyberhole_particle.clone().into() - }, - Link{ - from: cyberhole_particle.clone().into(), - to: token_info.extension.avatar.clone().into() - }, - Link{ - from: token_info.extension.avatar.clone().into(), - to: cyberhole_particle.clone().into() - } - ]; + let name_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.name_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: cyberhole_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: cyberhole_particle.clone().into() + }, + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; - let contract = env.clone().contract.address; - let cyberlink_msg = create_cyberlink_msg(contract.into(), links); + let avatar_subgraph_submsg = SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr: config.avatar_subspace.into(), + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links: vec![ + Link{ + from: cyberhole_particle.clone().into(), + to: token_info.extension.avatar.clone().into() + }, + Link{ + from: token_info.extension.avatar.clone().into(), + to: cyberhole_particle.clone().into() + } + ], + })?, + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Success + }; let response = cw721_contract.burn(deps, env, info, token_id)?; Ok(response - .add_message(cyberlink_msg) + .add_submessage(name_subgraph_submsg) + .add_submessage(avatar_subgraph_submsg) ) } @@ -667,6 +761,39 @@ pub fn execute_set_active( ])) } +pub fn execute_set_subspaces( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_name_subspace: String, + new_avatar_subspace: String, + new_proof_subspace: String, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let owner = config.owner; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + let name_subspace = deps.api.addr_validate(&new_name_subspace)?; + let avatar_subspace = deps.api.addr_validate(&new_avatar_subspace)?; + let proof_subspace = deps.api.addr_validate(&new_proof_subspace)?; + + CONFIG.update( + deps.storage, + |mut config| -> Result { + config.name_subspace = name_subspace; + config.avatar_subspace = avatar_subspace; + config.proof_subspace = proof_subspace; + Ok(config) + }, + )?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "update_subspaces") + ])) +} + pub fn try_migrate( deps: DepsMut, version: String, diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index 4052be4..a46a16a 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -26,6 +26,10 @@ pub struct InstantiateMsg { pub minter: String, pub owner: String, + + pub name_subspace: String, + pub avatar_subspace: String, + pub proof_subspace: String, } impl From for CW721InstantiateMsg { @@ -67,6 +71,11 @@ pub enum ExecuteMsg { SetMinter { minter: String }, SetOwner { owner: String }, SetActive { token_id: String }, + SetSubspaces { + name_subspace: String, + avatar_subspace: String, + proof_subspace: String, + }, // Overwrite Standard CW721 ExecuteMsg @@ -265,6 +274,9 @@ impl From for CW721QueryMsg { #[serde(rename_all = "snake_case")] pub struct ConfigResponse { pub owner: String, + pub name_subspace: String, + pub avatar_subspace: String, + pub proof_subspace: String, } #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index 3204465..1fb5300 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -5,7 +5,12 @@ use crate::state::{ACTIVE, CONFIG, NICKNAMES, PassportContract, PassportMetadata pub fn query_config(deps: Deps) -> StdResult { let cfg = CONFIG.load(deps.storage)?; - Ok(ConfigResponse { owner: cfg.owner.into() }) + Ok(ConfigResponse { + owner: cfg.owner.into(), + name_subspace: cfg.name_subspace.into(), + avatar_subspace: cfg.avatar_subspace.into(), + proof_subspace: cfg.proof_subspace.into(), + }) } pub fn query_metadata_by_nickname(deps: Deps, nickname: String) -> StdResult { diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index 78a3219..e022adf 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -11,6 +11,9 @@ pub type Extension = PassportMetadata; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct Config { pub owner: Addr, + pub name_subspace: Addr, + pub avatar_subspace: Addr, + pub proof_subspace: Addr, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 297a561..d18c56f 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -16,19 +16,28 @@ mod tests { let owner = "owner"; let minter = "cosmos2contract"; let citizen = "bostrom1wnpak7sfawsfv9c8vqe7naxfa4g99lv77d7c0z"; + let name_subspace = "name_subspace"; + let avatar_subspace = "avatar_subspace"; + let proof_subspace = "proof_subspace"; // instantiate the contract let instantiate_msg = InstantiateMsg { name: "MoonPassport".to_string(), symbol: "MP".to_string(), minter: minter.to_string(), - owner: owner.to_string() + owner: owner.to_string(), + name_subspace: name_subspace.to_string(), + avatar_subspace: avatar_subspace.to_string(), + proof_subspace: proof_subspace.to_string(), }; let info = mock_info(&owner, &[]); instantiate(deps.as_mut(), mock_env(), info, instantiate_msg).unwrap(); let expected_config = ConfigResponse { owner: owner.to_string(), + name_subspace: name_subspace.to_string(), + avatar_subspace: avatar_subspace.to_string(), + proof_subspace: proof_subspace.to_string(), }; assert_eq!(query_config(deps.as_ref()).unwrap(), expected_config); From cedcc044579021d118c1726c7f840d83ccc49e91 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Mon, 21 Feb 2022 19:06:06 +0800 Subject: [PATCH 15/69] Update after adding subspace contracts --- .../gift_and_passport_contracts_testing.ipynb | 1391 +++++------------ 1 file changed, 395 insertions(+), 996 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 0dba688..3f17390 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -42,12 +42,19 @@ "COEF_DOWN = str(5)\n", "TARGET_CLAIM = str(2)\n", "\n", + "WALLET_ADDRESS = os.getenv('WALLET_ADDRESS')\n", "NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443'\n", "NETWORK = 'space-pussy-1'\n", "\n", + "INIT_SUBSPACE_CONTRACTS = False\n", + "SUBSPACE_CODE_ID = str(21)\n", + "NAME_SUBSPACE_CONTRACT_ADDRESS = 'bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt'\n", + "AVATAR_SUBSPACE_CONTRACT_ADDRESS = 'bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs'\n", + "PROOF_SUBSPACE_CONTRACT_ADDRESS = 'bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k'\n", + "\n", "INIT_PASSPORT_CONTRACT = False\n", - "PASSPORT_CODE_ID = str(23)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu'\n", + "PASSPORT_CODE_ID = str(25)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra'\n", "\n", "INIT_GIFT_CONTRACT = False\n", "GIFT_CODE_ID = str(20)\n", @@ -69,7 +76,7 @@ " except json.JSONDecodeError:\n", " print(_output)\n", " if _error:\n", - " print(json.dumps(json.loads(_error.decode('utf-8')), indent=4, sort_keys=True))\n", + " print(_error)\n", " return _output.decode('utf-8'), _error.decode('utf-8')" ], "metadata": { @@ -108,8 +115,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1477000 john16445669770 QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v \n1 1477000 john16445669771 QmS4pvkZzQcJMDYrMCZKDpBNoWc7HWJnFKHi1dRhmjRrLy \n\n ethereum_address \\\n0 0x31419fd3943c05836fc708ba6e5b7353accdcc82 \n1 0x42931499d6d14a05fb312808123a564e30a66a0c \n\n ethereum_private_key \\\n0 0xb5327df33d01f31e0573c5a4484ac6d6313a3e185c40... \n1 0x578a91df8f628383aa92ae7d2a05a0e557c72672e6cf... \n\n bostrom_address \\\n0 bostrom1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zq7ttxs \n1 bostrom12h0p07w95x5r3xjr03999pvx8535vnemk9d7v3 \n\n cosmos_address \\\n0 cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch \n1 cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk \n\n cosmos_seed \\\n0 layer below poem mom print hidden allow povert... \n1 lunar calm pond lizard want mobile purpose pat... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0xbaf8c4a43f098c1c2a35ea0513edb361c93ef0113f14... \n1 0xc37be3a26e4add0a57fde48d3ba130a126e1195350f0... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AiWoSSCPapVl5ob/LHjlQzQkw+kSLTHbc... \n1 {'pub_key': 'A1QeouLqZzeXmOicT59AYajB0ynmteSes... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRel... \n1 eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYW... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16445669770QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v0x31419fd3943c05836fc708ba6e5b7353accdcc820xb5327df33d01f31e0573c5a4484ac6d6313a3e185c40...bostrom1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zq7ttxscosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcchlayer below poem mom print hidden allow povert...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xbaf8c4a43f098c1c2a35ea0513edb361c93ef0113f14...{'pub_key': 'AiWoSSCPapVl5ob/LHjlQzQkw+kSLTHbc...eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRel...
11477000john16445669771QmS4pvkZzQcJMDYrMCZKDpBNoWc7HWJnFKHi1dRhmjRrLy0x42931499d6d14a05fb312808123a564e30a66a0c0x578a91df8f628383aa92ae7d2a05a0e557c72672e6cf...bostrom12h0p07w95x5r3xjr03999pvx8535vnemk9d7v3cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjklunar calm pond lizard want mobile purpose pat...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xc37be3a26e4add0a57fde48d3ba130a126e1195350f0...{'pub_key': 'A1QeouLqZzeXmOicT59AYajB0ynmteSes...eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYW...
\n
" + "text/plain": " amount nickname avatar \\\n0 1477000 john16454401280 QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz \n1 1477000 john16454401281 QmewDbitR4GbP4bGZxhmc4oScmacHrbqPcy5e31EdjxrA2 \n\n ethereum_address \\\n0 0x283b77504d598b68212770a164384e12bd9bc613 \n1 0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61 \n\n ethereum_private_key \\\n0 0x38d5c993de975c83a3b426b967f1cb92df7a55860422... \n1 0xc183ee08ee21c4d39924d761eb68f58ddf9b86a10649... \n\n bostrom_address \\\n0 bostrom1tfdl97t628y3dz8r3h43f9gacudrp83epw60c9 \n1 bostrom1cgzaccc6kxrppkuwt2qghg59qtwccpynxhts40 \n\n cosmos_address \\\n0 cosmos1tfdl97t628y3dz8r3h43f9gacudrp83ezawuxz \n1 cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg \n\n cosmos_seed \\\n0 recall universe witness pelican enhance area m... \n1 lumber treat phone smooth bulk legend crouch v... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0xd864c46c4747cd572514378e17fd2fd3db3c62f11548... \n1 0x1ff92ab0e76adaf3dd7d6a040e9ddbd3222238c8904a... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Aw5rmcHTj1ZiJD7a9vuGJB9w0HZAGy33I... \n1 {'pub_key': 'AyfqdmvZlb1jdmGHTu8fZiFaAkt3bZ6VF... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXc1cm1jSFRqMVppSkQ3YTl2dUdKQj... \n1 eyJwdWJfa2V5IjoiQXlmcWRtdlpsYjFqZG1HSFR1OGZaaU... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16454401280QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz0x283b77504d598b68212770a164384e12bd9bc6130x38d5c993de975c83a3b426b967f1cb92df7a55860422...bostrom1tfdl97t628y3dz8r3h43f9gacudrp83epw60c9cosmos1tfdl97t628y3dz8r3h43f9gacudrp83ezawuxzrecall universe witness pelican enhance area m...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xd864c46c4747cd572514378e17fd2fd3db3c62f11548...{'pub_key': 'Aw5rmcHTj1ZiJD7a9vuGJB9w0HZAGy33I...eyJwdWJfa2V5IjoiQXc1cm1jSFRqMVppSkQ3YTl2dUdKQj...
11477000john16454401281QmewDbitR4GbP4bGZxhmc4oScmacHrbqPcy5e31EdjxrA20x20c8c123253d9a8b4b5f5ace0940dfafbac91b610xc183ee08ee21c4d39924d761eb68f58ddf9b86a10649...bostrom1cgzaccc6kxrppkuwt2qghg59qtwccpynxhts40cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtglumber treat phone smooth bulk legend crouch v...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0x1ff92ab0e76adaf3dd7d6a040e9ddbd3222238c8904a...{'pub_key': 'AyfqdmvZlb1jdmGHTu8fZiFaAkt3bZ6VF...eyJwdWJfa2V5IjoiQXlmcWRtdlpsYjFqZG1HSFR1OGZaaU...
\n
" }, "execution_count": 2, "metadata": {}, @@ -179,7 +186,7 @@ { "cell_type": "markdown", "source": [ - "### Instantiate Passport Contract" + "## Instantiate Contracts" ], "metadata": { "collapsed": false, @@ -191,25 +198,119 @@ { "cell_type": "code", "execution_count": 3, + "outputs": [], + "source": [ + "def instantiate_contract(init_query: str, contract_code_id: str, contract_label: str, amount: str = '', display_data: bool = False) -> str:\n", + " _init_output, _init_error = execute_bash(\n", + " f'''INIT='{init_query}' \\\n", + " && cyber tx wasm instantiate {contract_code_id} \"$INIT\" --from $WALLET {'--amount ' + amount + 'boot' if amount else ''} --label \"{contract_label}\" \\\n", + " -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", + " if display_data:\n", + " try:\n", + " print(json.dumps(json.loads(_init_output.decode('utf-8')), indent=4, sort_keys=True))\n", + " except json.JSONDecodeError:\n", + " print(_init_output)\n", + " if _init_error:\n", + " print(_init_error)\n", + " _init_json = json.loads(_init_output)\n", + " return [event['attributes'][0]['value'] for event in _init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Subspace Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subspace contract address: bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\n", + "Avatar subspace contract address: bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\n", + "Proof subspace contract address: bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\n" + ] + } + ], + "source": [ + "if INIT_SUBSPACE_CONTRACTS:\n", + " name_subspace_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBSPACE_CODE_ID,\n", + " contract_label='test name subspace')\n", + " avatar_subspace_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBSPACE_CODE_ID,\n", + " contract_label='test avatar subspace')\n", + " proof_subspace_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBSPACE_CODE_ID,\n", + " contract_label='test proof subspace')\n", + "else:\n", + " name_subspace_contract_address = NAME_SUBSPACE_CONTRACT_ADDRESS\n", + " avatar_subspace_contract_address = AVATAR_SUBSPACE_CONTRACT_ADDRESS\n", + " proof_subspace_contract_address = PROOF_SUBSPACE_CONTRACT_ADDRESS\n", + "print(f'Name subspace contract address: {name_subspace_contract_address}\\n'\n", + " f'Avatar subspace contract address: {avatar_subspace_contract_address}\\n'\n", + " f'Proof subspace contract address: {proof_subspace_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Passport Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Passport contract address: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n" + "Passport contract address: bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\n" ] } ], "source": [ "if INIT_PASSPORT_CONTRACT:\n", - " init_output, init_error = execute_bash(\n", - " f'''INIT='{{\"name\":\"CPT\", \"minter\":\"{os.getenv('WALLET_ADDRESS')}\", \"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"symbol\":\"CPT\"}}' \\\n", - " && cyber tx wasm instantiate {PASSPORT_CODE_ID} \"$INIT\" --from $WALLET --label \"cybergift passport test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", - " if init_error:\n", - " print(init_error)\n", - " init_json = json.loads(init_output)\n", " passport_contract_address = \\\n", - " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subspace\": \"{avatar_subspace_contract_address}\", \"name_subspace\": \"{name_subspace_contract_address}\", \"proof_subspace\": \"{proof_subspace_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport')\n", "else:\n", " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", "print(f'Passport contract address: {passport_contract_address}')" @@ -221,6 +322,42 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subspace Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [ + "def set_executor_subspace(subspace_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_bash(\n", + " f'''REGISTER='{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}' \\\n", + " && CONTRACT=\"{subspace_contract_address}\" \\\n", + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBSPACE_CONTRACTS:\n", + " set_executor_subspace(subspace_contract_address=name_subspace_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subspace(subspace_contract_address=avatar_subspace_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subspace(subspace_contract_address=proof_subspace_contract_address, new_executor_address=passport_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -235,26 +372,24 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\n" + "Gift contract address: bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8\n" ] } ], "source": [ "if INIT_GIFT_CONTRACT:\n", - " init_output, init_error = execute_bash(\n", - " f'''INIT='{{\"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}' \\\n", - " && cyber tx wasm instantiate {GIFT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", - " if init_error:\n", - " print(init_error)\n", - " init_json = json.loads(init_output)\n", " gift_contract_address = \\\n", - " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift')\n", "else:\n", " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", "print(f'Gift contract address: {gift_contract_address}')" @@ -268,17 +403,19 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 8, "outputs": [], "source": [ "def get_contract_name(contract_address: str) -> str:\n", - " if contract_address == gift_contract_address:\n", - " return 'Gift Contract'\n", - " elif contract_address == passport_contract_address:\n", - " return 'Passport Contract'\n", - " elif contract_address == os.getenv('WALLET_ADDRESS'):\n", - " return 'Wallet'\n", - " else:\n", + " address_dict = {gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " WALLET_ADDRESS: 'Wallet',\n", + " name_subspace_contract_address: 'Name Subspace Contract',\n", + " avatar_subspace_contract_address: 'Avatar Subspace Contract',\n", + " proof_subspace_contract_address: 'Proof Subspace Contract'}\n", + " try:\n", + " return address_dict[contract_address]\n", + " except KeyError:\n", " return contract_address\n", "\n", "\n", @@ -292,21 +429,36 @@ " else:\n", " print(event_item)\n", " elif event_item['type'] == 'execute':\n", - " if len(event_item[\"attributes\"]) == 1:\n", - " print(f'execute contract: {get_contract_name(event_item[\"attributes\"][0][\"value\"])}')\n", - " else:\n", - " print(event_item)\n", + " print('execute')\n", + " for attr_item in event_item[\"attributes\"]:\n", + " if attr_item[\"key\"] == '_contract_address':\n", + " print(f'\\texecute contract: {get_contract_name(attr_item[\"value\"])}')\n", + " else:\n", + " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", + " elif event_item['type'] == 'reply':\n", + " print('reply')\n", + " for attr_item in event_item[\"attributes\"]:\n", + " if attr_item[\"key\"] == '_contract_address':\n", + " print(f'\\treply contract: {get_contract_name(attr_item[\"value\"])}')\n", + " else:\n", + " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", " elif event_item['type'] == 'cyberlink':\n", " print('cyberlinks')\n", - " for i in range(len(event_item['attributes'])//2):\n", - " print(f'\\t{event_item[\"attributes\"][i * 2][\"value\"]} -> {event_item[\"attributes\"][i * 2 + 1][\"value\"]}')\n", - " print(f'\\tneuron: {get_contract_name(event_item[\"attributes\"][-1][\"value\"])}')\n", + " for i, attr_item in enumerate(event_item['attributes']):\n", + " if attr_item['key'] == 'particleFrom':\n", + " print(f'\\t{attr_item[\"value\"]} -> {event_item[\"attributes\"][i + 1][\"value\"]}')\n", + " elif attr_item['key'] == 'particleTo':\n", + " pass\n", + " elif attr_item['key'] == 'neuron':\n", + " print(f'\\tneuron: {get_contract_name(event_item[\"attributes\"][-1][\"value\"])}\\n')\n", + " else:\n", + " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", " elif event_item['type'] == 'coin_received':\n", - " print('coin_received')\n", + " print('coin received')\n", " for attr_item in event_item[\"attributes\"]:\n", " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", " elif event_item['type'] == 'coin_spent':\n", - " print('coin_spent')\n", + " print('coin spent')\n", " for attr_item in event_item[\"attributes\"]:\n", " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", " elif event_item['type'] == 'wasm':\n", @@ -351,7 +503,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "outputs": [], "source": [ "root_source_list = [{'address': _item['ethereum_address'],\n", @@ -371,13 +523,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: cec353c5df0b490ab2679ce623deda7205e73280f54a8aaf90e840ba22b1b1c8\n" + "Merkle root: 3b777b20636ad732f97c83c6c5cbeab18d8e6a8a1bdc1ec7844b56ae0d8ea3bb\n" ] } ], @@ -397,7 +549,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "outputs": [], "source": [ "root_register_output, root_register_error = \\\n", @@ -428,14 +580,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data:\n", - " merkle_root: cec353c5df0b490ab2679ce623deda7205e73280f54a8aaf90e840ba22b1b1c8\n", + " merkle_root: 3b777b20636ad732f97c83c6c5cbeab18d8e6a8a1bdc1ec7844b56ae0d8ea3bb\n", "\n" ] } @@ -468,7 +620,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "outputs": [ { "data": { @@ -476,7 +628,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "e03630b3a83a42fdb5df85519fdb03b8" + "model_id": "c93a296093d64d9f9d0e0e6e29f511b7" } }, "metadata": {}, @@ -486,14 +638,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"create_passport\":{\"avatar\":\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\", \"nickname\":\"john16445669770\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"create_passport\":{\"avatar\":\"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\", \"nickname\":\"john16454401280\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", " \"code\": 0,\n", " \"codespace\": \"\",\n", " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"237661\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224329\",\n", + " \"gas_used\": \"400027\",\n", + " \"gas_wanted\": \"600000\",\n", + " \"height\": \"1395578\",\n", " \"info\": \"\",\n", " \"logs\": [\n", " {\n", @@ -502,39 +654,43 @@ " \"attributes\": [\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\"\n", + " \"value\": \"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\"\n", " },\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " \"value\": \"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\"\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\"\n", " },\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\"\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " \"value\": \"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\"\n", " },\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\"\n", + " \"value\": \"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", " },\n", " {\n", " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " \"value\": \"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\"\n", " }\n", " ],\n", " \"type\": \"cyberlink\"\n", @@ -543,7 +699,15 @@ " \"attributes\": [\n", " {\n", " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\"\n", + " },\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\"\n", " }\n", " ],\n", " \"type\": \"execute\"\n", @@ -569,7 +733,20 @@ " \"attributes\": [\n", " {\n", " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " }\n", + " ],\n", + " \"type\": \"reply\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", " },\n", " {\n", " \"key\": \"action\",\n", @@ -577,11 +754,11 @@ " },\n", " {\n", " \"key\": \"minter\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", " },\n", " {\n", " \"key\": \"token_id\",\n", - " \"value\": \"11\"\n", + " \"value\": \"6\"\n", " }\n", " ],\n", " \"type\": \"wasm\"\n", @@ -591,10 +768,10 @@ " \"msg_index\": 0\n", " }\n", " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"11\\\"}]}]}]\",\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"6\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"9F8DBAE2338C4594A11B5A71CBEAC2DDFA7BE9EB0D782C7BF0CC397E1665B1FD\"\n", + " \"txhash\": \"50E8E7FF5E06747A5A9240874529EFF177E42CEEEFDE864687EAB1A8ED278987\"\n", "}\n" ] } @@ -604,7 +781,7 @@ " return execute_bash(\n", " f'''REGISTER='{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}' \\\n", " && CONTRACT=\"{passport_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", @@ -622,7 +799,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 14, "outputs": [ { "name": "stdout", @@ -630,21 +807,31 @@ "text": [ "\n", "cyberlinks\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\n", - "\tQmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tQmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tneuron: Passport Contract\n", + "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\n", + "\tQmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", + "\tneuron: Avatar Subspace Contract\n", + "\n", + "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\n", + "\tQmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", + "\tneuron: Avatar Subspace Contract\n", + "\n", "\n", - "execute contract: Passport Contract\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subspace Contract\n", + "\texecute contract: Avatar Subspace Contract\n", "\n", "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", + "reply\n", + "\treply contract: Passport Contract\n", + "\treply contract: Passport Contract\n", + "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 11\n" + "\ttoken_id: 6\n" ] } ], @@ -672,7 +859,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 25, "outputs": [ { "data": { @@ -680,7 +867,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "91cc53b2e0754ccb9e032c03b38d4c46" + "model_id": "48328c785f89496980d4128d7e369439" } }, "metadata": {}, @@ -690,287 +877,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669770\", \"address\":\"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\", \"signature\":\"eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRelFrdytrU0xUSGJjdVR2emp5TStTVUsiLCJzaWduYXR1cmUiOiJJZUt0WmRLSE1uKy9uV0V5YkVLWjBTbS8yL0x0YVIzNGFaQzY2emZ1Q1hBTW5mN1pYV2hXUlgzYWNEbkNFVk1jVEZYVUQ2Z2NqdnNZdndCeG95NFN5QT09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"proof_address\":{\"address\":\"0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61\", \"nickname\":\"john16454401281\", \"signature\":\"0x1ff92ab0e76adaf3dd7d6a040e9ddbd3222238c8904a84d4521cb6a01a5e655943f1a95166566d817f3f520b6a2dc7feb0b5e6832af460234d1c2672b468987b1b\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"206533\",\n", + " \"code\": 5,\n", + " \"codespace\": \"wasm\",\n", + " \"data\": \"\",\n", + " \"gas_used\": \"129167\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224332\",\n", + " \"height\": \"1395704\",\n", " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16445669770\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669770\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\\\"}]}]}]\",\n", + " \"logs\": [],\n", + " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, Address is not eligible to claim airdrop, signer address is not calculated addr: execute wasm contract failed\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"43A6ED5B08EAC2D508376660D8F2BF8E58F642271FC7E2B91B1A85ACD4CBDD78\"\n", + " \"txhash\": \"6807EF98848902D60ED97D26AF2AF1681E6AFC2E166E64BDF2D9FF0F92E855FF\"\n", "}\n", - "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669771\", \"address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\", \"signature\":\"0xc37be3a26e4add0a57fde48d3ba130a126e1195350f03354b4f989960eb3e3196f272979d3da106b731fa38e3a12572ecae121fdc3899ecf846819d04b94b0b51b\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"proof_address\":{\"address\":\"cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg\", \"nickname\":\"john16454401281\", \"signature\":\"eyJwdWJfa2V5IjoiQXlmcWRtdlpsYjFqZG1HSFR1OGZaaUZhQWt0M2JaNlZGOVFpdVNqdE1UNU8iLCJzaWduYXR1cmUiOiJFWmNaNC9pYVF0TGw3NWlNOFNwWHBJNmovbnRoR3RFeEhnSURDd09xUFM0RS9wQ0RaOXh1cDJ0cGhNckZieFVjdmh0ZUY2NGQxV2o3WVBHeXJGUUVWQT09In0=\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"204108\",\n", + " \"code\": 5,\n", + " \"codespace\": \"wasm\",\n", + " \"data\": \"\",\n", + " \"gas_used\": \"130814\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224333\",\n", + " \"height\": \"1395705\",\n", " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16445669771\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669771\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"}]}]}]\",\n", + " \"logs\": [],\n", + " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, Address is not eligible: execute wasm contract failed\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"F98E65A9189B34C22B362D1CE4A7E2BAB6BC896C1E31B1CEA938FBFCE8225A4A\"\n", - "}\n", - "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669771\", \"address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\", \"signature\":\"eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYWpCMHlubXRlU2VzUnVNK3E3MHl5ckYiLCJzaWduYXR1cmUiOiJibzJQWGMxNmZRTW9JTUxmM0FWWGhKcWc0TGdFMWc5SVZtdUxQN2RqWnRKM0FUa0VvTzVlckxNUjZtNXYyY3ZENEU1NDd2RE9sU1M3aCtQa3pWWDhJZz09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"206533\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224334\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16445669771\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669771\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"9C6A4995EEEE4201DA9F4137DFBC5EEEF4847A673AB8AC83E155813DD0F3AE49\"\n", + " \"txhash\": \"FFE78EBF4D9A34A0C008D9EBF1C264BD23939FE34B96AC61708AB659FBDA6898\"\n", "}\n" ] } @@ -978,7 +913,7 @@ "source": [ "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", - " f'''REGISTER='{{\"proof_address\":{{\"nickname\":\"{claim_row[\"nickname\"]}\", \"address\":\"{claim_row[network + \"_address\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}' \\\n", + " f'''REGISTER='{{\"proof_address\":{{\"address\":\"{claim_row[network + \"_address\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}' \\\n", " && CONTRACT=\"{passport_contract_address}\" \\\n", " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", @@ -988,8 +923,9 @@ " proof_ethereum_address_json, _ = proof_address(row, display_data=True)\n", " proof_cosmos_address_json, _ = proof_address(row, network='cosmos', display_data=True)\n", " else:\n", - " proof_address(row)\n", - " proof_address(row, network='cosmos', display_data=True)" + " pass\n", + " # proof_address(row)\n", + " # proof_address(row, network='cosmos', display_data=True)" ], "metadata": { "collapsed": false, @@ -1000,30 +936,8 @@ }, { "cell_type": "code", - "execution_count": 28, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "cyberlinks\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\n", - "\tQmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tneuron: Passport Contract\n", - "\n", - "execute contract: Passport Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16445669771\n", - "\taddress: 0x42931499d6d14a05fb312808123a564e30a66a0c\n" - ] - } - ], + "execution_count": 16, + "outputs": [], "source": [ "parse_contract_execution_json(proof_ethereum_address_json)" ], @@ -1036,30 +950,8 @@ }, { "cell_type": "code", - "execution_count": 29, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "cyberlinks\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\n", - "\tQmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tneuron: Passport Contract\n", - "\n", - "execute contract: Passport Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16445669771\n", - "\taddress: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n" - ] - } - ], + "execution_count": 17, + "outputs": [], "source": [ "parse_contract_execution_json(proof_cosmos_address_json)" ], @@ -1084,7 +976,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "outputs": [ { "data": { @@ -1092,7 +984,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "0f9fede9ba2145a4b04246aac54c4303" + "model_id": "01a9d877af1d451db8780b6aac48cb2c" } }, "metadata": {}, @@ -1102,241 +994,39 @@ "name": "stdout", "output_type": "stream", "text": [ - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x42931499d6d14a05fb312808123a564e30a66a0c --amount 1477000\n", - "b\"[\\n 'b9bf7453f7b3442c281fd3c3ffa2aec387395682c0d16cb6800f8ca06c407e44',\\n '8b39367c8d583dc84ff9adf8dc57424b28520bb7dfd3e2b001370c22b5d12626'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16445669771\", \"gift_claiming_address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\", \"gift_amount\":\"1477000\", \"proof\":[\"b9bf7453f7b3442c281fd3c3ffa2aec387395682c0d16cb6800f8ca06c407e44\",\"8b39367c8d583dc84ff9adf8dc57424b28520bb7dfd3e2b001370c22b5d12626\"]}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61 --amount 1477000\n", + "b\"[\\n '1dfcaf5a7927c9f864568dbedff4e3c691c387a8e6afa0718d41663dc33c356e',\\n '757fad3278b66353750a8d311aefe78ba17f09ae9e8cde39cb9e1fd1842e06ba'\\n]\\n\"\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16454401281\", \"gift_claiming_address\":\"0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61\", \"gift_amount\":\"1477000\", \"proof\":[\"1dfcaf5a7927c9f864568dbedff4e3c691c387a8e6afa0718d41663dc33c356e\",\"757fad3278b66353750a8d311aefe78ba17f09ae9e8cde39cb9e1fd1842e06ba\"]}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"308419\",\n", + " \"code\": 5,\n", + " \"codespace\": \"wasm\",\n", + " \"data\": \"\",\n", + " \"gas_used\": \"193852\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224337\",\n", + " \"height\": \"1395586\",\n", " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"claim\"\n", - " },\n", - " {\n", - " \"key\": \"original\",\n", - " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", - " },\n", - " {\n", - " \"key\": \"target\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"28885541\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"28885541\\\"}]}]}]\",\n", + " \"logs\": [],\n", + " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, passport isn't assigned: execute wasm contract failed\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"3F3C36A7051F081F668E69C878654A731DB657A3E0EF973DB55BF9A58CA33EE6\"\n", - "}\n", - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk --amount 1477000\n", - "b\"[\\n '6cd0edca780f0eaa32b8def55e83445bc56381aa2a7bac2d08680a7318c1fc88',\\n '3ffd6f13d7134caab82a3a5bade2fb3f22d6c40153d7ee1560b6a458b70f3bc1'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16445669771\", \"gift_claiming_address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\", \"gift_amount\":\"1477000\", \"proof\":[\"6cd0edca780f0eaa32b8def55e83445bc56381aa2a7bac2d08680a7318c1fc88\",\"3ffd6f13d7134caab82a3a5bade2fb3f22d6c40153d7ee1560b6a458b70f3bc1\"]}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"308810\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224338\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"claim\"\n", - " },\n", - " {\n", - " \"key\": \"original\",\n", - " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", - " },\n", - " {\n", - " \"key\": \"target\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"28231082\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"28231082\\\"}]}]}]\",\n", + " \"txhash\": \"16D21312C3E782660431D6FC6FEF2A846069B13FE5BA507F69E8F7A6F8E3F914\"\n", + "}\n", + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg --amount 1477000\n", + "b\"[\\n '20f6be095853b54e1132e84368becf7476ca3fe6d4f41a1d068d8b1a3057af87',\\n '578fb1ff7078ff5c8cde5480380e28176afe4350e7829dcf4d555130088322d9'\\n]\\n\"\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16454401281\", \"gift_claiming_address\":\"cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg\", \"gift_amount\":\"1477000\", \"proof\":[\"20f6be095853b54e1132e84368becf7476ca3fe6d4f41a1d068d8b1a3057af87\",\"578fb1ff7078ff5c8cde5480380e28176afe4350e7829dcf4d555130088322d9\"]}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 5,\n", + " \"codespace\": \"wasm\",\n", + " \"data\": \"\",\n", + " \"gas_used\": \"193913\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1395587\",\n", + " \"info\": \"\",\n", + " \"logs\": [],\n", + " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, passport isn't assigned: execute wasm contract failed\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"4CE9DC78AEA4A566A60884AF618CFAFE5FF1C3B9804354603E9C2BE2623EA574\"\n", + " \"txhash\": \"9C0A9C5319096A66E3B2CFCBD5B95F4CDFB2666FDB3E1060D499908D9EA89B98\"\n", "}\n" ] } @@ -1368,39 +1058,8 @@ }, { "cell_type": "code", - "execution_count": 30, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin_received\n", - "\treceiver: Wallet\n", - "\tamount: 100000boot\n", - "\n", - "coin_spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: 0x42931499d6d14a05fb312808123a564e30a66a0c\n", - "\ttarget: Wallet\n", - "\tamount: 28885541\n" - ] - } - ], + "execution_count": 19, + "outputs": [], "source": [ "parse_contract_execution_json(claim_ethereum_json)" ], @@ -1413,39 +1072,8 @@ }, { "cell_type": "code", - "execution_count": 31, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin_received\n", - "\treceiver: Wallet\n", - "\tamount: 100000boot\n", - "\n", - "coin_spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n", - "\ttarget: Wallet\n", - "\tamount: 28231082\n" - ] - } - ], + "execution_count": 20, + "outputs": [], "source": [ "parse_contract_execution_json(claim_cosmos_json)" ], @@ -1471,7 +1099,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "outputs": [ { "data": { @@ -1479,7 +1107,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "8de1eda2e0714816b3d244b1894c61d8" + "model_id": "2d2f3e724c0342269236cfcfb8d92147" } }, "metadata": {}, @@ -1489,245 +1117,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "CLAIM='{\"release\":{\"gift_address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\"}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "CLAIM='{\"release\":{\"gift_address\":\"0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61\"}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"159137\",\n", + " \"code\": 5,\n", + " \"codespace\": \"wasm\",\n", + " \"data\": \"\",\n", + " \"gas_used\": \"121075\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224341\",\n", + " \"height\": \"1395590\",\n", " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"release\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"gift_address\",\n", - " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", - " },\n", - " {\n", - " \"key\": \"stage\",\n", - " \"value\": \"9\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554\\\"}]}]}]\",\n", + " \"logs\": [],\n", + " \"raw_log\": \"failed to execute message; message index: 0: Not claimed: execute wasm contract failed\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"A1E6B341DB43CF410B32F31BC46EA6166E08D7F92CF7CC83A7F74DDC7FC48579\"\n", + " \"txhash\": \"A6D02F8F18555DEC3BD24DF34002115B4CE60D62F9D41A2EB7D36A1B724B225A\"\n", "}\n", - "CLAIM='{\"release\":{\"gift_address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "CLAIM='{\"release\":{\"gift_address\":\"cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg\"}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"159205\",\n", + " \"code\": 5,\n", + " \"codespace\": \"wasm\",\n", + " \"data\": \"\",\n", + " \"gas_used\": \"121135\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224342\",\n", + " \"height\": \"1395591\",\n", " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"release\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"gift_address\",\n", - " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", - " },\n", - " {\n", - " \"key\": \"stage\",\n", - " \"value\": \"9\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108\\\"}]}]}]\",\n", + " \"logs\": [],\n", + " \"raw_log\": \"failed to execute message; message index: 0: Not claimed: execute wasm contract failed\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"53BE9FF78C682BD88B1808A7BC71B6B86B9A91BB2CF3F779CBD87EB65A98A293\"\n", + " \"txhash\": \"4DF4727EF7BF6875D6924639886800E4402571684A36E7E23492F5CCE7847E25\"\n", "}\n" ] } @@ -1756,40 +1174,8 @@ }, { "cell_type": "code", - "execution_count": 32, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin_received\n", - "\treceiver: Wallet\n", - "\tamount: 2878554boot\n", - "\n", - "coin_spent\n", - "\tspender: Gift Contract\n", - "\tamount: 2878554boot\n", - "\n", - "execute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 2878554boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: release\n", - "\taddress: Wallet\n", - "\tgift_address: 0x42931499d6d14a05fb312808123a564e30a66a0c\n", - "\tstage: 9\n", - "\tamount: 2878554\n" - ] - } - ], + "execution_count": 22, + "outputs": [], "source": [ "parse_contract_execution_json(release_ethereum_json)" ], @@ -1802,40 +1188,8 @@ }, { "cell_type": "code", - "execution_count": 33, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin_received\n", - "\treceiver: Wallet\n", - "\tamount: 2813108boot\n", - "\n", - "coin_spent\n", - "\tspender: Gift Contract\n", - "\tamount: 2813108boot\n", - "\n", - "execute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 2813108boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: release\n", - "\taddress: Wallet\n", - "\tgift_address: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n", - "\tstage: 9\n", - "\tamount: 2813108\n" - ] - } - ], + "execution_count": 23, + "outputs": [], "source": [ "parse_contract_execution_json(release_cosmos_json)" ], @@ -1848,14 +1202,14 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 24, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "first release: 2_878_554\n", - "coef: 19.56\n" + "first coef: 19.56\n" ] } ], @@ -1876,9 +1230,54 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Add tests for Passport contract\n", + "#### create_passport +\n", + "#### update_name\n", + "#### update_avatar\n", + "#### proof_address +\n", + "#### remove_address\n", + "#### set_minter\n", + "#### set_owner\n", + "#### set_active\n", + "#### set_subspaces\n", + "#### transfer_nft\n", + "#### send_nft\n", + "#### mint\n", + "#### burn\n", + "#### approve\n", + "#### approve_all\n", + "#### revoke\n", + "#### revoke_all\n", + "#### Expirations\n", + "##### at_height\n", + "##### at_time\n", + "##### never\n", + "\n", + "### Add tests for Gift contract\n", + "#### update_owner\n", + "#### update_passport_addr\n", + "#### update_target\n", + "#### register_merkle_root +\n", + "#### claim +\n", + "#### release +\n", + "\n", + "### Add tests for Subspace contract\n", + "#### update_owner\n", + "#### update_executer +" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "outputs": [], "source": [], "metadata": { From 1785ea4148b2b63bfe696d6c3afc85604dda2e60 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Wed, 23 Feb 2022 15:01:51 +0800 Subject: [PATCH 16/69] Update signed message text --- .../gift_and_passport_contracts_testing.ipynb | 1228 +++++++++++++++-- 1 file changed, 1089 insertions(+), 139 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 3f17390..aa79994 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -35,7 +35,7 @@ "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [1_477_000] * NUMBER_OF_PARTICIPANTS\n", + "CLAIM_AMOUNT_LIST = [10_000_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", "COEF_UP = str(20)\n", @@ -56,7 +56,7 @@ "PASSPORT_CODE_ID = str(25)\n", "PASSPORT_CONTRACT_ADDRESS = 'bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra'\n", "\n", - "INIT_GIFT_CONTRACT = False\n", + "INIT_GIFT_CONTRACT = True\n", "GIFT_CODE_ID = str(20)\n", "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", "\n", @@ -115,8 +115,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1477000 john16454401280 QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz \n1 1477000 john16454401281 QmewDbitR4GbP4bGZxhmc4oScmacHrbqPcy5e31EdjxrA2 \n\n ethereum_address \\\n0 0x283b77504d598b68212770a164384e12bd9bc613 \n1 0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61 \n\n ethereum_private_key \\\n0 0x38d5c993de975c83a3b426b967f1cb92df7a55860422... \n1 0xc183ee08ee21c4d39924d761eb68f58ddf9b86a10649... \n\n bostrom_address \\\n0 bostrom1tfdl97t628y3dz8r3h43f9gacudrp83epw60c9 \n1 bostrom1cgzaccc6kxrppkuwt2qghg59qtwccpynxhts40 \n\n cosmos_address \\\n0 cosmos1tfdl97t628y3dz8r3h43f9gacudrp83ezawuxz \n1 cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg \n\n cosmos_seed \\\n0 recall universe witness pelican enhance area m... \n1 lumber treat phone smooth bulk legend crouch v... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0xd864c46c4747cd572514378e17fd2fd3db3c62f11548... \n1 0x1ff92ab0e76adaf3dd7d6a040e9ddbd3222238c8904a... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Aw5rmcHTj1ZiJD7a9vuGJB9w0HZAGy33I... \n1 {'pub_key': 'AyfqdmvZlb1jdmGHTu8fZiFaAkt3bZ6VF... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXc1cm1jSFRqMVppSkQ3YTl2dUdKQj... \n1 eyJwdWJfa2V5IjoiQXlmcWRtdlpsYjFqZG1HSFR1OGZaaU... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16454401280QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz0x283b77504d598b68212770a164384e12bd9bc6130x38d5c993de975c83a3b426b967f1cb92df7a55860422...bostrom1tfdl97t628y3dz8r3h43f9gacudrp83epw60c9cosmos1tfdl97t628y3dz8r3h43f9gacudrp83ezawuxzrecall universe witness pelican enhance area m...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xd864c46c4747cd572514378e17fd2fd3db3c62f11548...{'pub_key': 'Aw5rmcHTj1ZiJD7a9vuGJB9w0HZAGy33I...eyJwdWJfa2V5IjoiQXc1cm1jSFRqMVppSkQ3YTl2dUdKQj...
11477000john16454401281QmewDbitR4GbP4bGZxhmc4oScmacHrbqPcy5e31EdjxrA20x20c8c123253d9a8b4b5f5ace0940dfafbac91b610xc183ee08ee21c4d39924d761eb68f58ddf9b86a10649...bostrom1cgzaccc6kxrppkuwt2qghg59qtwccpynxhts40cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtglumber treat phone smooth bulk legend crouch v...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0x1ff92ab0e76adaf3dd7d6a040e9ddbd3222238c8904a...{'pub_key': 'AyfqdmvZlb1jdmGHTu8fZiFaAkt3bZ6VF...eyJwdWJfa2V5IjoiQXlmcWRtdlpsYjFqZG1HSFR1OGZaaU...
\n
" + "text/plain": " amount nickname avatar \\\n0 10000000 john16455994800 QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv \n1 10000000 john16455994801 Qma6rDtCvYN6UWrUV978rmyZrxtKWWg8buYzy5H8Az3ux3 \n\n ethereum_address \\\n0 0x4608e844331df74ca530e0b8cbb80057a8e8818a \n1 0x9f791bd90b3b3a8f888a1414fba806d7aba85e97 \n\n ethereum_private_key \\\n0 0x7299cd04965e71b84f0e944db69c4fef1e4fe4effcef... \n1 0x7e461f3a4ea595abdbc47ea4385a1ef6d777175545d1... \n\n bostrom_address \\\n0 bostrom1za5gkyfz5jp3vhm7lphwgfdvpud87p6m2dj0v9 \n1 bostrom120gnxgzj9hv53meq7h24jkgtfw8w2lh4awp2vp \n\n cosmos_address \\\n0 cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz \n1 cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx \n\n cosmos_seed \\\n0 finger never cheese neck squeeze license dawn ... \n1 rookie library small humor execute antique tru... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0xf533d1b1d62ec166b3a9c5663ee614323800eabecb84... \n1 0x438ad98a4d25cf3780a67e1a55ade66f04a3ac529b14... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AppIVn2o22irKU/GUchgMTturtT8BQ4Kt... \n1 {'pub_key': 'AqhmlaczxtqDaBHBjhhtYS5AycZBqnfRG... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXBwSVZuMm8yMmlyS1UvR1VjaGdNVH... \n1 eyJwdWJfa2V5IjoiQXFobWxhY3p4dHFEYUJIQmpoaHRZUz... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
010000000john16455994800QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv0x4608e844331df74ca530e0b8cbb80057a8e8818a0x7299cd04965e71b84f0e944db69c4fef1e4fe4effcef...bostrom1za5gkyfz5jp3vhm7lphwgfdvpud87p6m2dj0v9cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujzfinger never cheese neck squeeze license dawn ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xf533d1b1d62ec166b3a9c5663ee614323800eabecb84...{'pub_key': 'AppIVn2o22irKU/GUchgMTturtT8BQ4Kt...eyJwdWJfa2V5IjoiQXBwSVZuMm8yMmlyS1UvR1VjaGdNVH...
110000000john16455994801Qma6rDtCvYN6UWrUV978rmyZrxtKWWg8buYzy5H8Az3ux30x9f791bd90b3b3a8f888a1414fba806d7aba85e970x7e461f3a4ea595abdbc47ea4385a1ef6d777175545d1...bostrom120gnxgzj9hv53meq7h24jkgtfw8w2lh4awp2vpcosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejxrookie library small humor execute antique tru...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x438ad98a4d25cf3780a67e1a55ade66f04a3ac529b14...{'pub_key': 'AqhmlaczxtqDaBHBjhhtYS5AycZBqnfRG...eyJwdWJfa2V5IjoiQXFobWxhY3p4dHFEYUJIQmpoaHRZUz...
\n
" }, "execution_count": 2, "metadata": {}, @@ -149,7 +149,7 @@ " # \"target_address\": claim_item['bostrom_address']\n", " # }\n", " # claim_item['message'] = json.dumps(message_json)\n", - " claim_item['message'] = 'QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV'\n", + " claim_item['message'] = f\"{WALLET_ADDRESS}:QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV\"\n", "\n", " # Sign message form Ethereum address\n", " ethereum_signed_message = \\\n", @@ -378,7 +378,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8\n" + "Gift contract address: bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\n" ] } ], @@ -529,7 +529,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: 3b777b20636ad732f97c83c6c5cbeab18d8e6a8a1bdc1ec7844b56ae0d8ea3bb\n" + "Merkle root: 75ba3c000160ea9239354e82806f1420ddd30b66c7132f4702849e5ae311eb12\n" ] } ], @@ -587,7 +587,7 @@ "output_type": "stream", "text": [ "data:\n", - " merkle_root: 3b777b20636ad732f97c83c6c5cbeab18d8e6a8a1bdc1ec7844b56ae0d8ea3bb\n", + " merkle_root: 75ba3c000160ea9239354e82806f1420ddd30b66c7132f4702849e5ae311eb12\n", "\n" ] } @@ -628,7 +628,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "c93a296093d64d9f9d0e0e6e29f511b7" + "model_id": "78dcad791efb4dc09d9715cbc4a3d9c2" } }, "metadata": {}, @@ -638,14 +638,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"create_passport\":{\"avatar\":\"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\", \"nickname\":\"john16454401280\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"create_passport\":{\"avatar\":\"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\", \"nickname\":\"john16455994800\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", " \"code\": 0,\n", " \"codespace\": \"\",\n", " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"400027\",\n", + " \"gas_used\": \"400125\",\n", " \"gas_wanted\": \"600000\",\n", - " \"height\": \"1395578\",\n", + " \"height\": \"1426977\",\n", " \"info\": \"\",\n", " \"logs\": [\n", " {\n", @@ -658,11 +658,11 @@ " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\"\n", + " \"value\": \"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\"\n", " },\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\"\n", + " \"value\": \"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", @@ -678,11 +678,11 @@ " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\"\n", + " \"value\": \"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\"\n", " },\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\"\n", + " \"value\": \"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", @@ -758,7 +758,7 @@ " },\n", " {\n", " \"key\": \"token_id\",\n", - " \"value\": \"6\"\n", + " \"value\": \"20\"\n", " }\n", " ],\n", " \"type\": \"wasm\"\n", @@ -768,10 +768,10 @@ " \"msg_index\": 0\n", " }\n", " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"6\\\"}]}]}]\",\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"20\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"50E8E7FF5E06747A5A9240874529EFF177E42CEEEFDE864687EAB1A8ED278987\"\n", + " \"txhash\": \"A9FF237A151EAC1DD44541A828AFB6FEFB12EA5DC43E07C3B9D5DA505597B9ED\"\n", "}\n" ] } @@ -807,12 +807,12 @@ "text": [ "\n", "cyberlinks\n", - "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP\n", - "\tQmSdjD5LsmKVAhLH2EBWJYX1a94GSAhYJepRFcRFHtU5cP -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", + "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\n", + "\tQmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", "\tneuron: Avatar Subspace Contract\n", "\n", - "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz\n", - "\tQmZ25aauyVnCpowNxjDguFDfvR7d1VC3PaJ8rYWzLTusDz -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", + "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\n", + "\tQmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", "\tneuron: Avatar Subspace Contract\n", "\n", "\n", @@ -831,7 +831,7 @@ "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 6\n" + "\ttoken_id: 20\n" ] } ], @@ -859,7 +859,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 15, "outputs": [ { "data": { @@ -867,7 +867,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "48328c785f89496980d4128d7e369439" + "model_id": "b1b18c10722845f0ace69b223b5a8438" } }, "metadata": {}, @@ -877,35 +877,326 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"proof_address\":{\"address\":\"0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61\", \"nickname\":\"john16454401281\", \"signature\":\"0x1ff92ab0e76adaf3dd7d6a040e9ddbd3222238c8904a84d4521cb6a01a5e655943f1a95166566d817f3f520b6a2dc7feb0b5e6832af460234d1c2672b468987b1b\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"proof_address\":{\"address\":\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\", \"nickname\":\"john16455994800\", \"signature\":\"eyJwdWJfa2V5IjoiQXBwSVZuMm8yMmlyS1UvR1VjaGdNVHR1cnRUOEJRNEt0bWo0YzhWTFFmbEsiLCJzaWduYXR1cmUiOiI5SHE5Mkl3eXFjZCtMSmsxWWZyNjJPc0txSkhxVVBNTi8wRFNSWEpib3dsK2VhQzVTeXBzZHF3K0NUaFVpY0FxZmpJd05kQ1kybGdIcHh5UEo0bGtQZz09In0=\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 5,\n", - " \"codespace\": \"wasm\",\n", - " \"data\": \"\",\n", - " \"gas_used\": \"129167\",\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"276785\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1395704\",\n", + " \"height\": \"1426980\",\n", " \"info\": \"\",\n", - " \"logs\": [],\n", - " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, Address is not eligible to claim airdrop, signer address is not calculated addr: execute wasm contract failed\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", + " }\n", + " ],\n", + " \"type\": \"cyberlink\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " }\n", + " ],\n", + " \"type\": \"reply\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"proof_address\"\n", + " },\n", + " {\n", + " \"key\": \"nickname\",\n", + " \"value\": \"john16455994800\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16455994800\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\\\"}]}]}]\",\n", + " \"timestamp\": \"\",\n", + " \"tx\": null,\n", + " \"txhash\": \"44C7017D0A84195DE29D890EE0468991CC3959AA0C5A91617B8C4414B3FBD22D\"\n", + "}\n", + "REGISTER='{\"proof_address\":{\"address\":\"0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\", \"nickname\":\"john16455994801\", \"signature\":\"0x438ad98a4d25cf3780a67e1a55ade66f04a3ac529b1415f2ab2ea59c38ecdd3471dc05dd32a5b4d0f0924dbebc76d1938d9aab6f669a84dc2e95ea14dfdfa3541b\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "{\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"274336\",\n", + " \"gas_wanted\": \"400000\",\n", + " \"height\": \"1426981\",\n", + " \"info\": \"\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", + " }\n", + " ],\n", + " \"type\": \"cyberlink\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " }\n", + " ],\n", + " \"type\": \"reply\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"proof_address\"\n", + " },\n", + " {\n", + " \"key\": \"nickname\",\n", + " \"value\": \"john16455994801\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16455994801\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"6807EF98848902D60ED97D26AF2AF1681E6AFC2E166E64BDF2D9FF0F92E855FF\"\n", + " \"txhash\": \"F94BB502F3CD3312158CF573E3E7DDDFABC3676BF2E57AECE39761C1B91E65C6\"\n", "}\n", - "REGISTER='{\"proof_address\":{\"address\":\"cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg\", \"nickname\":\"john16454401281\", \"signature\":\"eyJwdWJfa2V5IjoiQXlmcWRtdlpsYjFqZG1HSFR1OGZaaUZhQWt0M2JaNlZGOVFpdVNqdE1UNU8iLCJzaWduYXR1cmUiOiJFWmNaNC9pYVF0TGw3NWlNOFNwWHBJNmovbnRoR3RFeEhnSURDd09xUFM0RS9wQ0RaOXh1cDJ0cGhNckZieFVjdmh0ZUY2NGQxV2o3WVBHeXJGUUVWQT09In0=\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"proof_address\":{\"address\":\"cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\", \"nickname\":\"john16455994801\", \"signature\":\"eyJwdWJfa2V5IjoiQXFobWxhY3p4dHFEYUJIQmpoaHRZUzVBeWNaQnFuZlJHMXRDcVMwRDcwRUciLCJzaWduYXR1cmUiOiJzVVpCeVE5emorblh3UFdNdS9IVXdvL1Fid01ybnIwMUhtZzYzVHA4bytwdWc5c0gxWEFuSE9oR0hIaDRENjRnNVpIZXJDNkRZQUJuMStaYmlWZ1FOZz09In0=\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 5,\n", - " \"codespace\": \"wasm\",\n", - " \"data\": \"\",\n", - " \"gas_used\": \"130814\",\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"276785\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1395705\",\n", + " \"height\": \"1426982\",\n", " \"info\": \"\",\n", - " \"logs\": [],\n", - " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, Address is not eligible: execute wasm contract failed\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\"\n", + " },\n", + " {\n", + " \"key\": \"particleFrom\",\n", + " \"value\": \"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\"\n", + " },\n", + " {\n", + " \"key\": \"particleTo\",\n", + " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", + " },\n", + " {\n", + " \"key\": \"neuron\",\n", + " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", + " }\n", + " ],\n", + " \"type\": \"cyberlink\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " }\n", + " ],\n", + " \"type\": \"reply\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"proof_address\"\n", + " },\n", + " {\n", + " \"key\": \"nickname\",\n", + " \"value\": \"john16455994801\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16455994801\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"FFE78EBF4D9A34A0C008D9EBF1C264BD23939FE34B96AC61708AB659FBDA6898\"\n", + " \"txhash\": \"00AF6F1C5A5B966B422BE8B66000F7DEEEA1951314EF45062832B3F94057EB57\"\n", "}\n" ] } @@ -923,9 +1214,8 @@ " proof_ethereum_address_json, _ = proof_address(row, display_data=True)\n", " proof_cosmos_address_json, _ = proof_address(row, network='cosmos', display_data=True)\n", " else:\n", - " pass\n", - " # proof_address(row)\n", - " # proof_address(row, network='cosmos', display_data=True)" + " proof_address(row)\n", + " proof_address(row, network='cosmos', display_data=True)" ], "metadata": { "collapsed": false, @@ -937,7 +1227,35 @@ { "cell_type": "code", "execution_count": 16, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "cyberlinks\n", + "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\n", + "\tQmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", + "\tneuron: Proof Subspace Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subspace Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Passport Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16455994801\n", + "\taddress: 0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\n" + ] + } + ], "source": [ "parse_contract_execution_json(proof_ethereum_address_json)" ], @@ -946,12 +1264,40 @@ "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": 17, - "outputs": [], + } + }, + { + "cell_type": "code", + "execution_count": 17, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "cyberlinks\n", + "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\n", + "\tQma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", + "\tneuron: Proof Subspace Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subspace Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Passport Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16455994801\n", + "\taddress: cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\n" + ] + } + ], "source": [ "parse_contract_execution_json(proof_cosmos_address_json)" ], @@ -984,7 +1330,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "01a9d877af1d451db8780b6aac48cb2c" + "model_id": "61d8bf35ef7e44a981bec566d4cc1566" } }, "metadata": {}, @@ -994,39 +1340,241 @@ "name": "stdout", "output_type": "stream", "text": [ - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61 --amount 1477000\n", - "b\"[\\n '1dfcaf5a7927c9f864568dbedff4e3c691c387a8e6afa0718d41663dc33c356e',\\n '757fad3278b66353750a8d311aefe78ba17f09ae9e8cde39cb9e1fd1842e06ba'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16454401281\", \"gift_claiming_address\":\"0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61\", \"gift_amount\":\"1477000\", \"proof\":[\"1dfcaf5a7927c9f864568dbedff4e3c691c387a8e6afa0718d41663dc33c356e\",\"757fad3278b66353750a8d311aefe78ba17f09ae9e8cde39cb9e1fd1842e06ba\"]}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x4608e844331df74ca530e0b8cbb80057a8e8818a --amount 10000000\n", + "b\"[\\n '39203b498080d6acaf9b0973185ff5533bd0bf4609063fac1ea33231d373e19c',\\n 'd8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244'\\n]\\n\"\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16455994800\", \"gift_claiming_address\":\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\", \"gift_amount\":\"10000000\", \"proof\":[\"39203b498080d6acaf9b0973185ff5533bd0bf4609063fac1ea33231d373e19c\",\"d8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244\"]}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 5,\n", - " \"codespace\": \"wasm\",\n", - " \"data\": \"\",\n", - " \"gas_used\": \"193852\",\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"308120\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1395586\",\n", + " \"height\": \"1426983\",\n", " \"info\": \"\",\n", - " \"logs\": [],\n", - " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, passport isn't assigned: execute wasm contract failed\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"claim\"\n", + " },\n", + " {\n", + " \"key\": \"original\",\n", + " \"value\": \"0x4608e844331df74ca530e0b8cbb80057a8e8818a\"\n", + " },\n", + " {\n", + " \"key\": \"target\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"200000000\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"200000000\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"16D21312C3E782660431D6FC6FEF2A846069B13FE5BA507F69E8F7A6F8E3F914\"\n", + " \"txhash\": \"479A0AC63A33C7D88F8F427F90F289F359AAEA3D58C68DC06DB4E337D194D3F1\"\n", "}\n", - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg --amount 1477000\n", - "b\"[\\n '20f6be095853b54e1132e84368becf7476ca3fe6d4f41a1d068d8b1a3057af87',\\n '578fb1ff7078ff5c8cde5480380e28176afe4350e7829dcf4d555130088322d9'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16454401281\", \"gift_claiming_address\":\"cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg\", \"gift_amount\":\"1477000\", \"proof\":[\"20f6be095853b54e1132e84368becf7476ca3fe6d4f41a1d068d8b1a3057af87\",\"578fb1ff7078ff5c8cde5480380e28176afe4350e7829dcf4d555130088322d9\"]}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz --amount 10000000\n", + "b\"[\\n '18806720ae2b9cc5497793a4251a77ab58e5dadfa702ead125f4ecc6113fab34',\\n 'd8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244'\\n]\\n\"\n", + "CLAIM='{\"claim\":{\"nickname\":\"john16455994800\", \"gift_claiming_address\":\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\", \"gift_amount\":\"10000000\", \"proof\":[\"18806720ae2b9cc5497793a4251a77ab58e5dadfa702ead125f4ecc6113fab34\",\"d8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244\"]}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 5,\n", - " \"codespace\": \"wasm\",\n", - " \"data\": \"\",\n", - " \"gas_used\": \"193913\",\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"308185\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1395587\",\n", + " \"height\": \"1426984\",\n", " \"info\": \"\",\n", - " \"logs\": [],\n", - " \"raw_log\": \"failed to execute message; message index: 0: Address is not eligible to claim airdrop, passport isn't assigned: execute wasm contract failed\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"100000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"claim\"\n", + " },\n", + " {\n", + " \"key\": \"original\",\n", + " \"value\": \"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"\n", + " },\n", + " {\n", + " \"key\": \"target\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"200000000\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"200000000\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"9C0A9C5319096A66E3B2CFCBD5B95F4CDFB2666FDB3E1060D499908D9EA89B98\"\n", + " \"txhash\": \"AE9FFEAD5D4740225E94E4C1A8BC7941E25EFD776AC80BE0DED27EE9D32D9B6D\"\n", "}\n" ] } @@ -1042,26 +1590,150 @@ " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", - " if index == 1:\n", + " if index == 0:\n", " claim_ethereum_json, _ = generate_proof_and_claim(row, display_data=True)\n", " claim_cosmos_json, _ = generate_proof_and_claim(row, network='cosmos', display_data=True)\n", " else:\n", - " generate_proof_and_claim(row)\n", - " generate_proof_and_claim(row, network='cosmos')" + " claim_ethereum_json_2, _ = generate_proof_and_claim(row)\n", + " claim_cosmos_json_2, _ = generate_proof_and_claim(row, network='cosmos')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 19, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin received\n", + "\treceiver: Wallet\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x4608e844331df74ca530e0b8cbb80057a8e8818a\n", + "\ttarget: Wallet\n", + "\tamount: 200000000\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(claim_ethereum_json)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 20, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin received\n", + "\treceiver: Wallet\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\n", + "\ttarget: Wallet\n", + "\tamount: 200000000\n" + ] + } + ], + "source": [ + "parse_contract_execution_json(claim_cosmos_json)" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": 19, - "outputs": [], + } + }, + { + "cell_type": "code", + "execution_count": 22, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin received\n", + "\treceiver: Wallet\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\n", + "\ttarget: Wallet\n", + "\tamount: 170000000\n" + ] + } + ], "source": [ - "parse_contract_execution_json(claim_ethereum_json)" + "parse_contract_execution_json(claim_ethereum_json_2)" ], "metadata": { "collapsed": false, @@ -1072,10 +1744,42 @@ }, { "cell_type": "code", - "execution_count": 20, - "outputs": [], + "execution_count": 23, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin received\n", + "\treceiver: Wallet\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\n", + "\ttarget: Wallet\n", + "\tamount: 140000000\n" + ] + } + ], "source": [ - "parse_contract_execution_json(claim_cosmos_json)" + "parse_contract_execution_json(claim_cosmos_json_2)" ], "metadata": { "collapsed": false, @@ -1099,7 +1803,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 24, "outputs": [ { "data": { @@ -1107,7 +1811,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "2d2f3e724c0342269236cfcfb8d92147" + "model_id": "0d01340b9af54e8bb9a8f3093816409e" } }, "metadata": {}, @@ -1117,35 +1821,245 @@ "name": "stdout", "output_type": "stream", "text": [ - "CLAIM='{\"release\":{\"gift_address\":\"0x20c8c123253d9a8b4b5f5ace0940dfafbac91b61\"}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "CLAIM='{\"release\":{\"gift_address\":\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\"}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 5,\n", - " \"codespace\": \"wasm\",\n", - " \"data\": \"\",\n", - " \"gas_used\": \"121075\",\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"158902\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1395590\",\n", + " \"height\": \"1426997\",\n", " \"info\": \"\",\n", - " \"logs\": [],\n", - " \"raw_log\": \"failed to execute message; message index: 0: Not claimed: execute wasm contract failed\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"release\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"gift_address\",\n", + " \"value\": \"0x4608e844331df74ca530e0b8cbb80057a8e8818a\"\n", + " },\n", + " {\n", + " \"key\": \"stage\",\n", + " \"value\": \"9\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"A6D02F8F18555DEC3BD24DF34002115B4CE60D62F9D41A2EB7D36A1B724B225A\"\n", + " \"txhash\": \"87F3C0BB485B376A5E234D090D61FBEFA3BD81FE613DC9FA2C651208D5113BC0\"\n", "}\n", - "CLAIM='{\"release\":{\"gift_address\":\"cosmos1cgzaccc6kxrppkuwt2qghg59qtwccpyn9ylrtg\"}}' && cyber tx wasm execute bostrom1qydhnhax5sqn7n9syjvz90z2a24ja798nwgt0fuytx5j7ptkqrts6yjdf8 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "CLAIM='{\"release\":{\"gift_address\":\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", - " \"code\": 5,\n", - " \"codespace\": \"wasm\",\n", - " \"data\": \"\",\n", - " \"gas_used\": \"121135\",\n", + " \"code\": 0,\n", + " \"codespace\": \"\",\n", + " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", + " \"gas_used\": \"158969\",\n", " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1395591\",\n", + " \"height\": \"1426998\",\n", " \"info\": \"\",\n", - " \"logs\": [],\n", - " \"raw_log\": \"failed to execute message; message index: 0: Not claimed: execute wasm contract failed\",\n", + " \"logs\": [\n", + " {\n", + " \"events\": [\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"receiver\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_received\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"spender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"coin_spent\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " }\n", + " ],\n", + " \"type\": \"execute\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", + " },\n", + " {\n", + " \"key\": \"module\",\n", + " \"value\": \"wasm\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " }\n", + " ],\n", + " \"type\": \"message\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"recipient\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"sender\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000boot\"\n", + " }\n", + " ],\n", + " \"type\": \"transfer\"\n", + " },\n", + " {\n", + " \"attributes\": [\n", + " {\n", + " \"key\": \"_contract_address\",\n", + " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", + " },\n", + " {\n", + " \"key\": \"action\",\n", + " \"value\": \"release\"\n", + " },\n", + " {\n", + " \"key\": \"address\",\n", + " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", + " },\n", + " {\n", + " \"key\": \"gift_address\",\n", + " \"value\": \"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"\n", + " },\n", + " {\n", + " \"key\": \"stage\",\n", + " \"value\": \"9\"\n", + " },\n", + " {\n", + " \"key\": \"amount\",\n", + " \"value\": \"19990000\"\n", + " }\n", + " ],\n", + " \"type\": \"wasm\"\n", + " }\n", + " ],\n", + " \"log\": \"\",\n", + " \"msg_index\": 0\n", + " }\n", + " ],\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"4DF4727EF7BF6875D6924639886800E4402571684A36E7E23492F5CCE7847E25\"\n", + " \"txhash\": \"17316AAF85873C64B9D1422F203A69446CD9F6EDD96B74DD6874AF9DCBEBC25A\"\n", "}\n" ] } @@ -1158,7 +2072,7 @@ " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df.iterrows()):\n", - " if index == 1:\n", + " if index == 0:\n", " release_ethereum_json, _ = release(row, display_data=True)\n", " release_cosmos_json, _ = release(row, network='cosmos', display_data=True)\n", " else:\n", @@ -1174,24 +2088,43 @@ }, { "cell_type": "code", - "execution_count": 22, - "outputs": [], - "source": [ - "parse_contract_execution_json(release_ethereum_json)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" + "execution_count": 25, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "coin received\n", + "\treceiver: Wallet\n", + "\tamount: 19990000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 19990000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 19990000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: Wallet\n", + "\tgift_address: 0x4608e844331df74ca530e0b8cbb80057a8e8818a\n", + "\tstage: 9\n", + "\tamount: 19990000\n" + ] } - } - }, - { - "cell_type": "code", - "execution_count": 23, - "outputs": [], + ], "source": [ - "parse_contract_execution_json(release_cosmos_json)" + "parse_contract_execution_json(release_ethereum_json)" ], "metadata": { "collapsed": false, @@ -1202,26 +2135,43 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "first release: 2_878_554\n", - "first coef: 19.56\n" + "\n", + "coin received\n", + "\treceiver: Wallet\n", + "\tamount: 19990000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 19990000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Wallet\n", + "\tsender: Gift Contract\n", + "\tamount: 19990000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: Wallet\n", + "\tgift_address: cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\n", + "\tstage: 9\n", + "\tamount: 19990000\n" ] } ], "source": [ - "# gift_address 0x30f99350a8b2e4acf87cdb197e347fb434fe0856\n", - "# gift amount 1_477_000\n", - "# first claim 28_885_541\n", - "# claim transfer 100_000\n", - "# first release 2_878_554\n", - "\n", - "print(f'first release: {int((28_885_541 - 100_000) * 0.1):>_}')\n", - "print(f'first coef: {28_885_541 / 1_477_000:>,.2f}')\n" + "parse_contract_execution_json(release_cosmos_json)" ], "metadata": { "collapsed": false, @@ -1277,7 +2227,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "outputs": [], "source": [], "metadata": { From e762ccc5f1972b7a5df2d74dc7b58566eff57139 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Thu, 24 Feb 2022 18:13:36 +0800 Subject: [PATCH 17/69] Update dataset for testing Gift contract --- .../gift_and_passport_contracts_testing.ipynb | 1355 ++--------------- 1 file changed, 152 insertions(+), 1203 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index aa79994..9eb1aae 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -31,11 +31,11 @@ "\n", "client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 2\n", + "NUMBER_OF_PARTICIPANTS = 100\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [10_000_000] * NUMBER_OF_PARTICIPANTS\n", + "CLAIM_AMOUNT_LIST = [1_000_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", "COEF_UP = str(20)\n", @@ -115,8 +115,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 10000000 john16455994800 QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv \n1 10000000 john16455994801 Qma6rDtCvYN6UWrUV978rmyZrxtKWWg8buYzy5H8Az3ux3 \n\n ethereum_address \\\n0 0x4608e844331df74ca530e0b8cbb80057a8e8818a \n1 0x9f791bd90b3b3a8f888a1414fba806d7aba85e97 \n\n ethereum_private_key \\\n0 0x7299cd04965e71b84f0e944db69c4fef1e4fe4effcef... \n1 0x7e461f3a4ea595abdbc47ea4385a1ef6d777175545d1... \n\n bostrom_address \\\n0 bostrom1za5gkyfz5jp3vhm7lphwgfdvpud87p6m2dj0v9 \n1 bostrom120gnxgzj9hv53meq7h24jkgtfw8w2lh4awp2vp \n\n cosmos_address \\\n0 cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz \n1 cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx \n\n cosmos_seed \\\n0 finger never cheese neck squeeze license dawn ... \n1 rookie library small humor execute antique tru... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0xf533d1b1d62ec166b3a9c5663ee614323800eabecb84... \n1 0x438ad98a4d25cf3780a67e1a55ade66f04a3ac529b14... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AppIVn2o22irKU/GUchgMTturtT8BQ4Kt... \n1 {'pub_key': 'AqhmlaczxtqDaBHBjhhtYS5AycZBqnfRG... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXBwSVZuMm8yMmlyS1UvR1VjaGdNVH... \n1 eyJwdWJfa2V5IjoiQXFobWxhY3p4dHFEYUJIQmpoaHRZUz... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
010000000john16455994800QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv0x4608e844331df74ca530e0b8cbb80057a8e8818a0x7299cd04965e71b84f0e944db69c4fef1e4fe4effcef...bostrom1za5gkyfz5jp3vhm7lphwgfdvpud87p6m2dj0v9cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujzfinger never cheese neck squeeze license dawn ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xf533d1b1d62ec166b3a9c5663ee614323800eabecb84...{'pub_key': 'AppIVn2o22irKU/GUchgMTturtT8BQ4Kt...eyJwdWJfa2V5IjoiQXBwSVZuMm8yMmlyS1UvR1VjaGdNVH...
110000000john16455994801Qma6rDtCvYN6UWrUV978rmyZrxtKWWg8buYzy5H8Az3ux30x9f791bd90b3b3a8f888a1414fba806d7aba85e970x7e461f3a4ea595abdbc47ea4385a1ef6d777175545d1...bostrom120gnxgzj9hv53meq7h24jkgtfw8w2lh4awp2vpcosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejxrookie library small humor execute antique tru...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x438ad98a4d25cf3780a67e1a55ade66f04a3ac529b14...{'pub_key': 'AqhmlaczxtqDaBHBjhhtYS5AycZBqnfRG...eyJwdWJfa2V5IjoiQXFobWxhY3p4dHFEYUJIQmpoaHRZUz...
\n
" + "text/plain": " amount nickname avatar \\\n0 1000000 john16456890120 QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce \n1 1000000 john16456890121 QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs \n2 1000000 john16456890122 Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e \n3 1000000 john16456890123 QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad \n4 1000000 john16456890124 QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY \n.. ... ... ... \n95 1000000 john164568901295 QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH4 \n96 1000000 john164568901296 QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT \n97 1000000 john164568901297 QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH3 \n98 1000000 john164568901298 QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j \n99 1000000 john164568901299 QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH \n\n ethereum_address \\\n0 0xace4ce3820cbc4d08106c6077098efff9c102153 \n1 0x2561dc7aa1f2993b71ebcd42eb7b6d89aea82999 \n2 0x943cec118f21b326ff10c716b8ae14c4a2a82b1b \n3 0x37c896cf9ff9be029992ee160b0dae49c07495d4 \n4 0xa59769e19a327d2d28bddfc2c057195cf32e5b33 \n.. ... \n95 0x65ec5436573364862ae6a950aa977b41487e5715 \n96 0x0b1c0f128d7fe50eca0af4be0f83cf775a109330 \n97 0xba288b21a6759c6785d922dd6224df9f295aec9d \n98 0xc92f3a158e6d21376faa7df09b2e972eb9d5f370 \n99 0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa \n\n ethereum_private_key \\\n0 0xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9... \n1 0x2dc1391c2e543012159153af30088206945058295693... \n2 0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef... \n3 0x94475aabb305ac4a01c6ee9dd28f302646317ca431bf... \n4 0xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146... \n.. ... \n95 0xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67... \n96 0x2289c89880cf85377c3f702a56e9498553e43fb566f1... \n97 0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9... \n98 0x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751... \n99 0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb... \n\n bostrom_address \\\n0 bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrd \n1 bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23 \n2 bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0 \n3 bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gp \n4 bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0s \n.. ... \n95 bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfm \n96 bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2 \n97 bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxv \n98 bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfch \n99 bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4 \n\n cosmos_address \\\n0 cosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2 \n1 cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5k \n2 cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkg \n3 cosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkx \n4 cosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3h \n.. ... \n95 cosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshu \n96 cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsd \n97 cosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jct \n98 cosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xs \n99 cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzj \n\n cosmos_seed \\\n0 scan then essay quality elephant curtain cage ... \n1 team visa tent boring claim melt transfer appe... \n2 tattoo verify pioneer wild cactus marriage inh... \n3 subway crawl other foot whale awkward olympic ... \n4 sock rough away buyer mask vocal position chao... \n.. ... \n95 record what garbage crumble radar bachelor glu... \n96 minimum zero symptom era dilemma burden luxury... \n97 infant jump easily melody monkey clerk exclude... \n98 fine issue keep phrase fish question strike ca... \n99 oyster bulk enough woman glare sausage merge b... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n3 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n4 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n.. ... \n95 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n96 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n97 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n98 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n99 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9... \n1 0x6d65007f9ae5cb02b65283e11aac464266be28b84193... \n2 0x735ddd89ce39a9f85d4a3bfc2332528283436812f648... \n3 0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9... \n4 0x329b4afe2546d797f01a12b9ea29e40de28af96b621a... \n.. ... \n95 0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf... \n96 0xade32187d4825afd435d06a1de72c097abc6878026fb... \n97 0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e... \n98 0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c... \n99 0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd... \n1 {'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX... \n2 {'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0... \n3 {'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs... \n4 {'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V... \n.. ... \n95 {'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq... \n96 {'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU... \n97 {'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9... \n98 {'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6... \n99 {'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD... \n1 eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF... \n2 eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX... \n3 eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk... \n4 eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH... \n.. ... \n95 eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU... \n96 eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU... \n97 eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU... \n98 eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG... \n99 eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE... \n\n[100 rows x 12 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16456890120QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce0xace4ce3820cbc4d08106c6077098efff9c1021530xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9...bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrdcosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2scan then essay quality elephant curtain cage ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9...{'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd...eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD...
11000000john16456890121QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs0x2561dc7aa1f2993b71ebcd42eb7b6d89aea829990x2dc1391c2e543012159153af30088206945058295693...bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5kteam visa tent boring claim melt transfer appe...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6d65007f9ae5cb02b65283e11aac464266be28b84193...{'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX...eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF...
21000000john16456890122Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e0x943cec118f21b326ff10c716b8ae14c4a2a82b1b0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef...bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkgtattoo verify pioneer wild cactus marriage inh...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x735ddd89ce39a9f85d4a3bfc2332528283436812f648...{'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0...eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX...
31000000john16456890123QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad0x37c896cf9ff9be029992ee160b0dae49c07495d40x94475aabb305ac4a01c6ee9dd28f302646317ca431bf...bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gpcosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkxsubway crawl other foot whale awkward olympic ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9...{'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs...eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk...
41000000john16456890124QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY0xa59769e19a327d2d28bddfc2c057195cf32e5b330xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146...bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0scosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3hsock rough away buyer mask vocal position chao...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x329b4afe2546d797f01a12b9ea29e40de28af96b621a...{'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V...eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH...
.......................................
951000000john164568901295QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH40x65ec5436573364862ae6a950aa977b41487e57150xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67...bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfmcosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshurecord what garbage crumble radar bachelor glu...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf...{'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq...eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU...
961000000john164568901296QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT0x0b1c0f128d7fe50eca0af4be0f83cf775a1093300x2289c89880cf85377c3f702a56e9498553e43fb566f1...bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsdminimum zero symptom era dilemma burden luxury...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xade32187d4825afd435d06a1de72c097abc6878026fb...{'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU...eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU...
971000000john164568901297QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH30xba288b21a6759c6785d922dd6224df9f295aec9d0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9...bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxvcosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jctinfant jump easily melody monkey clerk exclude...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e...{'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9...eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU...
981000000john164568901298QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j0xc92f3a158e6d21376faa7df09b2e972eb9d5f3700x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751...bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfchcosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xsfine issue keep phrase fish question strike ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c...{'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6...eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG...
991000000john164568901299QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb...bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzjoyster bulk enough woman glare sausage merge b...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc...{'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R...eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE...
\n

100 rows × 12 columns

\n
" }, "execution_count": 2, "metadata": {}, @@ -173,7 +173,7 @@ " claims_list.append(claim_item)\n", "\n", "claims_df = pd.DataFrame(claims_list)\n", - "claims_df.to_csv('claims_ethereum_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df.to_csv('claims_ethereum_test_data_without_proof' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", "claims_df" ], "metadata": { @@ -378,7 +378,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\n" + "Gift contract address: bostrom1ky7s3pwgx55dh52h80glk8fyq6k6y5qmrsnpasurxjeqnhyhwh0qfx4jqj\n" ] } ], @@ -420,6 +420,8 @@ "\n", "\n", "def parse_contract_execution_json(contract_execution_json: str) -> None:\n", + " if len(json.loads(contract_execution_json)['logs']) == 0:\n", + " print(json.loads(contract_execution_json)['raw_log'])\n", " for log_item in json.loads(contract_execution_json)['logs']:\n", " for event_item in log_item['events']:\n", " print('')\n", @@ -529,7 +531,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: 75ba3c000160ea9239354e82806f1420ddd30b66c7132f4702849e5ae311eb12\n" + "Merkle root: 2b3656e620551269a4eb38345a6b24123d41e3b085c616c579bacb09a350f816\n" ] } ], @@ -550,13 +552,31 @@ { "cell_type": "code", "execution_count": 11, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: register_merkle_root\n", + "\tmerkle_root: 2b3656e620551269a4eb38345a6b24123d41e3b085c616c579bacb09a350f816\n" + ] + } + ], "source": [ "root_register_output, root_register_error = \\\n", " execute_bash(\n", " f'''REGISTER='{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}' \\\n", " && CONTRACT=\"{gift_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --chain-id={NETWORK} --node={NODE_URL}''')" + " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -o json -y --chain-id={NETWORK} --node={NODE_URL}''')\n", + "parse_contract_execution_json(root_register_output)" ], "metadata": { "collapsed": false, @@ -586,8 +606,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "data:\n", - " merkle_root: 75ba3c000160ea9239354e82806f1420ddd30b66c7132f4702849e5ae311eb12\n", + "{\"data\":{\"merkle_root\":\"2b3656e620551269a4eb38345a6b24123d41e3b085c616c579bacb09a350f816\"}}\n", "\n" ] } @@ -596,7 +615,7 @@ "print(\n", " execute_bash(\n", " f'''QUERY='{{\"merkle_root\": {{}}}}' \\\n", - " && cyber query wasm contract-state smart {gift_contract_address} \"$QUERY\" --chain-id={NETWORK} --node={NODE_URL}''')[0]\n", + " && cyber query wasm contract-state smart {gift_contract_address} \"$QUERY\" -o json --chain-id={NETWORK} --node={NODE_URL}''')[0]\n", ")" ], "metadata": { @@ -606,6 +625,48 @@ } } }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "data": { + "text/plain": " amount nickname avatar \\\n0 1000000 john16456890120 QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce \n1 1000000 john16456890121 QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs \n2 1000000 john16456890122 Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e \n3 1000000 john16456890123 QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad \n4 1000000 john16456890124 QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY \n.. ... ... ... \n95 1000000 john164568901295 QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH4 \n96 1000000 john164568901296 QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT \n97 1000000 john164568901297 QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH3 \n98 1000000 john164568901298 QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j \n99 1000000 john164568901299 QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH \n\n ethereum_address \\\n0 0xace4ce3820cbc4d08106c6077098efff9c102153 \n1 0x2561dc7aa1f2993b71ebcd42eb7b6d89aea82999 \n2 0x943cec118f21b326ff10c716b8ae14c4a2a82b1b \n3 0x37c896cf9ff9be029992ee160b0dae49c07495d4 \n4 0xa59769e19a327d2d28bddfc2c057195cf32e5b33 \n.. ... \n95 0x65ec5436573364862ae6a950aa977b41487e5715 \n96 0x0b1c0f128d7fe50eca0af4be0f83cf775a109330 \n97 0xba288b21a6759c6785d922dd6224df9f295aec9d \n98 0xc92f3a158e6d21376faa7df09b2e972eb9d5f370 \n99 0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa \n\n ethereum_private_key \\\n0 0xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9... \n1 0x2dc1391c2e543012159153af30088206945058295693... \n2 0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef... \n3 0x94475aabb305ac4a01c6ee9dd28f302646317ca431bf... \n4 0xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146... \n.. ... \n95 0xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67... \n96 0x2289c89880cf85377c3f702a56e9498553e43fb566f1... \n97 0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9... \n98 0x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751... \n99 0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb... \n\n bostrom_address \\\n0 bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrd \n1 bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23 \n2 bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0 \n3 bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gp \n4 bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0s \n.. ... \n95 bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfm \n96 bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2 \n97 bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxv \n98 bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfch \n99 bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4 \n\n cosmos_address \\\n0 cosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2 \n1 cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5k \n2 cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkg \n3 cosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkx \n4 cosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3h \n.. ... \n95 cosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshu \n96 cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsd \n97 cosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jct \n98 cosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xs \n99 cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzj \n\n cosmos_seed \\\n0 scan then essay quality elephant curtain cage ... \n1 team visa tent boring claim melt transfer appe... \n2 tattoo verify pioneer wild cactus marriage inh... \n3 subway crawl other foot whale awkward olympic ... \n4 sock rough away buyer mask vocal position chao... \n.. ... \n95 record what garbage crumble radar bachelor glu... \n96 minimum zero symptom era dilemma burden luxury... \n97 infant jump easily melody monkey clerk exclude... \n98 fine issue keep phrase fish question strike ca... \n99 oyster bulk enough woman glare sausage merge b... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n3 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n4 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n.. ... \n95 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n96 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n97 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n98 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n99 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9... \n1 0x6d65007f9ae5cb02b65283e11aac464266be28b84193... \n2 0x735ddd89ce39a9f85d4a3bfc2332528283436812f648... \n3 0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9... \n4 0x329b4afe2546d797f01a12b9ea29e40de28af96b621a... \n.. ... \n95 0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf... \n96 0xade32187d4825afd435d06a1de72c097abc6878026fb... \n97 0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e... \n98 0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c... \n99 0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd... \n1 {'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX... \n2 {'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0... \n3 {'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs... \n4 {'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V... \n.. ... \n95 {'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq... \n96 {'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU... \n97 {'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9... \n98 {'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6... \n99 {'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD... \n1 eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF... \n2 eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX... \n3 eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk... \n4 eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH... \n.. ... \n95 eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU... \n96 eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU... \n97 eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU... \n98 eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG... \n99 eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE... \n\n ethereum_proof \\\n0 [\"90f4df66fab48f071e17043aefb87a7b15f9a40208aa... \n1 [\"799ec8d507710209e710e28bc404fb5a76c0b7f771b6... \n2 [\"e3dd964da7a4a9253f6550c97064847288fb0b4f099a... \n3 [\"8230b2ce1377c942876595055d8ac660480637b3e50c... \n4 [\"2c370916b8eefae8dcb5af3d5637ec9b9d2d93c7147c... \n.. ... \n95 [\"f7cc1d46c9c2731ae3592e4f3725a12ea174d8748b91... \n96 [\"49e9bbbd59c4da258aa66e4f0f0013c88cb99d0b85a6... \n97 [\"acb637b468bf5a79d3f76dedf008e9ec1186a26f6f7e... \n98 [\"369a3a9b4111d76ed165a06d2c72d2e9499f36c93b28... \n99 [\"abeb09574512dd8889f114703c4282ae56063cc2c8a8... \n\n cosmos_proof \n0 [\"cde0210f247f5c99c2e5c2ee0259646f4015bc93a4dc... \n1 [\"5671d8f72f465100aa45c0758226e8417470a3a67ee0... \n2 [\"533300fcaf70358423b8becd2a085590a22818e2e23b... \n3 [\"ffde428c35fcc8981b82fb3dd6f74fdf7f856cd473df... \n4 [\"18e1fe97572c09e2ce39067b5c777c0d03e651480d48... \n.. ... \n95 [\"9e5555d32a25b69e914ff4a3236977d7f97297ca63c9... \n96 [\"b401d7503e880fca89b1f410ce4ac484072322c59499... \n97 [\"04b5c345f09135d10dd07ac3e7bd5bb4a2836280be9a... \n98 [\"a098982d042ee2b9b4cf0b9160ad6c7ecc69829c01ef... \n99 [\"4dc1673b65566ea7f3e34c890616a3369ac029ed992c... \n\n[100 rows x 14 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16456890120QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce0xace4ce3820cbc4d08106c6077098efff9c1021530xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9...bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrdcosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2scan then essay quality elephant curtain cage ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9...{'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd...eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD...[\"90f4df66fab48f071e17043aefb87a7b15f9a40208aa...[\"cde0210f247f5c99c2e5c2ee0259646f4015bc93a4dc...
11000000john16456890121QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs0x2561dc7aa1f2993b71ebcd42eb7b6d89aea829990x2dc1391c2e543012159153af30088206945058295693...bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5kteam visa tent boring claim melt transfer appe...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6d65007f9ae5cb02b65283e11aac464266be28b84193...{'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX...eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF...[\"799ec8d507710209e710e28bc404fb5a76c0b7f771b6...[\"5671d8f72f465100aa45c0758226e8417470a3a67ee0...
21000000john16456890122Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e0x943cec118f21b326ff10c716b8ae14c4a2a82b1b0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef...bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkgtattoo verify pioneer wild cactus marriage inh...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x735ddd89ce39a9f85d4a3bfc2332528283436812f648...{'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0...eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX...[\"e3dd964da7a4a9253f6550c97064847288fb0b4f099a...[\"533300fcaf70358423b8becd2a085590a22818e2e23b...
31000000john16456890123QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad0x37c896cf9ff9be029992ee160b0dae49c07495d40x94475aabb305ac4a01c6ee9dd28f302646317ca431bf...bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gpcosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkxsubway crawl other foot whale awkward olympic ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9...{'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs...eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk...[\"8230b2ce1377c942876595055d8ac660480637b3e50c...[\"ffde428c35fcc8981b82fb3dd6f74fdf7f856cd473df...
41000000john16456890124QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY0xa59769e19a327d2d28bddfc2c057195cf32e5b330xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146...bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0scosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3hsock rough away buyer mask vocal position chao...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x329b4afe2546d797f01a12b9ea29e40de28af96b621a...{'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V...eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH...[\"2c370916b8eefae8dcb5af3d5637ec9b9d2d93c7147c...[\"18e1fe97572c09e2ce39067b5c777c0d03e651480d48...
.............................................
951000000john164568901295QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH40x65ec5436573364862ae6a950aa977b41487e57150xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67...bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfmcosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshurecord what garbage crumble radar bachelor glu...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf...{'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq...eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU...[\"f7cc1d46c9c2731ae3592e4f3725a12ea174d8748b91...[\"9e5555d32a25b69e914ff4a3236977d7f97297ca63c9...
961000000john164568901296QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT0x0b1c0f128d7fe50eca0af4be0f83cf775a1093300x2289c89880cf85377c3f702a56e9498553e43fb566f1...bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsdminimum zero symptom era dilemma burden luxury...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xade32187d4825afd435d06a1de72c097abc6878026fb...{'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU...eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU...[\"49e9bbbd59c4da258aa66e4f0f0013c88cb99d0b85a6...[\"b401d7503e880fca89b1f410ce4ac484072322c59499...
971000000john164568901297QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH30xba288b21a6759c6785d922dd6224df9f295aec9d0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9...bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxvcosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jctinfant jump easily melody monkey clerk exclude...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e...{'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9...eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU...[\"acb637b468bf5a79d3f76dedf008e9ec1186a26f6f7e...[\"04b5c345f09135d10dd07ac3e7bd5bb4a2836280be9a...
981000000john164568901298QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j0xc92f3a158e6d21376faa7df09b2e972eb9d5f3700x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751...bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfchcosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xsfine issue keep phrase fish question strike ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c...{'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6...eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG...[\"369a3a9b4111d76ed165a06d2c72d2e9499f36c93b28...[\"a098982d042ee2b9b4cf0b9160ad6c7ecc69829c01ef...
991000000john164568901299QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb...bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzjoyster bulk enough woman glare sausage merge b...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc...{'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R...eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE...[\"abeb09574512dd8889f114703c4282ae56063cc2c8a8...[\"4dc1673b65566ea7f3e34c890616a3369ac029ed992c...
\n

100 rows × 14 columns

\n
" + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def generate_proof(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", + " proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {claim_row[network + \"_address\"]} --amount {claim_row.amount}',\n", + " display_data=display_data)\n", + " return proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", + "\n", + "claims_df.loc[:, 'ethereum_proof'] = claims_df.apply(lambda x: generate_proof(x), axis=1)\n", + "claims_df.loc[:, 'cosmos_proof'] = claims_df.apply(lambda x: generate_proof(x, network='cosmos'), axis=1)\n", + "claims_df.to_csv('claims_ethereum_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -628,7 +689,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "78dcad791efb4dc09d9715cbc4a3d9c2" + "model_id": "ed7c41d16e03404888a0a709dedad965" } }, "metadata": {}, @@ -638,14 +699,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"create_passport\":{\"avatar\":\"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\", \"nickname\":\"john16455994800\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", + "REGISTER='{\"create_passport\":{\"avatar\":\"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\", \"nickname\":\"john16456888760\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", "{\n", " \"code\": 0,\n", " \"codespace\": \"\",\n", " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", " \"gas_used\": \"400125\",\n", " \"gas_wanted\": \"600000\",\n", - " \"height\": \"1426977\",\n", + " \"height\": \"1444585\",\n", " \"info\": \"\",\n", " \"logs\": [\n", " {\n", @@ -658,11 +719,11 @@ " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\"\n", + " \"value\": \"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\"\n", " },\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\"\n", + " \"value\": \"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", @@ -678,11 +739,11 @@ " },\n", " {\n", " \"key\": \"particleTo\",\n", - " \"value\": \"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\"\n", + " \"value\": \"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\"\n", " },\n", " {\n", " \"key\": \"particleFrom\",\n", - " \"value\": \"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\"\n", + " \"value\": \"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\"\n", " },\n", " {\n", " \"key\": \"particleTo\",\n", @@ -758,7 +819,7 @@ " },\n", " {\n", " \"key\": \"token_id\",\n", - " \"value\": \"20\"\n", + " \"value\": \"27\"\n", " }\n", " ],\n", " \"type\": \"wasm\"\n", @@ -768,12 +829,28 @@ " \"msg_index\": 0\n", " }\n", " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"20\\\"}]}]}]\",\n", + " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"27\\\"}]}]}]\",\n", " \"timestamp\": \"\",\n", " \"tx\": null,\n", - " \"txhash\": \"A9FF237A151EAC1DD44541A828AFB6FEFB12EA5DC43E07C3B9D5DA505597B9ED\"\n", + " \"txhash\": \"5A0A031089274A639F715B449994946675D7347DB9FC82DD3A1AFB99508BFC0F\"\n", "}\n" ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", + "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_48766/1346291727.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[1;32m 10\u001B[0m \u001B[0mcreate_passport_json\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0m_\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcreate_passport\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mrow\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdisplay_data\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 11\u001B[0m \u001B[0;32melse\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 12\u001B[0;31m \u001B[0mcreate_passport\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mrow\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_48766/1346291727.py\u001B[0m in \u001B[0;36mcreate_passport\u001B[0;34m(claim_row, display_data)\u001B[0m\n\u001B[1;32m 1\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mcreate_passport\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mclaim_row\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mpd\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mSeries\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdisplay_data\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mbool\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mFalse\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m----> 2\u001B[0;31m return execute_bash(\n\u001B[0m\u001B[1;32m 3\u001B[0m f'''REGISTER='{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}' \\\n\u001B[1;32m 4\u001B[0m \u001B[0;34m&\u001B[0m\u001B[0;34m&\u001B[0m \u001B[0mCONTRACT\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m\"{passport_contract_address}\"\u001B[0m\u001B[0;31m \u001B[0m\u001B[0;31m\\\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 5\u001B[0m && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", + "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_48766/1358628176.py\u001B[0m in \u001B[0;36mexecute_bash\u001B[0;34m(bash_command, display_data)\u001B[0m\n\u001B[1;32m 49\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 50\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mexecute_bash\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mbash_command\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mstr\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdisplay_data\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mbool\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mFalse\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m->\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mstr\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstr\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 51\u001B[0;31m \u001B[0m_output\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0m_error\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mPopen\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mbash_command\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mshell\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstdout\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mPIPE\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mPIPE\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcommunicate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 52\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0m_error\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 53\u001B[0m \u001B[0mdisplay_data\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mTrue\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py\u001B[0m in \u001B[0;36mcommunicate\u001B[0;34m(self, input, timeout)\u001B[0m\n\u001B[1;32m 1026\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1027\u001B[0m \u001B[0;32mtry\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1028\u001B[0;31m \u001B[0mstdout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_communicate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0minput\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mendtime\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mtimeout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 1029\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mKeyboardInterrupt\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1030\u001B[0m \u001B[0;31m# https://bugs.python.org/issue25942\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py\u001B[0m in \u001B[0;36m_communicate\u001B[0;34m(self, input, endtime, orig_timeout)\u001B[0m\n\u001B[1;32m 1866\u001B[0m 'failed to raise TimeoutExpired.')\n\u001B[1;32m 1867\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1868\u001B[0;31m \u001B[0mready\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mselector\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mselect\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtimeout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 1869\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_check_timeout\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mendtime\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0morig_timeout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstdout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1870\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/selectors.py\u001B[0m in \u001B[0;36mselect\u001B[0;34m(self, timeout)\u001B[0m\n\u001B[1;32m 413\u001B[0m \u001B[0mready\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 414\u001B[0m \u001B[0;32mtry\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 415\u001B[0;31m \u001B[0mfd_event_list\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_selector\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mpoll\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtimeout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 416\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mInterruptedError\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 417\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mready\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;31mKeyboardInterrupt\u001B[0m: " + ] } ], "source": [ @@ -799,42 +876,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "cyberlinks\n", - "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> Qmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm\n", - "\tQmbf497dHw7PB5FwqcSTYzENkwCBSkvACi96hiZXuKcumm -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", - "\tneuron: Avatar Subspace Contract\n", - "\n", - "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv\n", - "\tQmdftF8AWKtpqoC3MpNmrapVWiumGTdCPXrvYmz8V17ZVv -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", - "\tneuron: Avatar Subspace Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Name Subspace Contract\n", - "\texecute contract: Avatar Subspace Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Passport Contract\n", - "\treply contract: Passport Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: mint\n", - "\tminter: Passport Contract\n", - "\ttoken_id: 20\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(create_passport_json)" ], @@ -859,348 +902,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "outputs": [ - { - "data": { - "text/plain": "0it [00:00, ?it/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "b1b18c10722845f0ace69b223b5a8438" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "REGISTER='{\"proof_address\":{\"address\":\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\", \"nickname\":\"john16455994800\", \"signature\":\"eyJwdWJfa2V5IjoiQXBwSVZuMm8yMmlyS1UvR1VjaGdNVHR1cnRUOEJRNEt0bWo0YzhWTFFmbEsiLCJzaWduYXR1cmUiOiI5SHE5Mkl3eXFjZCtMSmsxWWZyNjJPc0txSkhxVVBNTi8wRFNSWEpib3dsK2VhQzVTeXBzZHF3K0NUaFVpY0FxZmpJd05kQ1kybGdIcHh5UEo0bGtQZz09In0=\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"276785\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1426980\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " }\n", - " ],\n", - " \"type\": \"reply\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16455994800\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNa3FG9izJXJfBxmbu4R5sR14ii1H5UB7Le9h8EPHmK4W\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16455994800\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"44C7017D0A84195DE29D890EE0468991CC3959AA0C5A91617B8C4414B3FBD22D\"\n", - "}\n", - "REGISTER='{\"proof_address\":{\"address\":\"0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\", \"nickname\":\"john16455994801\", \"signature\":\"0x438ad98a4d25cf3780a67e1a55ade66f04a3ac529b1415f2ab2ea59c38ecdd3471dc05dd32a5b4d0f0924dbebc76d1938d9aab6f669a84dc2e95ea14dfdfa3541b\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"274336\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1426981\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " }\n", - " ],\n", - " \"type\": \"reply\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16455994801\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16455994801\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"F94BB502F3CD3312158CF573E3E7DDDFABC3676BF2E57AECE39761C1B91E65C6\"\n", - "}\n", - "REGISTER='{\"proof_address\":{\"address\":\"cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\", \"nickname\":\"john16455994801\", \"signature\":\"eyJwdWJfa2V5IjoiQXFobWxhY3p4dHFEYUJIQmpoaHRZUzVBeWNaQnFuZlJHMXRDcVMwRDcwRUciLCJzaWduYXR1cmUiOiJzVVpCeVE5emorblh3UFdNdS9IVXdvL1Fid01ybnIwMUhtZzYzVHA4bytwdWc5c0gxWEFuSE9oR0hIaDRENjRnNVpIZXJDNkRZQUJuMStaYmlWZ1FOZz09In0=\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"276785\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1426982\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " }\n", - " ],\n", - " \"type\": \"reply\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16455994801\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16455994801\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"00AF6F1C5A5B966B422BE8B66000F7DEEEA1951314EF45062832B3F94057EB57\"\n", - "}\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", @@ -1226,36 +929,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "cyberlinks\n", - "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> QmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d\n", - "\tQmQx7R3FJKfpmS2eJqaygJRz8y5BYNJbT6rkLbka8bYc4d -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", - "\tneuron: Proof Subspace Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Proof Subspace Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Passport Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16455994801\n", - "\taddress: 0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(proof_ethereum_address_json)" ], @@ -1268,36 +943,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "cyberlinks\n", - "\tQmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg -> Qma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV\n", - "\tQma4MTYZ9wQoRGUREU8ukrZkqrMVhYdStHKPwbSnDbtGqV -> Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\n", - "\tneuron: Proof Subspace Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Proof Subspace Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Passport Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16455994801\n", - "\taddress: cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(proof_cosmos_address_json)" ], @@ -1322,280 +969,35 @@ }, { "cell_type": "code", - "execution_count": 18, - "outputs": [ - { - "data": { - "text/plain": "0it [00:00, ?it/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "61d8bf35ef7e44a981bec566d4cc1566" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x4608e844331df74ca530e0b8cbb80057a8e8818a --amount 10000000\n", - "b\"[\\n '39203b498080d6acaf9b0973185ff5533bd0bf4609063fac1ea33231d373e19c',\\n 'd8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16455994800\", \"gift_claiming_address\":\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\", \"gift_amount\":\"10000000\", \"proof\":[\"39203b498080d6acaf9b0973185ff5533bd0bf4609063fac1ea33231d373e19c\",\"d8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244\"]}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"308120\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1426983\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"claim\"\n", - " },\n", - " {\n", - " \"key\": \"original\",\n", - " \"value\": \"0x4608e844331df74ca530e0b8cbb80057a8e8818a\"\n", - " },\n", - " {\n", - " \"key\": \"target\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"200000000\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"200000000\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"479A0AC63A33C7D88F8F427F90F289F359AAEA3D58C68DC06DB4E337D194D3F1\"\n", - "}\n", - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz --amount 10000000\n", - "b\"[\\n '18806720ae2b9cc5497793a4251a77ab58e5dadfa702ead125f4ecc6113fab34',\\n 'd8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16455994800\", \"gift_claiming_address\":\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\", \"gift_amount\":\"10000000\", \"proof\":[\"18806720ae2b9cc5497793a4251a77ab58e5dadfa702ead125f4ecc6113fab34\",\"d8338b0fb1d0e60e588200344cde167a9fa1fe6fcd60507811d91c276b335244\"]}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"308185\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1426984\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"claim\"\n", - " },\n", - " {\n", - " \"key\": \"original\",\n", - " \"value\": \"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"\n", - " },\n", - " {\n", - " \"key\": \"target\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"200000000\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"200000000\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"AE9FFEAD5D4740225E94E4C1A8BC7941E25EFD776AC80BE0DED27EE9D32D9B6D\"\n", - "}\n" - ] + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" } - ], + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], "source": [ - "def generate_proof_and_claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {claim_row[network + \"_address\"]} --amount {claim_row.amount}',\n", - " display_data=display_data)\n", - " proof = proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", + "def claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", - " f'''CLAIM='{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{proof}}}}}' \\\n", + " f'''CLAIM='{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{claim_row[network + \"_proof\"]}}}}}' \\\n", " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", + "\n", "for index, row in tqdm(claims_df.iterrows()):\n", " if index == 0:\n", - " claim_ethereum_json, _ = generate_proof_and_claim(row, display_data=True)\n", - " claim_cosmos_json, _ = generate_proof_and_claim(row, network='cosmos', display_data=True)\n", + " claim_ethereum_json, _ = claim(row, display_data=True)\n", + " claim_cosmos_json, _ = claim(row, network='cosmos', display_data=True)\n", " else:\n", - " claim_ethereum_json_2, _ = generate_proof_and_claim(row)\n", - " claim_cosmos_json_2, _ = generate_proof_and_claim(row, network='cosmos')" + " claim_ethereum_json_2, _ = claim(row)\n", + " claim_cosmos_json_2, _ = claim(row, network='cosmos')" ], "metadata": { "collapsed": false, @@ -1606,40 +1008,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin received\n", - "\treceiver: Wallet\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: 0x4608e844331df74ca530e0b8cbb80057a8e8818a\n", - "\ttarget: Wallet\n", - "\tamount: 200000000\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(claim_ethereum_json)" ], @@ -1652,40 +1022,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin received\n", - "\treceiver: Wallet\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\n", - "\ttarget: Wallet\n", - "\tamount: 200000000\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(claim_cosmos_json)" ], @@ -1698,86 +1036,22 @@ }, { "cell_type": "code", - "execution_count": 22, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin received\n", - "\treceiver: Wallet\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: 0x9f791bd90b3b3a8f888a1414fba806d7aba85e97\n", - "\ttarget: Wallet\n", - "\tamount: 170000000\n" - ] - } - ], - "source": [ - "parse_contract_execution_json(claim_ethereum_json_2)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 23, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin received\n", - "\treceiver: Wallet\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: cosmos120gnxgzj9hv53meq7h24jkgtfw8w2lh47a4ejx\n", - "\ttarget: Wallet\n", - "\tamount: 140000000\n" - ] - } + "execution_count": null, + "outputs": [], + "source": [ + "parse_contract_execution_json(claim_ethereum_json_2)" ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(claim_cosmos_json_2)" ], @@ -1803,267 +1077,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "outputs": [ - { - "data": { - "text/plain": "0it [00:00, ?it/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "0d01340b9af54e8bb9a8f3093816409e" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLAIM='{\"release\":{\"gift_address\":\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\"}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"158902\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1426997\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"release\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"gift_address\",\n", - " \"value\": \"0x4608e844331df74ca530e0b8cbb80057a8e8818a\"\n", - " },\n", - " {\n", - " \"key\": \"stage\",\n", - " \"value\": \"9\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"0x4608e844331df74ca530e0b8cbb80057a8e8818a\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"87F3C0BB485B376A5E234D090D61FBEFA3BD81FE613DC9FA2C651208D5113BC0\"\n", - "}\n", - "CLAIM='{\"release\":{\"gift_address\":\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"}}' && cyber tx wasm execute bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"158969\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1426998\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"release\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"gift_address\",\n", - " \"value\": \"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\"\n", - " },\n", - " {\n", - " \"key\": \"stage\",\n", - " \"value\": \"9\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"19990000\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1xj68jgjr6u02njplhmkl2f4gg58uueayfrn99x2png87jpsvwx0sk58jjv\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"19990000\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"17316AAF85873C64B9D1422F203A69446CD9F6EDD96B74DD6874AF9DCBEBC25A\"\n", - "}\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", @@ -2088,41 +1103,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin received\n", - "\treceiver: Wallet\n", - "\tamount: 19990000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 19990000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 19990000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: release\n", - "\taddress: Wallet\n", - "\tgift_address: 0x4608e844331df74ca530e0b8cbb80057a8e8818a\n", - "\tstage: 9\n", - "\tamount: 19990000\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(release_ethereum_json)" ], @@ -2135,41 +1117,8 @@ }, { "cell_type": "code", - "execution_count": 26, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "coin received\n", - "\treceiver: Wallet\n", - "\tamount: 19990000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 19990000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 19990000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: release\n", - "\taddress: Wallet\n", - "\tgift_address: cosmos1za5gkyfz5jp3vhm7lphwgfdvpud87p6mf7xujz\n", - "\tstage: 9\n", - "\tamount: 19990000\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "parse_contract_execution_json(release_cosmos_json)" ], From 615b6e4840c2cc5572dfc86c4b75dd82828cdb9e Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Mon, 28 Feb 2022 15:55:45 +0800 Subject: [PATCH 18/69] - rename `Subspace` to `Subgraph` - update events parsing --- .../gift_and_passport_contracts_testing.ipynb | 777 +++++++++--------- 1 file changed, 405 insertions(+), 372 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 9eb1aae..d692eea 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -29,12 +29,13 @@ "from tqdm.notebook import tqdm\n", "from base64 import b64encode\n", "\n", - "client = ipfshttpclient.connect()\n", + "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 100\n", + "NUMBER_OF_PARTICIPANTS = 3\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 2\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", - "AVATAR_CID_LIST = [client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", + "AVATAR_CID_LIST = [ipfs_client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", "CLAIM_AMOUNT_LIST = [1_000_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", @@ -45,12 +46,13 @@ "WALLET_ADDRESS = os.getenv('WALLET_ADDRESS')\n", "NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443'\n", "NETWORK = 'space-pussy-1'\n", + "DISPLAY_TX_EXECUTION = False\n", "\n", - "INIT_SUBSPACE_CONTRACTS = False\n", - "SUBSPACE_CODE_ID = str(21)\n", - "NAME_SUBSPACE_CONTRACT_ADDRESS = 'bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt'\n", - "AVATAR_SUBSPACE_CONTRACT_ADDRESS = 'bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs'\n", - "PROOF_SUBSPACE_CONTRACT_ADDRESS = 'bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k'\n", + "INIT_SUBGRAPH_CONTRACTS = False\n", + "SUBGRAPH_CODE_ID = str(21)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", "PASSPORT_CODE_ID = str(25)\n", @@ -115,8 +117,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16456890120 QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce \n1 1000000 john16456890121 QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs \n2 1000000 john16456890122 Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e \n3 1000000 john16456890123 QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad \n4 1000000 john16456890124 QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY \n.. ... ... ... \n95 1000000 john164568901295 QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH4 \n96 1000000 john164568901296 QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT \n97 1000000 john164568901297 QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH3 \n98 1000000 john164568901298 QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j \n99 1000000 john164568901299 QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH \n\n ethereum_address \\\n0 0xace4ce3820cbc4d08106c6077098efff9c102153 \n1 0x2561dc7aa1f2993b71ebcd42eb7b6d89aea82999 \n2 0x943cec118f21b326ff10c716b8ae14c4a2a82b1b \n3 0x37c896cf9ff9be029992ee160b0dae49c07495d4 \n4 0xa59769e19a327d2d28bddfc2c057195cf32e5b33 \n.. ... \n95 0x65ec5436573364862ae6a950aa977b41487e5715 \n96 0x0b1c0f128d7fe50eca0af4be0f83cf775a109330 \n97 0xba288b21a6759c6785d922dd6224df9f295aec9d \n98 0xc92f3a158e6d21376faa7df09b2e972eb9d5f370 \n99 0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa \n\n ethereum_private_key \\\n0 0xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9... \n1 0x2dc1391c2e543012159153af30088206945058295693... \n2 0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef... \n3 0x94475aabb305ac4a01c6ee9dd28f302646317ca431bf... \n4 0xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146... \n.. ... \n95 0xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67... \n96 0x2289c89880cf85377c3f702a56e9498553e43fb566f1... \n97 0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9... \n98 0x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751... \n99 0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb... \n\n bostrom_address \\\n0 bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrd \n1 bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23 \n2 bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0 \n3 bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gp \n4 bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0s \n.. ... \n95 bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfm \n96 bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2 \n97 bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxv \n98 bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfch \n99 bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4 \n\n cosmos_address \\\n0 cosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2 \n1 cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5k \n2 cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkg \n3 cosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkx \n4 cosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3h \n.. ... \n95 cosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshu \n96 cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsd \n97 cosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jct \n98 cosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xs \n99 cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzj \n\n cosmos_seed \\\n0 scan then essay quality elephant curtain cage ... \n1 team visa tent boring claim melt transfer appe... \n2 tattoo verify pioneer wild cactus marriage inh... \n3 subway crawl other foot whale awkward olympic ... \n4 sock rough away buyer mask vocal position chao... \n.. ... \n95 record what garbage crumble radar bachelor glu... \n96 minimum zero symptom era dilemma burden luxury... \n97 infant jump easily melody monkey clerk exclude... \n98 fine issue keep phrase fish question strike ca... \n99 oyster bulk enough woman glare sausage merge b... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n3 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n4 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n.. ... \n95 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n96 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n97 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n98 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n99 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9... \n1 0x6d65007f9ae5cb02b65283e11aac464266be28b84193... \n2 0x735ddd89ce39a9f85d4a3bfc2332528283436812f648... \n3 0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9... \n4 0x329b4afe2546d797f01a12b9ea29e40de28af96b621a... \n.. ... \n95 0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf... \n96 0xade32187d4825afd435d06a1de72c097abc6878026fb... \n97 0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e... \n98 0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c... \n99 0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd... \n1 {'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX... \n2 {'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0... \n3 {'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs... \n4 {'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V... \n.. ... \n95 {'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq... \n96 {'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU... \n97 {'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9... \n98 {'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6... \n99 {'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD... \n1 eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF... \n2 eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX... \n3 eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk... \n4 eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH... \n.. ... \n95 eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU... \n96 eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU... \n97 eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU... \n98 eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG... \n99 eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE... \n\n[100 rows x 12 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16456890120QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce0xace4ce3820cbc4d08106c6077098efff9c1021530xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9...bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrdcosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2scan then essay quality elephant curtain cage ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9...{'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd...eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD...
11000000john16456890121QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs0x2561dc7aa1f2993b71ebcd42eb7b6d89aea829990x2dc1391c2e543012159153af30088206945058295693...bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5kteam visa tent boring claim melt transfer appe...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6d65007f9ae5cb02b65283e11aac464266be28b84193...{'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX...eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF...
21000000john16456890122Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e0x943cec118f21b326ff10c716b8ae14c4a2a82b1b0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef...bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkgtattoo verify pioneer wild cactus marriage inh...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x735ddd89ce39a9f85d4a3bfc2332528283436812f648...{'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0...eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX...
31000000john16456890123QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad0x37c896cf9ff9be029992ee160b0dae49c07495d40x94475aabb305ac4a01c6ee9dd28f302646317ca431bf...bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gpcosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkxsubway crawl other foot whale awkward olympic ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9...{'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs...eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk...
41000000john16456890124QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY0xa59769e19a327d2d28bddfc2c057195cf32e5b330xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146...bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0scosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3hsock rough away buyer mask vocal position chao...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x329b4afe2546d797f01a12b9ea29e40de28af96b621a...{'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V...eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH...
.......................................
951000000john164568901295QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH40x65ec5436573364862ae6a950aa977b41487e57150xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67...bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfmcosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshurecord what garbage crumble radar bachelor glu...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf...{'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq...eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU...
961000000john164568901296QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT0x0b1c0f128d7fe50eca0af4be0f83cf775a1093300x2289c89880cf85377c3f702a56e9498553e43fb566f1...bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsdminimum zero symptom era dilemma burden luxury...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xade32187d4825afd435d06a1de72c097abc6878026fb...{'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU...eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU...
971000000john164568901297QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH30xba288b21a6759c6785d922dd6224df9f295aec9d0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9...bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxvcosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jctinfant jump easily melody monkey clerk exclude...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e...{'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9...eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU...
981000000john164568901298QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j0xc92f3a158e6d21376faa7df09b2e972eb9d5f3700x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751...bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfchcosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xsfine issue keep phrase fish question strike ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c...{'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6...eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG...
991000000john164568901299QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb...bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzjoyster bulk enough woman glare sausage merge b...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc...{'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R...eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE...
\n

100 rows × 12 columns

\n
" + "text/plain": " amount nickname avatar \\\n0 1000000 john16460346760 QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge \n1 1000000 john16460346761 QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC \n2 1000000 john16460346762 QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW \n\n ethereum_address \\\n0 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f \n1 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d \n2 0x945f32e5bc2ec6a8216a80945bde2947fb6966e8 \n\n ethereum_private_key \\\n0 0xbc4487513ee05cc385b9146422cccf41686acf9cddcc... \n1 0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126... \n2 0xe16b149b132d38c43186b46c593e55df41a6671da633... \n\n bostrom_address \\\n0 bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdg \n1 bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8 \n2 bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67 \n\n cosmos_address \\\n0 cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0 \n1 cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq \n2 cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2ye \n\n cosmos_seed \\\n0 jelly busy sniff ready inherit rule milk episo... \n1 creek interest trash charge output embrace mem... \n2 dose prosper tube source reason typical summer... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5... \n1 0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5... \n2 0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB... \n1 {'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq... \n2 {'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU... \n1 eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG... \n2 eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16460346760QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge0x9b600120d5bd1dde9a9b315a8f430763afb7d76f0xbc4487513ee05cc385b9146422cccf41686acf9cddcc...bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdgcosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0jelly busy sniff ready inherit rule milk episo...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5...{'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB...eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU...
11000000john16460346761QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126...bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgqcreek interest trash charge output embrace mem...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5...{'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq...eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG...
21000000john16460346762QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW0x945f32e5bc2ec6a8216a80945bde2947fb6966e80xe16b149b132d38c43186b46c593e55df41a6671da633...bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2yedose prosper tube source reason typical summer...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84...{'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG...eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm...
\n
" }, "execution_count": 2, "metadata": {}, @@ -142,13 +144,6 @@ " claim_item['cosmos_seed'] = bostrom_wallet['seed']\n", "\n", " # Create message\n", - " # message_json = {\n", - " # \"nickname\": claim_item['nickname'],\n", - " # \"gift_claiming_address\": claim_item['ethereum_address'],\n", - " # \"gift_amount\": claim_item['amount'],\n", - " # \"target_address\": claim_item['bostrom_address']\n", - " # }\n", - " # claim_item['message'] = json.dumps(message_json)\n", " claim_item['message'] = f\"{WALLET_ADDRESS}:QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV\"\n", "\n", " # Sign message form Ethereum address\n", @@ -225,7 +220,7 @@ { "cell_type": "markdown", "source": [ - "### Instantiate Subspace Contracts" + "### Instantiate SUBGRAPH Contracts" ], "metadata": { "collapsed": false, @@ -242,36 +237,36 @@ "name": "stdout", "output_type": "stream", "text": [ - "Name subspace contract address: bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\n", - "Avatar subspace contract address: bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\n", - "Proof subspace contract address: bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\n" + "Name subgraph contract address: bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\n", + "Avatar subgraph contract address: bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\n", + "Proof subgraph contract address: bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\n" ] } ], "source": [ - "if INIT_SUBSPACE_CONTRACTS:\n", - " name_subspace_contract_address = \\\n", + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", " instantiate_contract(\n", " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBSPACE_CODE_ID,\n", - " contract_label='test name subspace')\n", - " avatar_subspace_contract_address = \\\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", " instantiate_contract(\n", " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBSPACE_CODE_ID,\n", - " contract_label='test avatar subspace')\n", - " proof_subspace_contract_address = \\\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph')\n", + " proof_subgraph_contract_address = \\\n", " instantiate_contract(\n", " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBSPACE_CODE_ID,\n", - " contract_label='test proof subspace')\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph')\n", "else:\n", - " name_subspace_contract_address = NAME_SUBSPACE_CONTRACT_ADDRESS\n", - " avatar_subspace_contract_address = AVATAR_SUBSPACE_CONTRACT_ADDRESS\n", - " proof_subspace_contract_address = PROOF_SUBSPACE_CONTRACT_ADDRESS\n", - "print(f'Name subspace contract address: {name_subspace_contract_address}\\n'\n", - " f'Avatar subspace contract address: {avatar_subspace_contract_address}\\n'\n", - " f'Proof subspace contract address: {proof_subspace_contract_address}')" + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" ], "metadata": { "collapsed": false, @@ -308,7 +303,7 @@ "if INIT_PASSPORT_CONTRACT:\n", " passport_contract_address = \\\n", " instantiate_contract(\n", - " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subspace\": \"{avatar_subspace_contract_address}\", \"name_subspace\": \"{name_subspace_contract_address}\", \"proof_subspace\": \"{proof_subspace_contract_address}\"}}''',\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", " contract_code_id=PASSPORT_CODE_ID,\n", " contract_label='test passport')\n", "else:\n", @@ -325,7 +320,7 @@ { "cell_type": "markdown", "source": [ - "### Set executor in the Subspace Contracts" + "### Set executor in the Subgraph Contracts" ], "metadata": { "collapsed": false, @@ -339,17 +334,17 @@ "execution_count": 6, "outputs": [], "source": [ - "def set_executor_subspace(subspace_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", " return execute_bash(\n", " f'''REGISTER='{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}' \\\n", - " && CONTRACT=\"{subspace_contract_address}\" \\\n", + " && CONTRACT=\"{subgraph_contract_address}\" \\\n", " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", - "if INIT_PASSPORT_CONTRACT or INIT_SUBSPACE_CONTRACTS:\n", - " set_executor_subspace(subspace_contract_address=name_subspace_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subspace(subspace_contract_address=avatar_subspace_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subspace(subspace_contract_address=proof_subspace_contract_address, new_executor_address=passport_contract_address)" + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" ], "metadata": { "collapsed": false, @@ -378,7 +373,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1ky7s3pwgx55dh52h80glk8fyq6k6y5qmrsnpasurxjeqnhyhwh0qfx4jqj\n" + "Gift contract address: bostrom1xfhtdeernre33xm83wu0eg08433aejyq0ay6h03qatxqrf40k8zqkuhwax\n" ] } ], @@ -409,17 +404,33 @@ "def get_contract_name(contract_address: str) -> str:\n", " address_dict = {gift_contract_address: 'Gift Contract',\n", " passport_contract_address: 'Passport Contract',\n", - " WALLET_ADDRESS: 'Wallet',\n", - " name_subspace_contract_address: 'Name Subspace Contract',\n", - " avatar_subspace_contract_address: 'Avatar Subspace Contract',\n", - " proof_subspace_contract_address: 'Proof Subspace Contract'}\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + " proof_subgraph_contract_address: 'Proof Subgraph Contract'}\n", " try:\n", " return address_dict[contract_address]\n", " except KeyError:\n", " return contract_address\n", "\n", "\n", - "def parse_contract_execution_json(contract_execution_json: str) -> None:\n", + "def get_name_from_cid(ipfs_hash: str, row=None) -> str:\n", + " if row is None:\n", + " return ipfs_hash\n", + " cid_name_dict = {\n", + " row['avatar']: 'Avatar',\n", + " ipfs_client.add_str(row['nickname']): 'Nickname',\n", + " ipfs_client.add_str(row['ethereum_address']): 'Ethereum Address',\n", + " ipfs_client.add_str(row['cosmos_address']): 'Cosmos Address',\n", + " ipfs_client.add_str(WALLET_ADDRESS): 'Passport Owner Address'}\n", + " try:\n", + " return cid_name_dict[ipfs_hash]\n", + " except KeyError:\n", + " return ipfs_hash\n", + "\n", + "\n", + "def parse_contract_execution_json(contract_execution_json: str, row=None) -> None:\n", + " print('\\nEvents')\n", " if len(json.loads(contract_execution_json)['logs']) == 0:\n", " print(json.loads(contract_execution_json)['raw_log'])\n", " for log_item in json.loads(contract_execution_json)['logs']:\n", @@ -448,11 +459,11 @@ " print('cyberlinks')\n", " for i, attr_item in enumerate(event_item['attributes']):\n", " if attr_item['key'] == 'particleFrom':\n", - " print(f'\\t{attr_item[\"value\"]} -> {event_item[\"attributes\"][i + 1][\"value\"]}')\n", + " print(f'\\t{get_name_from_cid(attr_item[\"value\"], row=row)} -> {get_name_from_cid(event_item[\"attributes\"][i + 1][\"value\"], row=row)}')\n", " elif attr_item['key'] == 'particleTo':\n", " pass\n", " elif attr_item['key'] == 'neuron':\n", - " print(f'\\tneuron: {get_contract_name(event_item[\"attributes\"][-1][\"value\"])}\\n')\n", + " print(f'\\tneuron: {get_contract_name(attr_item[\"value\"])}\\n')\n", " else:\n", " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", " elif event_item['type'] == 'coin_received':\n", @@ -531,7 +542,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: 2b3656e620551269a4eb38345a6b24123d41e3b085c616c579bacb09a350f816\n" + "Merkle root: b006921573f8fcf0e2267d25506f32a9281961973898bdedc10cc6224bd08071\n" ] } ], @@ -557,16 +568,18 @@ "name": "stdout", "output_type": "stream", "text": [ + "\n", + "Events\n", "\n", "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: 2b3656e620551269a4eb38345a6b24123d41e3b085c616c579bacb09a350f816\n" + "\tmerkle_root: b006921573f8fcf0e2267d25506f32a9281961973898bdedc10cc6224bd08071\n" ] } ], @@ -606,7 +619,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "{\"data\":{\"merkle_root\":\"2b3656e620551269a4eb38345a6b24123d41e3b085c616c579bacb09a350f816\"}}\n", + "{\"data\":{\"merkle_root\":\"b006921573f8fcf0e2267d25506f32a9281961973898bdedc10cc6224bd08071\"}}\n", "\n" ] } @@ -641,8 +654,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16456890120 QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce \n1 1000000 john16456890121 QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs \n2 1000000 john16456890122 Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e \n3 1000000 john16456890123 QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad \n4 1000000 john16456890124 QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY \n.. ... ... ... \n95 1000000 john164568901295 QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH4 \n96 1000000 john164568901296 QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT \n97 1000000 john164568901297 QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH3 \n98 1000000 john164568901298 QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j \n99 1000000 john164568901299 QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH \n\n ethereum_address \\\n0 0xace4ce3820cbc4d08106c6077098efff9c102153 \n1 0x2561dc7aa1f2993b71ebcd42eb7b6d89aea82999 \n2 0x943cec118f21b326ff10c716b8ae14c4a2a82b1b \n3 0x37c896cf9ff9be029992ee160b0dae49c07495d4 \n4 0xa59769e19a327d2d28bddfc2c057195cf32e5b33 \n.. ... \n95 0x65ec5436573364862ae6a950aa977b41487e5715 \n96 0x0b1c0f128d7fe50eca0af4be0f83cf775a109330 \n97 0xba288b21a6759c6785d922dd6224df9f295aec9d \n98 0xc92f3a158e6d21376faa7df09b2e972eb9d5f370 \n99 0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa \n\n ethereum_private_key \\\n0 0xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9... \n1 0x2dc1391c2e543012159153af30088206945058295693... \n2 0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef... \n3 0x94475aabb305ac4a01c6ee9dd28f302646317ca431bf... \n4 0xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146... \n.. ... \n95 0xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67... \n96 0x2289c89880cf85377c3f702a56e9498553e43fb566f1... \n97 0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9... \n98 0x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751... \n99 0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb... \n\n bostrom_address \\\n0 bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrd \n1 bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23 \n2 bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0 \n3 bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gp \n4 bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0s \n.. ... \n95 bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfm \n96 bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2 \n97 bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxv \n98 bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfch \n99 bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4 \n\n cosmos_address \\\n0 cosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2 \n1 cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5k \n2 cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkg \n3 cosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkx \n4 cosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3h \n.. ... \n95 cosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshu \n96 cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsd \n97 cosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jct \n98 cosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xs \n99 cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzj \n\n cosmos_seed \\\n0 scan then essay quality elephant curtain cage ... \n1 team visa tent boring claim melt transfer appe... \n2 tattoo verify pioneer wild cactus marriage inh... \n3 subway crawl other foot whale awkward olympic ... \n4 sock rough away buyer mask vocal position chao... \n.. ... \n95 record what garbage crumble radar bachelor glu... \n96 minimum zero symptom era dilemma burden luxury... \n97 infant jump easily melody monkey clerk exclude... \n98 fine issue keep phrase fish question strike ca... \n99 oyster bulk enough woman glare sausage merge b... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n3 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n4 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n.. ... \n95 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n96 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n97 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n98 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n99 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9... \n1 0x6d65007f9ae5cb02b65283e11aac464266be28b84193... \n2 0x735ddd89ce39a9f85d4a3bfc2332528283436812f648... \n3 0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9... \n4 0x329b4afe2546d797f01a12b9ea29e40de28af96b621a... \n.. ... \n95 0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf... \n96 0xade32187d4825afd435d06a1de72c097abc6878026fb... \n97 0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e... \n98 0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c... \n99 0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd... \n1 {'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX... \n2 {'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0... \n3 {'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs... \n4 {'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V... \n.. ... \n95 {'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq... \n96 {'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU... \n97 {'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9... \n98 {'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6... \n99 {'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD... \n1 eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF... \n2 eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX... \n3 eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk... \n4 eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH... \n.. ... \n95 eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU... \n96 eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU... \n97 eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU... \n98 eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG... \n99 eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE... \n\n ethereum_proof \\\n0 [\"90f4df66fab48f071e17043aefb87a7b15f9a40208aa... \n1 [\"799ec8d507710209e710e28bc404fb5a76c0b7f771b6... \n2 [\"e3dd964da7a4a9253f6550c97064847288fb0b4f099a... \n3 [\"8230b2ce1377c942876595055d8ac660480637b3e50c... \n4 [\"2c370916b8eefae8dcb5af3d5637ec9b9d2d93c7147c... \n.. ... \n95 [\"f7cc1d46c9c2731ae3592e4f3725a12ea174d8748b91... \n96 [\"49e9bbbd59c4da258aa66e4f0f0013c88cb99d0b85a6... \n97 [\"acb637b468bf5a79d3f76dedf008e9ec1186a26f6f7e... \n98 [\"369a3a9b4111d76ed165a06d2c72d2e9499f36c93b28... \n99 [\"abeb09574512dd8889f114703c4282ae56063cc2c8a8... \n\n cosmos_proof \n0 [\"cde0210f247f5c99c2e5c2ee0259646f4015bc93a4dc... \n1 [\"5671d8f72f465100aa45c0758226e8417470a3a67ee0... \n2 [\"533300fcaf70358423b8becd2a085590a22818e2e23b... \n3 [\"ffde428c35fcc8981b82fb3dd6f74fdf7f856cd473df... \n4 [\"18e1fe97572c09e2ce39067b5c777c0d03e651480d48... \n.. ... \n95 [\"9e5555d32a25b69e914ff4a3236977d7f97297ca63c9... \n96 [\"b401d7503e880fca89b1f410ce4ac484072322c59499... \n97 [\"04b5c345f09135d10dd07ac3e7bd5bb4a2836280be9a... \n98 [\"a098982d042ee2b9b4cf0b9160ad6c7ecc69829c01ef... \n99 [\"4dc1673b65566ea7f3e34c890616a3369ac029ed992c... \n\n[100 rows x 14 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16456890120QmUPBakJj5Y3bnFYpAi58UssjnFLyxDVx6CpX8t8cZ3Xce0xace4ce3820cbc4d08106c6077098efff9c1021530xcbcfa4354ddfe67d6a0549289a28690a29e2b5cd79f9...bostrom19vjmuzuhv7wpgceaqxtyyjlejnv9ytek2fhfrdcosmos19vjmuzuhv7wpgceaqxtyyjlejnv9ytekf6r6a2scan then essay quality elephant curtain cage ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xd265b36b2a8bf1651ecc41b1e8814eff629ed035c9d9...{'pub_key': 'AzcFxx7ohDBkXQNaLt55aX9AIb+ghOxHd...eyJwdWJfa2V5IjoiQXpjRnh4N29oREJrWFFOYUx0NTVhWD...[\"90f4df66fab48f071e17043aefb87a7b15f9a40208aa...[\"cde0210f247f5c99c2e5c2ee0259646f4015bc93a4dc...
11000000john16456890121QmRSpsrrsCCfcRfKqbQFfF7X7UdsQqkf9g9y7xckXqVrcs0x2561dc7aa1f2993b71ebcd42eb7b6d89aea829990x2dc1391c2e543012159153af30088206945058295693...bostrom1vwdnx8ru6s2yxk60m66fc5kzgywvwqdc57jt23cosmos1vwdnx8ru6s2yxk60m66fc5kzgywvwqdchdxc5kteam visa tent boring claim melt transfer appe...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6d65007f9ae5cb02b65283e11aac464266be28b84193...{'pub_key': 'A+BhdQhp/pqiDzdVq0OE28T32xvWSFNTX...eyJwdWJfa2V5IjoiQStCaGRRaHAvcHFpRHpkVnEwT0UyOF...[\"799ec8d507710209e710e28bc404fb5a76c0b7f771b6...[\"5671d8f72f465100aa45c0758226e8417470a3a67ee0...
21000000john16456890122Qmej4fH3ToSYFeDgTQVfaqJBLpP7CR8rpzuNciXeZdec8e0x943cec118f21b326ff10c716b8ae14c4a2a82b1b0xca3c4b50d40acb3030a30d0ff21e8f12aeb696786bef...bostrom1czds378wvgf33qts5lzkvcv6xekf47j7u79pg0cosmos1czds378wvgf33qts5lzkvcv6xekf47j7ld3jkgtattoo verify pioneer wild cactus marriage inh...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x735ddd89ce39a9f85d4a3bfc2332528283436812f648...{'pub_key': 'A/uZetQ/nscjtDQ5LZcJL5ytHIg03Z9l0...eyJwdWJfa2V5IjoiQS91WmV0US9uc2NqdERRNUxaY0pMNX...[\"e3dd964da7a4a9253f6550c97064847288fb0b4f099a...[\"533300fcaf70358423b8becd2a085590a22818e2e23b...
31000000john16456890123QmdLhvd7efuCXvCVrECXjGw1PqzgTz9dDkHPZLFwgKNQad0x37c896cf9ff9be029992ee160b0dae49c07495d40x94475aabb305ac4a01c6ee9dd28f302646317ca431bf...bostrom1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hnah4gpcosmos1dkynfk6lwfts9krzl5lz2ytjqq4kcj5hswrxkxsubway crawl other foot whale awkward olympic ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xe0229274c0e7f50a9860986c8dc25a41e612f16c8ff9...{'pub_key': 'AjiCYjaC6+TJve2QRIqjYJGwb7UaQuFDs...eyJwdWJfa2V5IjoiQWppQ1lqYUM2K1RKdmUyUVJJcWpZSk...[\"8230b2ce1377c942876595055d8ac660480637b3e50c...[\"ffde428c35fcc8981b82fb3dd6f74fdf7f856cd473df...
41000000john16456890124QmbAGMrNmdrdrLRJTGReuoWFQKKQ4cPydNGGUgAiJz2PNY0xa59769e19a327d2d28bddfc2c057195cf32e5b330xe01ff9b4d81bb31a9353bca3c918137171ac2a8fc146...bostrom1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3zx4m0scosmos1ajg7t4zcmu9x9h299nsfct3h6m4mx2k3p4pg3hsock rough away buyer mask vocal position chao...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x329b4afe2546d797f01a12b9ea29e40de28af96b621a...{'pub_key': 'AsTg0VX5VcIDyaiAh8YOjHwgPk+3PDB7V...eyJwdWJfa2V5IjoiQXNUZzBWWDVWY0lEeWFpQWg4WU9qSH...[\"2c370916b8eefae8dcb5af3d5637ec9b9d2d93c7147c...[\"18e1fe97572c09e2ce39067b5c777c0d03e651480d48...
.............................................
951000000john164568901295QmQCZk9tBmQ9UvyLcvmB9g9z3gtoMNXdQADnyNJWX94aH40x65ec5436573364862ae6a950aa977b41487e57150xbca87ea9f0d1e9c0f0fd594758f5d67151d39f280e67...bostrom15pc0j3j0he3mdepjqg73g6fa0l3nau7jqycrfmcosmos15pc0j3j0he3mdepjqg73g6fa0l3nau7jrhvshurecord what garbage crumble radar bachelor glu...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x038be813f5f2d71b24e4092f662019eacc6dca6c0ddf...{'pub_key': 'A1CHZ152GpbcDpzJ3TvOquL+WPkqdZ9Wq...eyJwdWJfa2V5IjoiQTFDSFoxNTJHcGJjRHB6SjNUdk9xdU...[\"f7cc1d46c9c2731ae3592e4f3725a12ea174d8748b91...[\"9e5555d32a25b69e914ff4a3236977d7f97297ca63c9...
961000000john164568901296QmSTGHiCvHsBP5eUQ8Atbqt8RM9VXc8BewbmcTEm6hV6YT0x0b1c0f128d7fe50eca0af4be0f83cf775a1093300x2289c89880cf85377c3f702a56e9498553e43fb566f1...bostrom1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeemnzstw2cosmos1fgfkqjtz4p6lnz9ywnpr7fm09nxlpeems3ycsdminimum zero symptom era dilemma burden luxury...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xade32187d4825afd435d06a1de72c097abc6878026fb...{'pub_key': 'AmkHIqXGx93glYtD/kFyeiBYDTIDZOGaU...eyJwdWJfa2V5IjoiQW1rSElxWEd4OTNnbFl0RC9rRnllaU...[\"49e9bbbd59c4da258aa66e4f0f0013c88cb99d0b85a6...[\"b401d7503e880fca89b1f410ce4ac484072322c59499...
971000000john164568901297QmRoLrGR4nc7pHixeEan5ZvTQxaJ652RNoiGkMqPMtEYH30xba288b21a6759c6785d922dd6224df9f295aec9d0x6cb6a8659aff2cfc4cf7476e48f9177f0ecb9028f6f9...bostrom15eyq9h8jldnu2gk7cymzsr2q5jfc6qhdke9pxvcosmos15eyq9h8jldnu2gk7cymzsr2q5jfc6qhd423jctinfant jump easily melody monkey clerk exclude...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x9d26ca3c447253ef4139d1e5b90cfb5cb50461b7ee6e...{'pub_key': 'Awu43XCus7vNhfOAQiGRY9AQEVMEbT2u9...eyJwdWJfa2V5IjoiQXd1NDNYQ3VzN3ZOaGZPQVFpR1JZOU...[\"acb637b468bf5a79d3f76dedf008e9ec1186a26f6f7e...[\"04b5c345f09135d10dd07ac3e7bd5bb4a2836280be9a...
981000000john164568901298QmaQQd6vN3zu6DHgddHmXEZTxnNdU7tQthXgmZ7tSygz9j0xc92f3a158e6d21376faa7df09b2e972eb9d5f3700x2dc5b22bdb0b694b530324629cdbf6810f65e1d01751...bostrom1l4s3n4wphqvwvwfyp0n4ecehft406jydfzwfchcosmos1l4s3n4wphqvwvwfyp0n4ecehft406jyd2366xsfine issue keep phrase fish question strike ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xbed6d266aef05af86597fcf95f33bff6dc07c3867a3c...{'pub_key': 'ApTDYGeB55HNgOzPus10IHlq7UNDYF4L6...eyJwdWJfa2V5IjoiQXBURFlHZUI1NUhOZ096UHVzMTBJSG...[\"369a3a9b4111d76ed165a06d2c72d2e9499f36c93b28...[\"a098982d042ee2b9b4cf0b9160ad6c7ecc69829c01ef...
991000000john164568901299QmWoLwNfhtxGJn8KrbTTSPvoaeVFeXTvEYR6fCpa34cHzH0xf81e61ee2f2632d87404edc2988d94c6e4a8e8aa0xe1624fdab49a996439c040eabce3eb9f9fbe87231aeb...bostrom1rndsjjymvl6gmylrzxzss0u2det42ujg3fc7u4cosmos1rndsjjymvl6gmylrzxzss0u2det42ujgj6vdzjoyster bulk enough woman glare sausage merge b...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x5ce4d8957108c3f1f8a66f5dee40334c3d6a950291dc...{'pub_key': 'Ag02pSXdROHO/NnmWcVc9hCyIfUiI221R...eyJwdWJfa2V5IjoiQWcwMnBTWGRST0hPL05ubVdjVmM5aE...[\"abeb09574512dd8889f114703c4282ae56063cc2c8a8...[\"4dc1673b65566ea7f3e34c890616a3369ac029ed992c...
\n

100 rows × 14 columns

\n
" + "text/plain": " amount nickname avatar \\\n0 1000000 john16460346760 QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge \n1 1000000 john16460346761 QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC \n2 1000000 john16460346762 QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW \n\n ethereum_address \\\n0 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f \n1 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d \n2 0x945f32e5bc2ec6a8216a80945bde2947fb6966e8 \n\n ethereum_private_key \\\n0 0xbc4487513ee05cc385b9146422cccf41686acf9cddcc... \n1 0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126... \n2 0xe16b149b132d38c43186b46c593e55df41a6671da633... \n\n bostrom_address \\\n0 bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdg \n1 bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8 \n2 bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67 \n\n cosmos_address \\\n0 cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0 \n1 cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq \n2 cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2ye \n\n cosmos_seed \\\n0 jelly busy sniff ready inherit rule milk episo... \n1 creek interest trash charge output embrace mem... \n2 dose prosper tube source reason typical summer... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5... \n1 0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5... \n2 0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB... \n1 {'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq... \n2 {'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU... \n1 eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG... \n2 eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm... \n\n ethereum_proof \\\n0 [\"f696196686b00c9ca342576f75f957df68a6c8400d67... \n1 [\"968be20a70aeb28afb93368b61e23a3c371344ce2745... \n2 [\"ad257d9cfe41d8bb520eca3d52406ad7df991b88ec65... \n\n cosmos_proof \n0 [\"f0d28166f568dc15526bbfe9debe6499576a1d0f31dc... \n1 [\"48e34ad2f19327883ce5d582c74b1031cd69268a8c57... \n2 [\"244a668003cdedfaa013060e88c3e05a6bbde48f0f7c... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16460346760QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge0x9b600120d5bd1dde9a9b315a8f430763afb7d76f0xbc4487513ee05cc385b9146422cccf41686acf9cddcc...bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdgcosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0jelly busy sniff ready inherit rule milk episo...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5...{'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB...eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU...[\"f696196686b00c9ca342576f75f957df68a6c8400d67...[\"f0d28166f568dc15526bbfe9debe6499576a1d0f31dc...
11000000john16460346761QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126...bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgqcreek interest trash charge output embrace mem...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5...{'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq...eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG...[\"968be20a70aeb28afb93368b61e23a3c371344ce2745...[\"48e34ad2f19327883ce5d582c74b1031cd69268a8c57...
21000000john16460346762QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW0x945f32e5bc2ec6a8216a80945bde2947fb6966e80xe16b149b132d38c43186b46c593e55df41a6671da633...bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2yedose prosper tube source reason typical summer...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84...{'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG...eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm...[\"ad257d9cfe41d8bb520eca3d52406ad7df991b88ec65...[\"244a668003cdedfaa013060e88c3e05a6bbde48f0f7c...
\n
" }, "execution_count": 13, "metadata": {}, @@ -681,7 +694,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "outputs": [ { "data": { @@ -689,7 +702,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "ed7c41d16e03404888a0a709dedad965" + "model_id": "d38f73d5f4b2493c8ff8405fc797b865" } }, "metadata": {}, @@ -699,157 +712,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"create_passport\":{\"avatar\":\"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\", \"nickname\":\"john16456888760\"}}' && CONTRACT=\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"400125\",\n", - " \"gas_wanted\": \"600000\",\n", - " \"height\": \"1444585\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\"\n", - " },\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " }\n", - " ],\n", - " \"type\": \"reply\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"mint\"\n", - " },\n", - " {\n", - " \"key\": \"minter\",\n", - " \"value\": \"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\"\n", - " },\n", - " {\n", - " \"key\": \"token_id\",\n", - " \"value\": \"27\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmerddFhqwwptJuMDE8Cin1xHJo7AmDQMKTNeoj38oeGcs\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmRge6NNuXmaafJKBC6jcHJ5AhTyiAeyHAfRoTuaidNJvU\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"Qmb6ckJ1zaYx2htqzsgJSK4D7QRbJesPtaL9zYHq5EVnkg\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"reply\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"27\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"5A0A031089274A639F715B449994946675D7347DB9FC82DD3A1AFB99508BFC0F\"\n", - "}\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_48766/1346291727.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[1;32m 10\u001B[0m \u001B[0mcreate_passport_json\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0m_\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcreate_passport\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mrow\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdisplay_data\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 11\u001B[0m \u001B[0;32melse\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 12\u001B[0;31m \u001B[0mcreate_passport\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mrow\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", - "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_48766/1346291727.py\u001B[0m in \u001B[0;36mcreate_passport\u001B[0;34m(claim_row, display_data)\u001B[0m\n\u001B[1;32m 1\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mcreate_passport\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mclaim_row\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mpd\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mSeries\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdisplay_data\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mbool\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mFalse\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m----> 2\u001B[0;31m return execute_bash(\n\u001B[0m\u001B[1;32m 3\u001B[0m f'''REGISTER='{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}' \\\n\u001B[1;32m 4\u001B[0m \u001B[0;34m&\u001B[0m\u001B[0;34m&\u001B[0m \u001B[0mCONTRACT\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m\"{passport_contract_address}\"\u001B[0m\u001B[0;31m \u001B[0m\u001B[0;31m\\\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 5\u001B[0m && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_48766/1358628176.py\u001B[0m in \u001B[0;36mexecute_bash\u001B[0;34m(bash_command, display_data)\u001B[0m\n\u001B[1;32m 49\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 50\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mexecute_bash\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mbash_command\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mstr\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mdisplay_data\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mbool\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mFalse\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m->\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mstr\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstr\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 51\u001B[0;31m \u001B[0m_output\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0m_error\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mPopen\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mbash_command\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mshell\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstdout\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mPIPE\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mPIPE\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcommunicate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 52\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0m_error\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 53\u001B[0m \u001B[0mdisplay_data\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mTrue\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py\u001B[0m in \u001B[0;36mcommunicate\u001B[0;34m(self, input, timeout)\u001B[0m\n\u001B[1;32m 1026\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1027\u001B[0m \u001B[0;32mtry\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1028\u001B[0;31m \u001B[0mstdout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_communicate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0minput\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mendtime\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mtimeout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 1029\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mKeyboardInterrupt\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1030\u001B[0m \u001B[0;31m# https://bugs.python.org/issue25942\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py\u001B[0m in \u001B[0;36m_communicate\u001B[0;34m(self, input, endtime, orig_timeout)\u001B[0m\n\u001B[1;32m 1866\u001B[0m 'failed to raise TimeoutExpired.')\n\u001B[1;32m 1867\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1868\u001B[0;31m \u001B[0mready\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mselector\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mselect\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtimeout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 1869\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_check_timeout\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mendtime\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0morig_timeout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstdout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1870\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/selectors.py\u001B[0m in \u001B[0;36mselect\u001B[0;34m(self, timeout)\u001B[0m\n\u001B[1;32m 413\u001B[0m \u001B[0mready\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 414\u001B[0m \u001B[0;32mtry\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 415\u001B[0;31m \u001B[0mfd_event_list\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_selector\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mpoll\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtimeout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 416\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mInterruptedError\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 417\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mready\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;31mKeyboardInterrupt\u001B[0m: " + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tPassport Owner Address -> Nickname\n", + "\tNickname -> Passport Owner Address\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tPassport Owner Address -> Avatar\n", + "\tAvatar -> Passport Owner Address\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Passport Contract\n", + "\treply contract: Passport Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: mint\n", + "\tminter: Passport Contract\n", + "\ttoken_id: 40\n" ] } ], @@ -861,9 +752,10 @@ " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", + "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " create_passport_json, _ = create_passport(row, display_data=True)\n", + " create_passport_json, _ = create_passport(row, display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(create_passport_json, row=row)\n", " else:\n", " create_passport(row)" ], @@ -874,20 +766,6 @@ } } }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(create_passport_json)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, { "cell_type": "markdown", "source": [ @@ -902,8 +780,73 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 15, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "e7d455e7dc374a03a55abd6b63e0b55e" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tPassport Owner Address -> Ethereum Address\n", + "\tEthereum Address -> Passport Owner Address\n", + "\tneuron: Proof Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Passport Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16460346761\n", + "\taddress: 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d\n", + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tPassport Owner Address -> Cosmos Address\n", + "\tCosmos Address -> Passport Owner Address\n", + "\tneuron: Proof Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Passport Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16460346761\n", + "\taddress: cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq\n" + ] + } + ], "source": [ "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", @@ -912,41 +855,16 @@ " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", + "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 1:\n", - " proof_ethereum_address_json, _ = proof_address(row, display_data=True)\n", - " proof_cosmos_address_json, _ = proof_address(row, network='cosmos', display_data=True)\n", + " proof_ethereum_address_json, _ = proof_address(row, display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(proof_ethereum_address_json, row=row)\n", + "\n", + " proof_cosmos_address_json, _ = proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(proof_cosmos_address_json, row=row)\n", " else:\n", " proof_address(row)\n", - " proof_address(row, network='cosmos', display_data=True)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(proof_ethereum_address_json)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(proof_cosmos_address_json)" + " proof_address(row, network='cosmos')" ], "metadata": { "collapsed": false, @@ -958,7 +876,7 @@ { "cell_type": "markdown", "source": [ - "### Generate Proofs and Claim" + "### Claim" ], "metadata": { "collapsed": false, @@ -969,20 +887,135 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" + "execution_count": 16, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "81a218255f3f44e7bbcdbc362b9e0b4b" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Passport Owner Address\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Passport Owner Address\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f\n", + "\ttarget: Passport Owner Address\n", + "\tamount: 20000000\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Passport Owner Address\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Passport Owner Address\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0\n", + "\ttarget: Passport Owner Address\n", + "\tamount: 20000000\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Passport Owner Address\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Passport Owner Address\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d\n", + "\ttarget: Passport Owner Address\n", + "\tamount: 19700000\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Passport Owner Address\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Passport Owner Address\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq\n", + "\ttarget: Passport Owner Address\n", + "\tamount: 19400000\n" + ] } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], + ], "source": [ "def claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", @@ -991,69 +1024,19 @@ " display_data=display_data)\n", "\n", "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", + "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " claim_ethereum_json, _ = claim(row, display_data=True)\n", - " claim_cosmos_json, _ = claim(row, network='cosmos', display_data=True)\n", + " claim_ethereum_json, _ = claim(row, display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(claim_ethereum_json)\n", + "\n", + " claim_cosmos_json, _ = claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(claim_cosmos_json)\n", " else:\n", " claim_ethereum_json_2, _ = claim(row)\n", - " claim_cosmos_json_2, _ = claim(row, network='cosmos')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(claim_ethereum_json)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(claim_cosmos_json)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(claim_ethereum_json_2)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(claim_cosmos_json_2)" + " parse_contract_execution_json(claim_ethereum_json_2)\n", + "\n", + " claim_cosmos_json_2, _ = claim(row, network='cosmos')\n", + " parse_contract_execution_json(claim_cosmos_json_2)" ], "metadata": { "collapsed": false, @@ -1077,8 +1060,83 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 17, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "fa9d042439804fcb9dcd139f54b4e6ff" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Passport Owner Address\n", + "\tamount: 1990000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 1990000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Passport Owner Address\n", + "\tsender: Gift Contract\n", + "\tamount: 1990000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: Passport Owner Address\n", + "\tgift_address: 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f\n", + "\tstage: 9\n", + "\tamount: 1990000\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Passport Owner Address\n", + "\tamount: 1990000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 1990000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: Passport Owner Address\n", + "\tsender: Gift Contract\n", + "\tamount: 1990000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: Passport Owner Address\n", + "\tgift_address: cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0\n", + "\tstage: 9\n", + "\tamount: 1990000\n" + ] + } + ], "source": [ "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", " return execute_bash(\n", @@ -1086,10 +1144,13 @@ " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", + "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " release_ethereum_json, _ = release(row, display_data=True)\n", - " release_cosmos_json, _ = release(row, network='cosmos', display_data=True)\n", + " release_ethereum_json, _ = release(row, display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(release_ethereum_json)\n", + "\n", + " release_cosmos_json, _ = release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(release_cosmos_json)\n", " else:\n", " release(row)\n", " release(row, network='cosmos')\n" @@ -1101,34 +1162,6 @@ } } }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(release_ethereum_json)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "parse_contract_execution_json(release_cosmos_json)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, { "cell_type": "markdown", "source": [ @@ -1141,7 +1174,7 @@ "#### set_minter\n", "#### set_owner\n", "#### set_active\n", - "#### set_subspaces\n", + "#### set_subgraphs\n", "#### transfer_nft\n", "#### send_nft\n", "#### mint\n", @@ -1163,7 +1196,7 @@ "#### claim +\n", "#### release +\n", "\n", - "### Add tests for Subspace contract\n", + "### Add tests for subgraph contract\n", "#### update_owner\n", "#### update_executer +" ], @@ -1176,7 +1209,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "outputs": [], "source": [], "metadata": { From 2556050333c4178df30a06b760d2d9d58779bc83 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Mon, 28 Feb 2022 22:38:59 +0800 Subject: [PATCH 19/69] Passport refactoring --- contracts/cw-cyber-passport/src/contract.rs | 2 +- contracts/cw-cyber-passport/src/error.rs | 4 + contracts/cw-cyber-passport/src/execute.rs | 417 +++++++++----------- contracts/cw-cyber-passport/src/helpers.rs | 26 +- 4 files changed, 222 insertions(+), 227 deletions(-) diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index ba853fb..2b5cc58 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -1,6 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{Binary, ContractResult, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to_binary}; +use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to_binary}; use cyber_std::CyberMsgWrapper; use crate::error::ContractError; diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index c9b490c..ca755f2 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -41,6 +41,9 @@ pub enum ContractError { #[error("Wrong amount for the name")] WrongAmountForName {}, + #[error("Name is not valid")] + NotValidName {}, + #[error("Nickname already exists")] NicknameAlreadyExists {}, @@ -54,6 +57,7 @@ pub enum ContractError { IsNotEligible { msg: String }, // ----- + // TODO check this overwrites of error messages #[error("Invalid hash format")] InvalidHashFormat, diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 94ec712..20e9d58 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -3,17 +3,16 @@ use std::str::FromStr; use cid::{Cid, Version}; use cid::multihash::{Code, MultihashDigest}; -use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, ReplyOn, SubMsg, to_binary, Uint128, WasmMsg}; +use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, Uint128}; use cw2::{get_contract_version, set_contract_version}; use cw721::{Cw721Execute, Cw721Query}; use cw721_base::MintMsg; use cw_utils::must_pay; -use cw_cyber_subgraph::msg::{ExecuteMsg as SubgraphExecuteMsg}; use cyber_std::{CyberMsgWrapper, Link}; use crate::error::ContractError; -use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address}; +use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address, prepare_cyberlink_submsg}; use crate::state::{ACTIVE, AddressPortID, Extension, NICKNAMES, PassportContract, PassportMetadata, PORTID}; use crate::state::{Config, CONFIG}; @@ -37,9 +36,15 @@ pub fn execute_create_passport( let cw721_contract = PassportContract::default(); let nickname_length = nickname.clone().len(); - if nickname_length < 9 { + + if nickname_length > 32 && nickname_length < 3 { + return Err(ContractError::NotValidName {}); + } + + if nickname_length < 8 { let must_pay = must_pay(&info, "boot").unwrap_or_default(); - let to_pay = Uint128::new(1_000_000_000).checked_pow(9-nickname_length as u32).unwrap(); + let mul = 10u64.checked_pow(8-nickname_length as u32).unwrap(); + let to_pay = Uint128::new(1_000_000).mul(Uint128::from(mul)); if must_pay != to_pay { return Err(ContractError::WrongAmountForName {}); } @@ -49,57 +54,42 @@ pub fn execute_create_passport( let avatar_particle = _check_particle(avatar.clone())?; let address_particle = _prepare_particle(info.clone().sender.into()); - let config = CONFIG.load(deps.storage)?; - // nickname <-> address <-> avatar - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; - - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare nickname <-> address <-> avatar cyberlinks + // nickname <-> address + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ] + ); + + // address <-> avatar cyberlinks + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); - let last_portid = PORTID.load(deps.storage).unwrap().add(1); + let new_last_portid = PORTID.load(deps.storage).unwrap().add(1); let mint_msg = MintMsg { - token_id: last_portid.to_string(), + token_id: new_last_portid.to_string(), owner: info.clone().sender.into(), token_uri: None, extension: PassportMetadata { @@ -109,21 +99,23 @@ pub fn execute_create_passport( }, }; - PORTID.save(deps.storage, &last_portid)?; + PORTID.save(deps.storage, &new_last_portid)?; NICKNAMES.save( deps.storage, &nickname, &AddressPortID{ address: info.clone().sender, - portid: last_portid.to_string() + portid: new_last_portid.to_string() } )?; + // set this passport as active if it's the first one if !ACTIVE.has(deps.storage, &info.clone().sender) { - ACTIVE.save(deps.storage, &info.clone().sender, &last_portid.to_string())?; + ACTIVE.save(deps.storage, &info.clone().sender, &new_last_portid.to_string())?; } + // contract itself can only mint let internal_info = MessageInfo { sender: env.clone().contract.address, funds: info.funds, @@ -137,8 +129,8 @@ pub fn execute_create_passport( ) } +// TODO move to cyber-std fn _prepare_particle(input: String) -> Cid { - // unixfs/dagnode/proto shortcut let length: u8 = input.len() as u8; let mut raw: Vec = vec![10, length.add(6) as u8, 8, 2, 18, length]; @@ -150,6 +142,7 @@ fn _prepare_particle(input: String) -> Cid { particle } +// TODO move to cyber-std fn _check_particle(input: String) -> Result { let particle:Cid; let try_particle = Cid::from_str(&input.clone()); @@ -180,6 +173,11 @@ pub fn execute_update_name( }; let nickname_length = new_name.clone().len(); + + if nickname_length > 32 && nickname_length < 3 { + return Err(ContractError::NotValidName {}); + } + if nickname_length < 8 { let must_pay = must_pay(&info, "boot").unwrap_or_default(); let mul = 10u64.checked_pow(8-nickname_length as u32).unwrap(); @@ -221,28 +219,20 @@ pub fn execute_update_name( let config = CONFIG.load(deps.storage)?; - // nickname <-> address - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare new nickname <-> address cyberlinks + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ] + ); Ok(Response::new() .add_submessage(name_subgraph_submsg) @@ -286,28 +276,20 @@ pub fn execute_update_avatar( let config = CONFIG.load(deps.storage)?; - // nickname <-> address - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare new avatar <-> address cyberlinks + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); Ok(Response::new() .add_submessage(avatar_subgraph_submsg) @@ -337,6 +319,7 @@ pub fn execute_proof_address( return Err(ContractError::Unauthorized {}); } + // check address type and call needed proof function let proof_res:bool; if decode_address(&address).is_err() { proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), info.sender.to_string(), CONSTITUTION.into(), signature) @@ -350,7 +333,8 @@ pub fn execute_proof_address( })?; } - + // save address if not exists or there is enought space for address (<=8) + // TODO discuss to make max address count configurable if proof_res { let mut token_info = cw721_contract.tokens.load(deps.storage, &address_portid.clone().portid)?; if token_info.extension.addresses.is_some() { @@ -383,27 +367,19 @@ pub fn execute_proof_address( let config = CONFIG.load(deps.storage)?; // proved_address <-> address - let proof_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.proof_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: proved_address_particle.clone().into(), - }, - Link{ - from: proved_address_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + let proof_subgraph_submsg = prepare_cyberlink_submsg( + config.proof_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: proved_address_particle.clone().into(), + }, + Link{ + from: proved_address_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); Ok(Response::new() .add_submessage(proof_subgraph_submsg) @@ -432,6 +408,7 @@ pub fn execute_remove_address( return Err(ContractError::Unauthorized {}); } + // delete given address from passport metadata cw721_contract .tokens .update(deps.storage, &address_portid.clone().portid, |token| match token { @@ -439,7 +416,11 @@ pub fn execute_remove_address( let mut addresses = token_info.clone().extension.addresses.unwrap(); let index = addresses.iter().position(|x| *x == address.clone()).unwrap(); addresses.remove(index); - token_info.extension.addresses = Some(addresses); + if addresses.len() == 0 { + token_info.extension.addresses = None; + } else { + token_info.extension.addresses = Some(addresses); + } Ok(token_info) } None => return Err(ContractError::TokenNotFound {}), @@ -454,7 +435,8 @@ pub fn execute_remove_address( } // proved addresses are empty during mint -// allow owner to mint passports +// allow owner to mint passports, used only during development stage +// TODO disable before release pub fn execute_mint( deps: DepsMut, env: Env, @@ -470,6 +452,7 @@ pub fn execute_mint( return Err(ContractError::InvalidInitialization {}); } + // contract itself can only mint let internal_info = MessageInfo { sender: env.clone().contract.address, funds: info.funds, @@ -493,6 +476,10 @@ pub fn execute_transfer_nft( let mut nickname = String::default(); let mut avatar = String::default(); + + let new_owner = deps.api.addr_validate(&recipient)?; + + // clear proved addresses cw721_contract .tokens .update(deps.storage, &token_id.clone(), |token| match token { @@ -508,15 +495,18 @@ pub fn execute_transfer_nft( if !NICKNAMES.has(deps.storage, &nickname.clone()) { return Err(ContractError::NicknameNotFound {}); }; + + // map nickname to new owner NICKNAMES.save( deps.storage, &nickname.clone(), &AddressPortID{ - address: info.clone().sender, + address: new_owner.clone(), portid: token_id.clone() } )?; + // clear this passport as active if ACTIVE.has(deps.storage, &info.clone().sender) { let active = ACTIVE.load(deps.storage, &info.clone().sender)?; if active == token_id { @@ -526,52 +516,38 @@ pub fn execute_transfer_nft( let nick_particle = _prepare_particle(nickname.clone()); let avatar_particle = _check_particle(avatar.clone())?; - let address_particle = _prepare_particle(info.clone().sender.into()); + let address_particle = _prepare_particle(new_owner.clone().to_string()); - // nickname <-> address <-> avatar - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; - - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // link passport to new owner + // prepare nickname <-> address <-> avatar cyberlinks + // nickname <-> address + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ] + ); + // address <-> avatar + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; Ok(response @@ -643,53 +619,38 @@ pub fn execute_burn( } let config = CONFIG.load(deps.storage)?; - // avatar <-> cyberhole <-> nickname - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: cyberhole_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: cyberhole_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: cyberhole_particle.clone().into(), - to: token_info.extension.avatar.clone().into() - }, - Link{ - from: token_info.extension.avatar.clone().into(), - to: cyberhole_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare avatar <-> cyberhole <-> nickname cyberlinks + // cyberhole <-> nickname + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: cyberhole_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: cyberhole_particle.clone().into() + }, + ] + ); + // cyberhole <-> avatar + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: cyberhole_particle.clone().into(), + to: token_info.extension.avatar.clone().into() + }, + Link{ + from: token_info.extension.avatar.clone().into(), + to: cyberhole_particle.clone().into() + } + ] + ); let response = cw721_contract.burn(deps, env, info, token_id)?; - Ok(response .add_submessage(name_subgraph_submsg) .add_submessage(avatar_subgraph_submsg) @@ -712,7 +673,10 @@ pub fn execute_set_minter( let cw721_contract = PassportContract::default(); cw721_contract.minter.save(deps.storage, &new_minter)?; - Ok(Response::new().add_attribute("action", "set_minter")) + Ok(Response::new().add_attributes(vec![ + attr("action", "set_minter"), + attr("action", new_minter.to_string()) + ])) } pub fn execute_set_owner( @@ -738,7 +702,8 @@ pub fn execute_set_owner( )?; Ok(Response::new().add_attributes(vec![ - attr("action", "update_owner") + attr("action", "update_owner"), + attr("address", new_owner.to_string()), ])) } @@ -753,7 +718,9 @@ pub fn execute_set_active( if nft_owner.owner != info.clone().sender { return Err(ContractError::Unauthorized {}); } + ACTIVE.save(deps.storage, &info.clone().sender, &token_id.clone())?; + Ok(Response::new().add_attributes(vec![ attr("action", "set_active"), attr("address", info.sender.to_string()), @@ -782,15 +749,18 @@ pub fn execute_set_subspaces( CONFIG.update( deps.storage, |mut config| -> Result { - config.name_subspace = name_subspace; - config.avatar_subspace = avatar_subspace; - config.proof_subspace = proof_subspace; + config.name_subspace = name_subspace.clone(); + config.avatar_subspace = avatar_subspace.clone(); + config.proof_subspace = proof_subspace.clone(); Ok(config) }, )?; Ok(Response::new().add_attributes(vec![ - attr("action", "update_subspaces") + attr("action", "update_subspaces"), + attr("name_subspace", name_subspace.to_string()), + attr("avatar_subspace", avatar_subspace.to_string()), + attr("proof_subspace", proof_subspace.to_string()), ])) } @@ -806,7 +776,8 @@ pub fn try_migrate( CONFIG.save(deps.storage, &config.unwrap())? } - Ok(Response::new() - .add_attribute("method", "try_migrate") - .add_attribute("version", contract_version.version)) + Ok(Response::new().add_attributes(vec![ + attr("method", "try_migrate"), + attr("version", contract_version.version), + ])) } diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 7b71de7..c077455 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -2,7 +2,7 @@ use std::convert::TryInto; use std::ops::Add; use bech32::{ToBase32, Variant}; -use cosmwasm_std::{Addr, Binary, Deps, from_binary, StdError, StdResult}; +use cosmwasm_std::{Addr, Binary, Deps, from_binary, ReplyOn, StdError, StdResult, SubMsg, to_binary, WasmMsg}; use primitive_types::H256; use ripemd160::Digest as Ripemd160Digest; use ripemd160::Ripemd160; @@ -10,8 +10,10 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use sha2::Sha256; use sha3::Keccak256; - +use cyber_std::{CyberMsgWrapper, Link}; +use cw_cyber_subgraph::msg::{ExecuteMsg as SubgraphExecuteMsg}; use crate::error::ContractError; +use crate::execute::CYBERLINK_ID_MSG; pub fn proof_address_ethereum( deps: Deps, @@ -169,7 +171,7 @@ pub fn proof_address_cosmos( } /// Converts user pubkey into Addr with given prefix -fn pub_key_to_address(deps: &Deps, pub_key: &[u8], prefix: &str) -> StdResult { +fn pub_key_to_address(_deps: &Deps, pub_key: &[u8], prefix: &str) -> StdResult { let compressed_pub_key = to_compressed_pub_key(pub_key)?; let mut ripemd160_hasher = Ripemd160::new(); ripemd160_hasher.update(Sha256::digest(&compressed_pub_key)); @@ -214,3 +216,21 @@ pub struct CosmosSignature { pub_key: Binary, signature: Binary, } + +pub fn prepare_cyberlink_submsg( + contract_addr: String, + links: Vec +) -> SubMsg { + return SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr, + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links + }).unwrap(), + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Never + } +} From 07fd94979512828fdef5f3b07c2e98bd769611af Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Mon, 28 Feb 2022 23:29:03 +0800 Subject: [PATCH 20/69] Gift refactored --- Cargo.lock | 52 ++++++++++++++ contracts/cw-cyber-airdrop/Cargo.toml | 3 +- contracts/cw-cyber-airdrop/src/contract.rs | 2 + contracts/cw-cyber-airdrop/src/execute.rs | 82 +++++++++++++--------- contracts/cw-cyber-airdrop/src/msg.rs | 1 + contracts/cw-cyber-airdrop/src/state.rs | 1 + 6 files changed, 106 insertions(+), 35 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e29a44f..faa7e22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,6 +268,7 @@ dependencies = [ "cw-storage-plus 0.10.3", "cw-utils", "cw0", + "cw1-subkeys", "cw2 0.11.1", "cw20", "hex", @@ -375,6 +376,51 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cw1" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1a86a410667d993f05b9a31c4820c1b9b4274266205d2286f1a7fbf8dba96" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", +] + +[[package]] +name = "cw1-subkeys" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a6bad25c053e4e4816736030cc0a4105c9021d9fb3c5305d420a448132363c" +dependencies = [ + "cosmwasm-std", + "cw-storage-plus 0.11.1", + "cw-utils", + "cw1", + "cw1-whitelist", + "cw2 0.11.1", + "schemars", + "semver", + "serde", + "thiserror", +] + +[[package]] +name = "cw1-whitelist" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e868d50e4b88839ffbb8d0257c3f216ada4762d32cdb246c711b45b4e4c971d" +dependencies = [ + "cosmwasm-std", + "cw-storage-plus 0.11.1", + "cw-utils", + "cw1", + "cw2 0.11.1", + "schemars", + "serde", + "thiserror", +] + [[package]] name = "cw2" version = "0.10.3" @@ -830,6 +876,12 @@ dependencies = [ "syn", ] +[[package]] +name = "semver" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" + [[package]] name = "serde" version = "1.0.133" diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index 7d69706..ea4b6b8 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -44,10 +44,11 @@ anyhow = "1" cw0 = "0.10.3" cw2 = "0.11" cw20 = "0.11" +cw1-subkeys = "0.11.1" cosmwasm-std = { version = "1.0.0-beta" } cw-utils = { version = "0.11.0" } #cosmwasm-crypto = { version = "1.0.0-beta" } -cw-cyber-passport = { path = "../cw-cyber-passport" } +cw-cyber-passport = { path = "../cw-cyber-passport", features = ["library"] } cw-storage-plus = "0.10" schemars = "0.8.3" serde = { version = "1.0.103", default-features = false, features = ["derive"] } diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs index 4b3ac4a..d662830 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -8,6 +8,7 @@ use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target}; use crate::query::{query_config, query_is_claimed, query_merkle_root, query_release_state}; +use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; // Version info, for migration info const CONTRACT_NAME: &str = "crates.io:cw-cyber-gift"; @@ -39,6 +40,7 @@ pub fn instantiate( let config = Config { owner: Some(owner), passport_addr: deps.api.addr_validate(&msg.passport)?, + treasury_addr: deps.api.addr_validate(&msg.treasury)?, target_claim: msg.target_claim, allowed_native: msg.allowed_native, current_balance: msg.initial_balance, diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 8140bc8..08ae69e 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, Uint128, Uint64}; +use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, to_binary, Uint128, Uint64, WasmMsg}; use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; @@ -136,8 +136,6 @@ pub fn execute_claim( return Err(ContractError::GiftIsOver {}); } - // is_eligible(deps.as_ref(), &claim_msg, signature)?; - let res: SignatureResponse = deps.querier.query_wasm_smart( config.clone().passport_addr, &PassportQueryMsg::PassportSigned{ @@ -150,6 +148,7 @@ pub fn execute_claim( return Err(ContractError::IsNotEligible { msg: "passport isn't assigned".to_string() }); } + // returns error of proof is invalid verify_merkle_proof( &deps, &info, @@ -158,10 +157,12 @@ pub fn execute_claim( proof, )?; + // only claim once by given verified address CLAIM.save(deps.storage, gift_claiming_address.clone(), &true)?; update_coefficient(deps.storage, claim_amount, &mut config)?; + // get address of the passport by nickname let res: AddressResponse = deps.querier.query_wasm_smart( config.passport_addr, &PassportQueryMsg::AddressByNickname { @@ -187,21 +188,26 @@ pub fn execute_claim( Ok(cfg) })?; - let res = Response::new() - .add_message(BankMsg::Send { - to_address: res.address.clone(), - amount: vec![Coin { - denom: config.allowed_native, - amount: Uint128::new(CLAIM_BOUNTY), - }], - }) - .add_attributes(vec![ - attr("action", "claim"), - attr("original", gift_claiming_address), - attr("target", res.address), - attr("amount", claim_amount), - ]); - Ok(res) + // send funds from treasury controlled by Congress + Ok(Response::new() + .add_message(WasmMsg::Execute { + contract_addr: config.treasury_addr.to_string(), + msg: to_binary(&BankMsg::Send { + to_address: res.address.clone(), + amount: vec![Coin { + denom: config.allowed_native, + amount: Uint128::new(CLAIM_BOUNTY), + }], + })?, + funds: vec![] + }) + .add_attributes(vec![ + attr("action", "claim"), + attr("original", gift_claiming_address), + attr("target", res.address), + attr("amount", claim_amount), + ]) + ) } pub fn execute_release( @@ -233,16 +239,19 @@ pub fn execute_release( // TODO change HOUR to DAY after tests let amount: Uint128; if release_state.stage.is_zero() { + // first claim, amount 10% of claim amount = release_state.balance_claim.mul(Decimal::percent(10)); release_state.stage_expiration = HOUR.after(&env.block); release_state.stage = Uint64::new(RELEASE_STAGES); } else { if release_state.stage_expiration.is_expired(&env.block) { + // last claim, amount is rest if release_state.stage.u64() == 1 { amount = release_state.balance_claim; release_state.stage_expiration = Expiration::Never {}; release_state.stage = Uint64::zero(); } else { + // amount is equal during all intermediate stages amount = release_state .balance_claim .mul(Decimal::from_ratio(1u128, release_state.stage)); @@ -267,20 +276,25 @@ pub fn execute_release( Ok(cfg) })?; - let res = Response::new() - .add_message(BankMsg::Send { - to_address: release_state.clone().address.into(), - amount: vec![Coin { - denom: config.allowed_native, - amount, - }], - }) - .add_attributes(vec![ - attr("action", "release"), - attr("address", release_state.clone().address.to_string()), - attr("gift_address", gift_address), - attr("stage", release_state.stage.to_string()), - attr("amount", amount), - ]); - Ok(res) + // send funds from treasury controlled by Congress + Ok(Response::new() + .add_message(WasmMsg::Execute { + contract_addr: config.treasury_addr.to_string(), + msg: to_binary(&BankMsg::Send { + to_address: release_state.clone().address.into(), + amount: vec![Coin { + denom: config.allowed_native, + amount + }], + })?, + funds: vec![] + }) + .add_attributes(vec![ + attr("action", "release"), + attr("address", release_state.clone().address.to_string()), + attr("gift_address", gift_address), + attr("stage", release_state.stage.to_string()), + attr("amount", amount), + ]) + ) } diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index cc9b4ed..c8cfccf 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -9,6 +9,7 @@ pub struct InstantiateMsg { /// Owner if none set to info.sender. pub owner: Option, pub passport: String, + pub treasury: String, pub allowed_native: String, pub initial_balance: Uint128, pub coefficient_up: Uint128, diff --git a/contracts/cw-cyber-airdrop/src/state.rs b/contracts/cw-cyber-airdrop/src/state.rs index 90de97d..e9b8bef 100644 --- a/contracts/cw-cyber-airdrop/src/state.rs +++ b/contracts/cw-cyber-airdrop/src/state.rs @@ -11,6 +11,7 @@ pub struct Config { /// Owner If None set, contract is frozen. pub owner: Option, pub passport_addr: Addr, + pub treasury_addr: Addr, /// target_claim amount of claimed accounts to start release (activate gift) pub target_claim: Uint64, pub allowed_native: String, From bd61e6d9563cf98ca01826d33242bfc520ad9302 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Wed, 16 Mar 2022 14:47:58 +0800 Subject: [PATCH 21/69] - add tests for `transfer_nft` and `burn` functions in the passport contract - refactor of contract queries and contract execution --- .../generate_test_data/contract_utils.py | 70 +++ .../gift_and_passport_contracts_testing.ipynb | 457 +++++++++++++----- 2 files changed, 407 insertions(+), 120 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py new file mode 100644 index 0000000..4bae65d --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -0,0 +1,70 @@ +import json +from subprocess import Popen, PIPE + +NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443' +NETWORK = 'space-pussy-1' + + +def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: + _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate() + if _error: + display_data = True + if display_data: + print(bash_command) + if _output: + try: + print(json.dumps(json.loads(_output.decode('utf-8')), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_output) + if _error: + print(_error) + return _output.decode('utf-8'), _error.decode('utf-8') + + +def instantiate_contract(init_query: str, contract_code_id: str, contract_label: str, amount: str = '', + display_data: bool = False) -> str: + _init_output, _init_error = execute_bash( + f'''INIT='{init_query}' \ + && cyber tx wasm instantiate {contract_code_id} "$INIT" --from $WALLET {'--amount ' + amount + 'boot' if amount else ''} --label "{contract_label}" \ + -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''') + if display_data: + try: + print(json.dumps(json.loads(_init_output.decode('utf-8')), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_init_output) + if _init_error: + print(_init_error) + _init_json = json.loads(_init_output) + return \ + [event['attributes'][0]['value'] for event in _init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0] + + +def execute_contract(execute_query: str, contract_address: str, from_address: str = '$WALLET', gas: int = 300000, + display_data: bool = False) -> str: + _execute_output, _execute_error = execute_bash( + f'''EXECUTE='{execute_query}' \ + && CONTRACT="{contract_address}" \ + && cyber tx wasm execute $CONTRACT "$EXECUTE" --from {from_address} --broadcast-mode block -o json -y --gas={gas} --chain-id={NETWORK} --node={NODE_URL}''') + if display_data: + try: + print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_execute_output) + if _execute_error: + print(_execute_error) + return _execute_output + + +def query_contract(query: str, contract_address: str, display_data: bool = False) -> json: + _execute_output, _execute_error = execute_bash( + f'''QUERY='{query}' \ + && cyber query wasm contract-state smart {contract_address} "$QUERY" -o json --chain-id={NETWORK} --node={NODE_URL}''') + try: + if display_data: + print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) + return json.loads(_execute_output) + except json.JSONDecodeError: + print(_execute_output) + if _execute_error: + print(_execute_error) + return json.loads(_execute_output) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index d692eea..e981fbd 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -22,13 +22,15 @@ "from cyberpy._wallet import seed_to_privkey\n", "from eth_account.messages import encode_defunct\n", "import json\n", - "from subprocess import Popen, PIPE\n", "import os\n", "from time import time\n", "import ipfshttpclient\n", "from tqdm.notebook import tqdm\n", "from base64 import b64encode\n", "\n", + "from contract_utils import execute_bash, instantiate_contract, execute_contract, query_contract\n", + "\n", + "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", "NUMBER_OF_PARTICIPANTS = 3\n", @@ -44,8 +46,6 @@ "TARGET_CLAIM = str(2)\n", "\n", "WALLET_ADDRESS = os.getenv('WALLET_ADDRESS')\n", - "NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443'\n", - "NETWORK = 'space-pussy-1'\n", "DISPLAY_TX_EXECUTION = False\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", @@ -63,23 +63,7 @@ "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", "\n", "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", - "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'\n", - "\n", - "\n", - "def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]:\n", - " _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate()\n", - " if _error:\n", - " display_data = True\n", - " if display_data:\n", - " print(bash_command)\n", - " if _output:\n", - " try:\n", - " print(json.dumps(json.loads(_output.decode('utf-8')), indent=4, sort_keys=True))\n", - " except json.JSONDecodeError:\n", - " print(_output)\n", - " if _error:\n", - " print(_error)\n", - " return _output.decode('utf-8'), _error.decode('utf-8')" + "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" ], "metadata": { "collapsed": false, @@ -117,8 +101,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16460346760 QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge \n1 1000000 john16460346761 QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC \n2 1000000 john16460346762 QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW \n\n ethereum_address \\\n0 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f \n1 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d \n2 0x945f32e5bc2ec6a8216a80945bde2947fb6966e8 \n\n ethereum_private_key \\\n0 0xbc4487513ee05cc385b9146422cccf41686acf9cddcc... \n1 0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126... \n2 0xe16b149b132d38c43186b46c593e55df41a6671da633... \n\n bostrom_address \\\n0 bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdg \n1 bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8 \n2 bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67 \n\n cosmos_address \\\n0 cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0 \n1 cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq \n2 cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2ye \n\n cosmos_seed \\\n0 jelly busy sniff ready inherit rule milk episo... \n1 creek interest trash charge output embrace mem... \n2 dose prosper tube source reason typical summer... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5... \n1 0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5... \n2 0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB... \n1 {'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq... \n2 {'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU... \n1 eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG... \n2 eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16460346760QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge0x9b600120d5bd1dde9a9b315a8f430763afb7d76f0xbc4487513ee05cc385b9146422cccf41686acf9cddcc...bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdgcosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0jelly busy sniff ready inherit rule milk episo...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5...{'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB...eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU...
11000000john16460346761QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126...bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgqcreek interest trash charge output embrace mem...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5...{'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq...eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG...
21000000john16460346762QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW0x945f32e5bc2ec6a8216a80945bde2947fb6966e80xe16b149b132d38c43186b46c593e55df41a6671da633...bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2yedose prosper tube source reason typical summer...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84...{'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG...eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm...
\n
" + "text/plain": " amount nickname avatar \\\n0 1000000 john16474127780 QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp \n1 1000000 john16474127781 QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD \n2 1000000 john16474127782 QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos6 \n\n ethereum_address \\\n0 0x4878aae4c66be69d15c590dac467692337e5b0cf \n1 0x744443c73710d15eb9970ce7ebf470d36569176b \n2 0x15720b613d56c03d0a2a7f0690ff21fbcc03f9b4 \n\n ethereum_private_key \\\n0 0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4... \n1 0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616... \n2 0xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31... \n\n bostrom_address \\\n0 bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrk \n1 bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8 \n2 bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvh \n\n cosmos_address \\\n0 cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3 \n1 cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q \n2 cosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjs \n\n cosmos_seed \\\n0 success clog skill length already armed entry ... \n1 village have emotion large august merry escape... \n2 dress tobacco ignore cinnamon party isolate ca... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3... \n1 0x7631668215a5b300662228dafa47f08d87c797a4ea09... \n2 0x342d548d44fd16875b7e91b2427a4aa33108f5633647... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z... \n1 {'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm... \n2 {'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0... \n1 eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej... \n2 eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16474127780QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp0x4878aae4c66be69d15c590dac467692337e5b0cf0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4...bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrkcosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3success clog skill length already armed entry ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3...{'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z...eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0...
11000000john16474127781QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD0x744443c73710d15eb9970ce7ebf470d36569176b0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616...bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4qvillage have emotion large august merry escape...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x7631668215a5b300662228dafa47f08d87c797a4ea09...{'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm...eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej...
21000000john16474127782QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos60x15720b613d56c03d0a2a7f0690ff21fbcc03f9b40xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31...bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvhcosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjsdress tobacco ignore cinnamon party isolate ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x342d548d44fd16875b7e91b2427a4aa33108f5633647...{'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B...eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU...
\n
" }, "execution_count": 2, "metadata": {}, @@ -192,24 +176,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "outputs": [], - "source": [ - "def instantiate_contract(init_query: str, contract_code_id: str, contract_label: str, amount: str = '', display_data: bool = False) -> str:\n", - " _init_output, _init_error = execute_bash(\n", - " f'''INIT='{init_query}' \\\n", - " && cyber tx wasm instantiate {contract_code_id} \"$INIT\" --from $WALLET {'--amount ' + amount + 'boot' if amount else ''} --label \"{contract_label}\" \\\n", - " -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", - " if display_data:\n", - " try:\n", - " print(json.dumps(json.loads(_init_output.decode('utf-8')), indent=4, sort_keys=True))\n", - " except json.JSONDecodeError:\n", - " print(_init_output)\n", - " if _init_error:\n", - " print(_init_error)\n", - " _init_json = json.loads(_init_output)\n", - " return [event['attributes'][0]['value'] for event in _init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]" - ], + "source": [], "metadata": { "collapsed": false, "pycharm": { @@ -231,7 +200,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "outputs": [ { "name": "stdout", @@ -289,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "outputs": [ { "name": "stdout", @@ -331,15 +300,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "outputs": [], "source": [ "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", - " return execute_bash(\n", - " f'''REGISTER='{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}' \\\n", - " && CONTRACT=\"{subgraph_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", + " return execute_contract(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", "\n", "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", @@ -367,13 +335,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1xfhtdeernre33xm83wu0eg08433aejyq0ay6h03qatxqrf40k8zqkuhwax\n" + "Gift contract address: bostrom1hh235cquh47tk7mj2hfkdz70g6m787qpx9vledlyz0n3j4jt0d8sgj92mq\n" ] } ], @@ -398,7 +366,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "outputs": [], "source": [ "def get_contract_name(contract_address: str) -> str:\n", @@ -516,14 +484,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "outputs": [], "source": [ "root_source_list = [{'address': _item['ethereum_address'],\n", " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", " [{'address': _item['cosmos_address'],\n", " 'amount': str(_item['amount'])} for _item in claims_list]\n", - "\n", + "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", " outfile.write(str(root_source_list).replace(\"'\", '\"'))" ], @@ -534,6 +502,29 @@ } } }, + { + "cell_type": "code", + "execution_count": 9, + "outputs": [ + { + "data": { + "text/plain": "[{'address': '0x4878aae4c66be69d15c590dac467692337e5b0cf',\n 'amount': '1000000'},\n {'address': '0x744443c73710d15eb9970ce7ebf470d36569176b',\n 'amount': '1000000'},\n {'address': '0x15720b613d56c03d0a2a7f0690ff21fbcc03f9b4',\n 'amount': '1000000'},\n {'address': 'cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3',\n 'amount': '1000000'},\n {'address': 'cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q',\n 'amount': '1000000'},\n {'address': 'cosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjs',\n 'amount': '1000000'},\n {'address': '0xf2749114feaad68854e01c8ee762c7170532fdfd',\n 'amount': '10000000'}]" + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "root_source_list" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "code", "execution_count": 10, @@ -542,7 +533,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: b006921573f8fcf0e2267d25506f32a9281961973898bdedc10cc6224bd08071\n" + "Merkle root: 725942cbb284688da040f146cb3441852460f6d8034896768a7f5c1e87f7d14a\n" ] } ], @@ -579,16 +570,13 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: b006921573f8fcf0e2267d25506f32a9281961973898bdedc10cc6224bd08071\n" + "\tmerkle_root: 725942cbb284688da040f146cb3441852460f6d8034896768a7f5c1e87f7d14a\n" ] } ], "source": [ - "root_register_output, root_register_error = \\\n", - " execute_bash(\n", - " f'''REGISTER='{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}' \\\n", - " && CONTRACT=\"{gift_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -o json -y --chain-id={NETWORK} --node={NODE_URL}''')\n", + "root_register_output = execute_contract(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", + " contract_address=gift_contract_address)\n", "parse_contract_execution_json(root_register_output)" ], "metadata": { @@ -619,17 +607,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "{\"data\":{\"merkle_root\":\"b006921573f8fcf0e2267d25506f32a9281961973898bdedc10cc6224bd08071\"}}\n", - "\n" + "{'data': {'merkle_root': '725942cbb284688da040f146cb3441852460f6d8034896768a7f5c1e87f7d14a'}}\n" ] } ], "source": [ - "print(\n", - " execute_bash(\n", - " f'''QUERY='{{\"merkle_root\": {{}}}}' \\\n", - " && cyber query wasm contract-state smart {gift_contract_address} \"$QUERY\" -o json --chain-id={NETWORK} --node={NODE_URL}''')[0]\n", - ")" + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))" ], "metadata": { "collapsed": false, @@ -654,8 +638,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16460346760 QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge \n1 1000000 john16460346761 QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC \n2 1000000 john16460346762 QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW \n\n ethereum_address \\\n0 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f \n1 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d \n2 0x945f32e5bc2ec6a8216a80945bde2947fb6966e8 \n\n ethereum_private_key \\\n0 0xbc4487513ee05cc385b9146422cccf41686acf9cddcc... \n1 0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126... \n2 0xe16b149b132d38c43186b46c593e55df41a6671da633... \n\n bostrom_address \\\n0 bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdg \n1 bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8 \n2 bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67 \n\n cosmos_address \\\n0 cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0 \n1 cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq \n2 cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2ye \n\n cosmos_seed \\\n0 jelly busy sniff ready inherit rule milk episo... \n1 creek interest trash charge output embrace mem... \n2 dose prosper tube source reason typical summer... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5... \n1 0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5... \n2 0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB... \n1 {'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq... \n2 {'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU... \n1 eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG... \n2 eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm... \n\n ethereum_proof \\\n0 [\"f696196686b00c9ca342576f75f957df68a6c8400d67... \n1 [\"968be20a70aeb28afb93368b61e23a3c371344ce2745... \n2 [\"ad257d9cfe41d8bb520eca3d52406ad7df991b88ec65... \n\n cosmos_proof \n0 [\"f0d28166f568dc15526bbfe9debe6499576a1d0f31dc... \n1 [\"48e34ad2f19327883ce5d582c74b1031cd69268a8c57... \n2 [\"244a668003cdedfaa013060e88c3e05a6bbde48f0f7c... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16460346760QmXPcZ4VEWzYv5pY39Enx5qZGpu5Yw7RUdmHFjnYQ9rHge0x9b600120d5bd1dde9a9b315a8f430763afb7d76f0xbc4487513ee05cc385b9146422cccf41686acf9cddcc...bostrom1fakshqfswsqzgyu270x4gt7qpyfnu7mztlytdgcosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0jelly busy sniff ready inherit rule milk episo...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x1c82ecb4d605e974983768ded5eca82c01d00a4708a5...{'pub_key': 'A/313c5SODUd4Lx+I23OB1G9vteki94PB...eyJwdWJfa2V5IjoiQS8zMTNjNVNPRFVkNEx4K0kyM09CMU...[\"f696196686b00c9ca342576f75f957df68a6c8400d67...[\"f0d28166f568dc15526bbfe9debe6499576a1d0f31dc...
11000000john16460346761QmT57xn69N2UkeBY1i27ypdATse4KGo6xwvwjsQr6TUThC0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d0xadf2c2f6319d93ba775129d2448cf89c793bdbf88126...bostrom19ru2gxtv4cmmfsk7tq3e8ygnypaxl703j5y6k8cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgqcreek interest trash charge output embrace mem...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x22d282e2241fd000ff3b4c837c4a63c75619eb389ff5...{'pub_key': 'AsgRHIcBBYBB0Pn7WFLAYToqFe0g7Lvuq...eyJwdWJfa2V5IjoiQXNnUkhJY0JCWUJCMFBuN1dGTEFZVG...[\"968be20a70aeb28afb93368b61e23a3c371344ce2745...[\"48e34ad2f19327883ce5d582c74b1031cd69268a8c57...
21000000john16460346762QmTdKbjVWdgsxh13RS77df6uSJyLTAeLBFUMGPtwgQLHEW0x945f32e5bc2ec6a8216a80945bde2947fb6966e80xe16b149b132d38c43186b46c593e55df41a6671da633...bostrom1qmwkmw9zlxlyepqhvumpr6s5568yv9wqpn4e67cosmos1qmwkmw9zlxlyepqhvumpr6s5568yv9wqzqp2yedose prosper tube source reason typical summer...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0xb988a396f5f4ac8b3a7a15d8cb3f54acf3e0ff2b4a84...{'pub_key': 'AlfxAZLkb/k1PhyAbfjJqFiK4mUE1rOZG...eyJwdWJfa2V5IjoiQWxmeEFaTGtiL2sxUGh5QWJmakpxRm...[\"ad257d9cfe41d8bb520eca3d52406ad7df991b88ec65...[\"244a668003cdedfaa013060e88c3e05a6bbde48f0f7c...
\n
" + "text/plain": " amount nickname avatar \\\n0 1000000 john16474127780 QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp \n1 1000000 john16474127781 QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD \n2 1000000 john16474127782 QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos6 \n\n ethereum_address \\\n0 0x4878aae4c66be69d15c590dac467692337e5b0cf \n1 0x744443c73710d15eb9970ce7ebf470d36569176b \n2 0x15720b613d56c03d0a2a7f0690ff21fbcc03f9b4 \n\n ethereum_private_key \\\n0 0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4... \n1 0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616... \n2 0xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31... \n\n bostrom_address \\\n0 bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrk \n1 bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8 \n2 bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvh \n\n cosmos_address \\\n0 cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3 \n1 cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q \n2 cosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjs \n\n cosmos_seed \\\n0 success clog skill length already armed entry ... \n1 village have emotion large august merry escape... \n2 dress tobacco ignore cinnamon party isolate ca... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3... \n1 0x7631668215a5b300662228dafa47f08d87c797a4ea09... \n2 0x342d548d44fd16875b7e91b2427a4aa33108f5633647... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z... \n1 {'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm... \n2 {'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0... \n1 eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej... \n2 eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU... \n\n ethereum_proof \\\n0 [\"f164f48466bb32f66eabed8fbb52de5953bb1b4e756e... \n1 [\"78900d7c06c43ae20970087421f80e49257815363f6a... \n2 [\"3e3c9fa66f3317f6bfd46130ae15b61227730b12f820... \n\n cosmos_proof \n0 [\"0ea5afdcea05b78568ba41aa3b120c669db9fc111445... \n1 [\"cf75dec9a3423593845301454490058e275aba2beb5d... \n2 [\"84daa30ce2e40d0ed2745dd96dff99e0fd3d42ada1fa... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16474127780QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp0x4878aae4c66be69d15c590dac467692337e5b0cf0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4...bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrkcosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3success clog skill length already armed entry ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3...{'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z...eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0...[\"f164f48466bb32f66eabed8fbb52de5953bb1b4e756e...[\"0ea5afdcea05b78568ba41aa3b120c669db9fc111445...
11000000john16474127781QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD0x744443c73710d15eb9970ce7ebf470d36569176b0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616...bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4qvillage have emotion large august merry escape...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x7631668215a5b300662228dafa47f08d87c797a4ea09...{'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm...eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej...[\"78900d7c06c43ae20970087421f80e49257815363f6a...[\"cf75dec9a3423593845301454490058e275aba2beb5d...
21000000john16474127782QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos60x15720b613d56c03d0a2a7f0690ff21fbcc03f9b40xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31...bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvhcosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjsdress tobacco ignore cinnamon party isolate ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x342d548d44fd16875b7e91b2427a4aa33108f5633647...{'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B...eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU...[\"3e3c9fa66f3317f6bfd46130ae15b61227730b12f820...[\"84daa30ce2e40d0ed2745dd96dff99e0fd3d42ada1fa...
\n
" }, "execution_count": 13, "metadata": {}, @@ -664,9 +648,9 @@ ], "source": [ "def generate_proof(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {claim_row[network + \"_address\"]} --amount {claim_row.amount}',\n", + " _proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {claim_row[network + \"_address\"]} --amount {claim_row.amount}',\n", " display_data=display_data)\n", - " return proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", + " return _proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", "\n", "claims_df.loc[:, 'ethereum_proof'] = claims_df.apply(lambda x: generate_proof(x), axis=1)\n", "claims_df.loc[:, 'cosmos_proof'] = claims_df.apply(lambda x: generate_proof(x, network='cosmos'), axis=1)\n", @@ -680,6 +664,54 @@ } } }, + { + "cell_type": "code", + "execution_count": 14, + "outputs": [ + { + "data": { + "text/plain": "'[\"82ff93c206404af75c9add59e997d3e2adb90f217c9532941a713ea6d851cacd\",\"39b2d510f6915efa477b25c813366807b4cbea928649381f068eace67c643354\",\"01e792d24b7dd735767c69605e131d51db5a770d21ff4f144f29424ef9a5b1f1\"]'" + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {\"0xF2749114FeaAD68854E01C8eE762C7170532FdfD\".lower()} --amount 10000000',\n", + " display_data=False)\n", + "proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 15, + "outputs": [ + { + "data": { + "text/plain": "'0xf2749114feaad68854e01c8ee762c7170532fdfd'" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"0xF2749114FeaAD68854E01C8eE762C7170532FdfD\".lower()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -694,7 +726,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "outputs": [ { "data": { @@ -702,7 +734,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "d38f73d5f4b2493c8ff8405fc797b865" + "model_id": "3b86235cac824f1bbe61385ada3e1032" } }, "metadata": {}, @@ -740,21 +772,20 @@ "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 40\n" + "\ttoken_id: 49\n" ] } ], "source": [ "def create_passport(claim_row: pd.Series, display_data: bool = False):\n", - " return execute_bash(\n", - " f'''REGISTER='{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}' \\\n", - " && CONTRACT=\"{passport_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=600000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", + " return execute_contract(execute_query=f'''{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}''',\n", + " contract_address=passport_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " create_passport_json, _ = create_passport(row, display_data=DISPLAY_TX_EXECUTION)\n", + " create_passport_json = create_passport(row, display_data=DISPLAY_TX_EXECUTION)\n", " parse_contract_execution_json(create_passport_json, row=row)\n", " else:\n", " create_passport(row)" @@ -780,7 +811,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "outputs": [ { "data": { @@ -788,7 +819,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "e7d455e7dc374a03a55abd6b63e0b55e" + "model_id": "b8d2532f7db74ea7bd94fa850f7b9766" } }, "metadata": {}, @@ -819,8 +850,8 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16460346761\n", - "\taddress: 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d\n", + "\tnickname: john16474127781\n", + "\taddress: 0x744443c73710d15eb9970ce7ebf470d36569176b\n", "\n", "Events\n", "\n", @@ -842,25 +873,24 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16460346761\n", - "\taddress: cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq\n" + "\tnickname: john16474127781\n", + "\taddress: cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q\n" ] } ], "source": [ "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_bash(\n", - " f'''REGISTER='{{\"proof_address\":{{\"address\":\"{claim_row[network + \"_address\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}' \\\n", - " && CONTRACT=\"{passport_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", + " return execute_contract(execute_query=f'''{{\"proof_address\":{{\"address\":\"{claim_row[network + \"_address\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}''',\n", + " contract_address=passport_contract_address,\n", + " gas=400000,\n", + " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 1:\n", - " proof_ethereum_address_json, _ = proof_address(row, display_data=DISPLAY_TX_EXECUTION)\n", + " proof_ethereum_address_json = proof_address(row, display_data=DISPLAY_TX_EXECUTION)\n", " parse_contract_execution_json(proof_ethereum_address_json, row=row)\n", "\n", - " proof_cosmos_address_json, _ = proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " proof_cosmos_address_json = proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", " parse_contract_execution_json(proof_cosmos_address_json, row=row)\n", " else:\n", " proof_address(row)\n", @@ -887,7 +917,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "outputs": [ { "data": { @@ -895,7 +925,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "81a218255f3f44e7bbcdbc362b9e0b4b" + "model_id": "e308b7f5d856416e956b08f262dde894" } }, "metadata": {}, @@ -929,7 +959,7 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f\n", + "\toriginal: 0x4878aae4c66be69d15c590dac467692337e5b0cf\n", "\ttarget: Passport Owner Address\n", "\tamount: 20000000\n", "\n", @@ -956,7 +986,7 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0\n", + "\toriginal: cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3\n", "\ttarget: Passport Owner Address\n", "\tamount: 20000000\n", "\n", @@ -983,7 +1013,7 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x32dd3dd14ed13d718774ed999f83a7cb81c3cf5d\n", + "\toriginal: 0x744443c73710d15eb9970ce7ebf470d36569176b\n", "\ttarget: Passport Owner Address\n", "\tamount: 19700000\n", "\n", @@ -1010,7 +1040,7 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: cosmos19ru2gxtv4cmmfsk7tq3e8ygnypaxl70338sfgq\n", + "\toriginal: cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q\n", "\ttarget: Passport Owner Address\n", "\tamount: 19400000\n" ] @@ -1018,24 +1048,23 @@ ], "source": [ "def claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_bash(\n", - " f'''CLAIM='{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{claim_row[network + \"_proof\"]}}}}}' \\\n", - " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", - "\n", + " return execute_contract(execute_query=f'''{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{claim_row[network + \"_proof\"]}}}}}''',\n", + " contract_address=gift_contract_address,\n", + " gas=400000,\n", + " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " claim_ethereum_json, _ = claim(row, display_data=DISPLAY_TX_EXECUTION)\n", + " claim_ethereum_json = claim(row, display_data=DISPLAY_TX_EXECUTION)\n", " parse_contract_execution_json(claim_ethereum_json)\n", "\n", - " claim_cosmos_json, _ = claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " claim_cosmos_json = claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", " parse_contract_execution_json(claim_cosmos_json)\n", " else:\n", - " claim_ethereum_json_2, _ = claim(row)\n", + " claim_ethereum_json_2 = claim(row)\n", " parse_contract_execution_json(claim_ethereum_json_2)\n", "\n", - " claim_cosmos_json_2, _ = claim(row, network='cosmos')\n", + " claim_cosmos_json_2 = claim(row, network='cosmos')\n", " parse_contract_execution_json(claim_cosmos_json_2)" ], "metadata": { @@ -1060,7 +1089,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "outputs": [ { "data": { @@ -1068,7 +1097,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "fa9d042439804fcb9dcd139f54b4e6ff" + "model_id": "c1e8d3469ba442bba241a84750f62498" } }, "metadata": {}, @@ -1103,7 +1132,7 @@ "\t_contract_address: Gift Contract\n", "\taction: release\n", "\taddress: Passport Owner Address\n", - "\tgift_address: 0x9b600120d5bd1dde9a9b315a8f430763afb7d76f\n", + "\tgift_address: 0x4878aae4c66be69d15c590dac467692337e5b0cf\n", "\tstage: 9\n", "\tamount: 1990000\n", "\n", @@ -1131,7 +1160,7 @@ "\t_contract_address: Gift Contract\n", "\taction: release\n", "\taddress: Passport Owner Address\n", - "\tgift_address: cosmos1fakshqfswsqzgyu270x4gt7qpyfnu7mzgvscn0\n", + "\tgift_address: cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3\n", "\tstage: 9\n", "\tamount: 1990000\n" ] @@ -1139,17 +1168,17 @@ ], "source": [ "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_bash(\n", - " f'''CLAIM='{{\"release\":{{\"gift_address\":\"{claim_row[network + \"_address\"]}\"}}}}' \\\n", - " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", + " return execute_contract(execute_query=f'''{{\"release\":{{\"gift_address\":\"{claim_row[network + \"_address\"]}\"}}}}''',\n", + " contract_address=gift_contract_address,\n", + " gas=400000,\n", + " display_data=display_data)\n", "\n", "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " release_ethereum_json, _ = release(row, display_data=DISPLAY_TX_EXECUTION)\n", + " release_ethereum_json = release(row, display_data=DISPLAY_TX_EXECUTION)\n", " parse_contract_execution_json(release_ethereum_json)\n", "\n", - " release_cosmos_json, _ = release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " release_cosmos_json = release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", " parse_contract_execution_json(release_cosmos_json)\n", " else:\n", " release(row)\n", @@ -1162,6 +1191,194 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "## Passport NFT testing\n", + "### Transfer Passport" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 20, + "outputs": [ + { + "data": { + "text/plain": "50" + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_passport_id(bostrom_address: str) -> str:\n", + " return query_contract(query=f'''{{\"portid\": {{\"portid\": \"{bostrom_address}\"}}}}''',\n", + " contract_address=passport_contract_address)['data']['portid']\n", + "get_passport_id(WALLET_ADDRESS)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 21, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "e4b1378298c642fd97ca3c7321043e8d" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "failed to execute message; message index: 0: dispatch: submessages: dispatch: submessages: your cyberlink already exists\n" + ] + } + ], + "source": [ + "def transfer_passport(claim_row: pd.Series, token_id: str, to_address: str = '', display_data: bool = False):\n", + " if to_address == '':\n", + " to_address = claim_row['bostrom_address']\n", + " return execute_contract(execute_query=f'''{{\"transfer_nft\":{{\"recipient\":\"{to_address}\", \"token_id\":\"{token_id}\"}}}}''',\n", + " contract_address=passport_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "\n", + "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 0:\n", + " create_passport_json = transfer_passport(row, token_id=get_passport_id(WALLET_ADDRESS), display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(create_passport_json, row=row)\n", + " break\n", + " else:\n", + " create_passport_json = transfer_passport(row, token_id=get_passport_id(WALLET_ADDRESS))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Burn" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 22, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "3be258be03084cb2a6fd061cfcfebed3" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tQmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs -> QmRjw7ZB1SN3c7F6K921zfmQdmqAAFGnQjKQWJnhqB2TSH\n", + "\tQmRjw7ZB1SN3c7F6K921zfmQdmqAAFGnQjKQWJnhqB2TSH -> QmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tQmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs -> QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD\n", + "\tQmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD -> QmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Passport Contract\n", + "\treply contract: Passport Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: burn\n", + "\tsender: Passport Owner Address\n", + "\ttoken_id: 50\n" + ] + } + ], + "source": [ + "def burn_passport(claim_row: pd.Series, token_id: str, display_data: bool = False):\n", + " return execute_contract(execute_query=f'''{{\"burn\":{{\"token_id\":\"{token_id}\"}}}}''',\n", + " contract_address=passport_contract_address,\n", + " gas=400000,\n", + " display_data=display_data)\n", + "\n", + "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 0:\n", + " burn_passport_json = burn_passport(row, token_id=get_passport_id(WALLET_ADDRESS), display_data=DISPLAY_TX_EXECUTION)\n", + " parse_contract_execution_json(burn_passport_json, row=row)\n", + " break\n", + " else:\n", + " create_passport_json = burn_passport(row, token_id=get_passport_id(WALLET_ADDRESS))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 22, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -1175,10 +1392,10 @@ "#### set_owner\n", "#### set_active\n", "#### set_subgraphs\n", - "#### transfer_nft\n", + "#### transfer_nft +\n", "#### send_nft\n", "#### mint\n", - "#### burn\n", + "#### burn +\n", "#### approve\n", "#### approve_all\n", "#### revoke\n", @@ -1209,7 +1426,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 22, "outputs": [], "source": [], "metadata": { From bb59536cabfae5d572ad4501c742e8420eb9b8b8 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Fri, 25 Mar 2022 13:09:14 +0800 Subject: [PATCH 22/69] - update Readme - update Subgraph contracts code and addresses --- README.md | 10 ++++- contracts/cw-cyber-airdrop/README.md | 6 ++- .../gift_and_passport_contracts_testing.ipynb | 39 ++++-------------- gift_execution.png | Bin 0 -> 346566 bytes 4 files changed, 22 insertions(+), 33 deletions(-) create mode 100644 gift_execution.png diff --git a/README.md b/README.md index 99591a6..eb27f7e 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ -# cw-cybergift +# cyberGift Contracts +## Gift Execution +![Gift Execution](gift_execution.png) +## Gift Contract +[cw-cyber-airdrop](contracts/cw-cyber-airdrop/README.md) +## Passport Contract +[cw-cyber-passport](contracts/cw-cyber-passport) +## Subgraph Contract +[cw-cyber-subgraph](contracts/cw-cyber-subgraph) diff --git a/contracts/cw-cyber-airdrop/README.md b/contracts/cw-cyber-airdrop/README.md index 99591a6..9f4d2d2 100644 --- a/contracts/cw-cyber-airdrop/README.md +++ b/contracts/cw-cyber-airdrop/README.md @@ -1 +1,5 @@ -# cw-cybergift +# cw-cyber-airdrop + +## Generate root, proofs and verify proofs +This is a helper client shipped along contract +[merkle-airdrop-cli](https://github.com/CosmWasm/cw-tokens/tree/main/contracts/cw20-merkle-airdrop/helpers) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index e981fbd..ebcdc8e 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -49,10 +49,10 @@ "DISPLAY_TX_EXECUTION = False\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", - "SUBGRAPH_CODE_ID = str(21)\n", - "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt'\n", - "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs'\n", - "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k'\n", + "SUBGRAPH_CODE_ID = str(40)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", "PASSPORT_CODE_ID = str(25)\n", @@ -165,30 +165,7 @@ { "cell_type": "markdown", "source": [ - "## Instantiate Contracts" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 2, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ + "## Instantiate Contracts\n", "### Instantiate SUBGRAPH Contracts" ], "metadata": { @@ -206,9 +183,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Name subgraph contract address: bostrom19zmt9dlz3wzu6jqgr9409el7nvxw66u8n67ta5424kwcg0qf269s6t03zt\n", - "Avatar subgraph contract address: bostrom16ulvzd0xp9g6wdhnnhz584ed8xzxm5wkmrsznnzk7qsskegkfutq5djtqs\n", - "Proof subgraph contract address: bostrom1ghwwe2nhxjfy7qulgu6zzmghmnjj3rx8xldr8aytghayxlftz6aqxy4c7k\n" + "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", + "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", + "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" ] } ], diff --git a/gift_execution.png b/gift_execution.png new file mode 100644 index 0000000000000000000000000000000000000000..45f31bf5ab2ef41a21f8e1531e83554e5e12cb7c GIT binary patch literal 346566 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 z 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/Pl*>=A>VD%7J9m$=L1C8_oy9&2J`S&HP_x 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 literal 0 HcmV?d00001 From 832941746cc912d63f5bfc2f57edf4bd87c3e2a4 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Sat, 26 Mar 2022 16:55:08 +0800 Subject: [PATCH 23/69] - update utility to get root and proofs of merkle tree --- .../generate_test_data/contract_utils.py | 110 ++++++---- .../gift_and_passport_contracts_testing.ipynb | 7 +- .../testdata/generate_test_data/index.ts | 50 ++++- .../testdata/generate_test_data/package.json | 20 +- .../testdata/generate_test_data/yarn.lock | 197 ++++++++++++++++-- 5 files changed, 311 insertions(+), 73 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 4bae65d..9e3da14 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -1,4 +1,6 @@ import json +import base58 +import hashlib from subprocess import Popen, PIPE NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443' @@ -6,65 +8,83 @@ def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: - _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate() - if _error: - display_data = True - if display_data: - print(bash_command) - if _output: - try: - print(json.dumps(json.loads(_output.decode('utf-8')), indent=4, sort_keys=True)) - except json.JSONDecodeError: - print(_output) + _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate() if _error: - print(_error) - return _output.decode('utf-8'), _error.decode('utf-8') + display_data = True + if display_data: + print(bash_command) + if _output: + try: + print(json.dumps(json.loads(_output.decode('utf-8')), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_output) + if _error: + print(_error) + return _output.decode('utf-8'), _error.decode('utf-8') def instantiate_contract(init_query: str, contract_code_id: str, contract_label: str, amount: str = '', - display_data: bool = False) -> str: + display_data: bool = False) -> str: _init_output, _init_error = execute_bash( f'''INIT='{init_query}' \ - && cyber tx wasm instantiate {contract_code_id} "$INIT" --from $WALLET {'--amount ' + amount + 'boot' if amount else ''} --label "{contract_label}" \ - -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''') + && cyber tx wasm instantiate {contract_code_id} "$INIT" --from $WALLET + {'--amount ' + amount + 'boot' if amount else ''} --label "{contract_label}" \ + -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''') if display_data: - try: - print(json.dumps(json.loads(_init_output.decode('utf-8')), indent=4, sort_keys=True)) - except json.JSONDecodeError: - print(_init_output) + try: + print(json.dumps(json.loads(_init_output.decode('utf-8')), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_init_output) if _init_error: - print(_init_error) + print(_init_error) _init_json = json.loads(_init_output) - return \ - [event['attributes'][0]['value'] for event in _init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0] + return [event['attributes'][0]['value'] + for event in _init_json['logs'][0]['events'] + if event['type'] == 'instantiate'][0] def execute_contract(execute_query: str, contract_address: str, from_address: str = '$WALLET', gas: int = 300000, display_data: bool = False) -> str: - _execute_output, _execute_error = execute_bash( - f'''EXECUTE='{execute_query}' \ - && CONTRACT="{contract_address}" \ - && cyber tx wasm execute $CONTRACT "$EXECUTE" --from {from_address} --broadcast-mode block -o json -y --gas={gas} --chain-id={NETWORK} --node={NODE_URL}''') - if display_data: + _execute_output, _execute_error = execute_bash( + f'''EXECUTE='{execute_query}' \ + && CONTRACT="{contract_address}" \ + && cyber tx wasm execute $CONTRACT "$EXECUTE" --from {from_address} --broadcast-mode block -o json -y + --gas={gas} --chain-id={NETWORK} --node={NODE_URL}''') + if display_data: + try: + print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_execute_output) + if _execute_error: + print(_execute_error) + return _execute_output + + +def query_contract(query: str, contract_address: str, display_data: bool = False) -> json: + _execute_output, _execute_error = execute_bash( + f'''QUERY='{query}' \ + && cyber query wasm contract-state smart {contract_address} "$QUERY" -o json + --chain-id={NETWORK} --node={NODE_URL}''') try: - print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) + if display_data: + print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) + return json.loads(_execute_output) except json.JSONDecodeError: - print(_execute_output) - if _execute_error: - print(_execute_error) - return _execute_output + print(_execute_output) + if _execute_error: + print(_execute_error) + return json.loads(_execute_output) -def query_contract(query: str, contract_address: str, display_data: bool = False) -> json: - _execute_output, _execute_error = execute_bash( - f'''QUERY='{query}' \ - && cyber query wasm contract-state smart {contract_address} "$QUERY" -o json --chain-id={NETWORK} --node={NODE_URL}''') - try: - if display_data: - print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) - return json.loads(_execute_output) - except json.JSONDecodeError: - print(_execute_output) - if _execute_error: - print(_execute_error) - return json.loads(_execute_output) +def get_ipfs_cid_from_str(source_str: str) -> str: + """ + Use only for getting valid CIDs. + Return is incorrect CID. + :param source_str: string for uploading as file into IPFS + :return IPFS CID (valid but !incorrect!)""" + assert type(source_str) == str + _source_hash = hashlib.sha256(str.encode(source_str)).hexdigest() + _source_hash_bytes = bytes.fromhex(_source_hash) + _length = bytes([len(_source_hash_bytes)]) + _hash = b'\x12' + _length + _source_hash_bytes + return base58.b58encode(_hash).decode('utf-8') diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index ebcdc8e..5ca925c 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -28,7 +28,7 @@ "from tqdm.notebook import tqdm\n", "from base64 import b64encode\n", "\n", - "from contract_utils import execute_bash, instantiate_contract, execute_contract, query_contract\n", + "from contract_utils import execute_bash, instantiate_contract, execute_contract, query_contract, get_ipfs_cid_from_str\n", "\n", "\n", "ipfs_client = ipfshttpclient.connect()\n", @@ -37,7 +37,7 @@ "NUMBER_OF_ACTIVATED_PARTICIPANTS = 2\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", - "AVATAR_CID_LIST = [ipfs_client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", + "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", "CLAIM_AMOUNT_LIST = [1_000_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", @@ -63,6 +63,7 @@ "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", "\n", "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "PROOF_FILE_NAME = 'proof_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" ], "metadata": { @@ -111,7 +112,7 @@ ], "source": [ "claims_list = []\n", - "for i in range(NUMBER_OF_PARTICIPANTS):\n", + "for i in tqdm(range(NUMBER_OF_PARTICIPANTS)):\n", " claim_item = {'amount': CLAIM_AMOUNT_LIST[i],\n", " 'nickname': NICKNAME_LIST[i],\n", " 'avatar': AVATAR_CID_LIST[i]}\n", diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts index bbd107d..fcead21 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts @@ -1,12 +1,14 @@ +import {Command, flags} from '@oclif/command' +import { readFileSync, writeFileSync } from 'fs'; import CryptoJS from "crypto-js"; import sha256 from "crypto-js/sha256"; import { MerkleTree } from "merkletreejs"; -import receivers from "./airdrop_stage_1_list.json"; interface Encoding { - target_address: string; + address: string; amount: string; } + class Airdrop { private tree: MerkleTree; @@ -17,7 +19,7 @@ class Airdrop { encode_data(data: Encoding): CryptoJS.lib.WordArray { return sha256( - data.target_address + data.amount + data.address + data.amount ); } @@ -40,10 +42,40 @@ class Airdrop { } } -let airdrop = new Airdrop(receivers); +class GenerateProofs extends Command { + static description = 'Generates merkle root and proofs for given addresses' + + static examples = [ + `$ generate-merkle-proofs --input root_testing_source.json --output proof.json`, + ] + + static flags = { + input: flags.string({char: 'f', description: 'airdrop file location'}), + output: flags.string({char: 'o', description: 'output file location'}), + } + + async run() { + const {flags} = this.parse(GenerateProofs) -console.log(airdrop.getMerkleRoot()); -console.log(receivers[0]) -console.log(airdrop.getMerkleProof(receivers[0])); -console.log(receivers[1]) -console.log(airdrop.getMerkleProof(receivers[1])); + if (!flags.input) { + this.error(new Error('Airdrop file location not defined')) + } + + if (!flags.output) { + this.error(new Error('Output file location not defined')) + } + + let file = readFileSync(flags.input, 'utf-8'); + let receivers: Array = JSON.parse(file); + let airdrop = new Airdrop(receivers); + + let result = + {"merkle_root": airdrop.getMerkleRoot(), + "proofs": receivers.map((r) => {return {"address": r.address, "amount": r.amount, "proof": airdrop.getMerkleProof(r)}})}; + writeFileSync(flags.output, JSON.stringify(result)); + console.log("merkle root: " + result.merkle_root) + console.log(`number of addresses: ${Object.keys(result.proofs).length}`) + } +} +// @ts-ignore +GenerateProofs.run().catch(require('@oclif/core/handle')) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json b/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json index 383482d..7428c25 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json @@ -1,5 +1,5 @@ { - "name": "generate_test_data", + "name": "generate-merkle-proofs", "version": "1.0.0", "main": "index.ts", "license": "MIT", @@ -12,7 +12,11 @@ "@types/crypto-js": "^4.0.2", "ethereumjs-util": "^7.1.0", "merkletreejs": "^0.2.23", - "tslib": "^1" + "tslib": "^1", + "@oclif/command": "^1", + "@oclif/config": "^1", + "@oclif/core": "^1", + "@oclif/plugin-help": "^3" }, "devDependencies": { "@oclif/dev-cli": "^1", @@ -26,5 +30,17 @@ }, "engines": { "node": ">=8.0.0" + }, + "files": [ + "/bin", + "/lib", + "/npm-shrinkwrap.json", + "/oclif.manifest.json" + ], + "oclif": { + "bin": "generate-merkle-proofs", + "plugins": [ + "@oclif/plugin-help" + ] } } diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock b/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock index fff1afe..f54b53f 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock @@ -264,7 +264,7 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/command@^1.8.14", "@oclif/command@^1.8.15": +"@oclif/command@^1", "@oclif/command@^1.8.14", "@oclif/command@^1.8.15": version "1.8.16" resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" integrity sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w== @@ -288,6 +288,53 @@ is-wsl "^2.1.1" tslib "^2.0.0" +"@oclif/config@^1": + version "1.18.3" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.3.tgz#ddfc144fdab66b1658c2f1b3478fa7fbfd317e79" + integrity sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA== + dependencies: + "@oclif/errors" "^1.3.5" + "@oclif/parser" "^3.8.0" + debug "^4.1.1" + globby "^11.0.1" + is-wsl "^2.1.1" + tslib "^2.3.1" + +"@oclif/core@^1": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.6.3.tgz#3d1dd4e033f5512ac35963a73878257142390838" + integrity sha512-a3DrPNlOYemwnzxuJ3tINjqpMVIYe56Mg+XaQo0nGsqGSk69wF5Q/hD8plsWrtwdkeIxwxhgl7T699EJypAUwg== + dependencies: + "@oclif/linewrap" "^1.0.0" + "@oclif/screen" "^3.0.2" + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.10.0" + debug "^4.3.3" + ejs "^3.1.6" + fs-extra "^9.1.0" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + lodash "^4.17.21" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.2" + semver "^7.3.5" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + tslib "^2.3.1" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + "@oclif/dev-cli@^1": version "1.26.10" resolved "https://registry.yarnpkg.com/@oclif/dev-cli/-/dev-cli-1.26.10.tgz#d8df3a79009b68552f5e7f249d1d19ca52278382" @@ -365,11 +412,33 @@ widest-line "^3.1.0" wrap-ansi "^6.2.0" +"@oclif/plugin-help@^3": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-3.3.1.tgz#36adb4e0173f741df409bb4b69036d24a53bfb24" + integrity sha512-QuSiseNRJygaqAdABYFWn/H1CwIZCp9zp/PLid6yXvy6VcQV7OenEFF5XuYaCvSARe2Tg9r8Jqls5+fw1A9CbQ== + dependencies: + "@oclif/command" "^1.8.15" + "@oclif/config" "1.18.2" + "@oclif/errors" "1.3.5" + "@oclif/help" "^1.0.1" + chalk "^4.1.2" + indent-string "^4.0.0" + lodash "^4.17.21" + string-width "^4.2.0" + strip-ansi "^6.0.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" + "@oclif/screen@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493" integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw== +"@oclif/screen@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.2.tgz#969054308fe98d130c02844a45cc792199b75670" + integrity sha512-S/SF/XYJeevwIgHFmVDAFRUvM3m+OjhvCAYMk78ZJQCYCQ5wS7j+LTt1ZEv2jpEEGg2tx/F6TYYWxddNAYHrFQ== + "@tsconfig/node10@^1.0.7": version "1.0.8" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" @@ -532,7 +601,7 @@ ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.3.0: +ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -561,7 +630,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.2.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.2.0, ansi-styles@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -595,6 +664,16 @@ 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@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -770,7 +849,7 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -808,7 +887,7 @@ clean-regexp@^1.0.0: dependencies: escape-string-regexp "^1.0.5" -clean-stack@^3.0.0: +clean-stack@^3.0.0, clean-stack@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== @@ -822,6 +901,13 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-progress@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.10.0.tgz#63fd9d6343c598c93542fdfa3563a8b59887d78a" + integrity sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw== + dependencies: + string-width "^4.2.0" + cli-progress@^3.4.0: version "3.9.1" resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.9.1.tgz#a22eba6a20f53289fdd05d5ee8cb2cc8c28f866e" @@ -969,6 +1055,13 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" +debug@^4.3.3: + 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" + deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -998,6 +1091,13 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +ejs@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + dependencies: + jake "^10.6.1" + electron-to-chromium@^1.4.17: version "1.4.28" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.28.tgz#fef0e92e281df6d568f482d8d53c34ca5374de48" @@ -1440,6 +1540,17 @@ fast-glob@^3.0.3, fast-glob@^3.1.1: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1471,6 +1582,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +filelist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + dependencies: + minimatch "^3.0.4" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1530,6 +1648,16 @@ fs-extra@^8.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1550,6 +1678,11 @@ gensync@^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-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@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1617,6 +1750,18 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" @@ -1711,7 +1856,7 @@ ignore@^4.0.2, ignore@^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.1.1, ignore@^5.1.4: +ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -1864,6 +2009,16 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +jake@^10.6.1: + version "10.8.4" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.4.tgz#f6a8b7bf90c6306f768aa82bb7b98bf4ca15e84a" + integrity sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA== + dependencies: + async "0.9.x" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -1874,7 +2029,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -1921,6 +2076,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + keccak@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" @@ -2035,7 +2199,7 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -2118,7 +2282,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -natural-orderby@^2.0.1: +natural-orderby@^2.0.1, natural-orderby@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== @@ -2178,7 +2342,7 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" -object-treeify@^1.1.4: +object-treeify@^1.1.33, object-treeify@^1.1.4: version "1.1.33" resolved "https://registry.yarnpkg.com/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40" integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== @@ -2696,7 +2860,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.0.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== @@ -2769,14 +2933,14 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.1.0: +supports-color@^8.1.0, supports-color@^8.1.1: 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-hyperlinks@^2.1.0: +supports-hyperlinks@^2.1.0, supports-hyperlinks@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== @@ -2879,7 +3043,7 @@ tslib@^1, 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.0.0, tslib@^2.0.3: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -2937,6 +3101,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" From 05979f93d99b27e453de75360db06d1c1bd7f234 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Tue, 29 Mar 2022 14:14:11 +0800 Subject: [PATCH 24/69] - update utility to get root and proofs of merkle tree --- .../cw-cyber-airdrop/testdata/generate_test_data/index.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts index fcead21..27f3934 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts @@ -69,12 +69,14 @@ class GenerateProofs extends Command { let receivers: Array = JSON.parse(file); let airdrop = new Airdrop(receivers); + let merkle_root = airdrop.getMerkleRoot() + console.log("Merkle root: " + merkle_root) + let result = - {"merkle_root": airdrop.getMerkleRoot(), + {"merkle_root": merkle_root, "proofs": receivers.map((r) => {return {"address": r.address, "amount": r.amount, "proof": airdrop.getMerkleProof(r)}})}; writeFileSync(flags.output, JSON.stringify(result)); - console.log("merkle root: " + result.merkle_root) - console.log(`number of addresses: ${Object.keys(result.proofs).length}`) + console.log(`Number of addresses in the Merkle tree: ${Object.keys(result.proofs).length}`) } } // @ts-ignore From ecbefd3123e900403a123b43bce05f207477fdd9 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Wed, 30 Mar 2022 16:05:16 +0800 Subject: [PATCH 25/69] - update utility to get root and proofs of merkle tree - add calculation of final merkle tree --- .../generate_test_data/contract_utils.py | 15 + .../gift_final_merkle_tree.ipynb | 429 ++++++++++++++++++ .../testdata/generate_test_data/index.ts | 27 +- 3 files changed, 467 insertions(+), 4 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 9e3da14..e1ad709 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -88,3 +88,18 @@ def get_ipfs_cid_from_str(source_str: str) -> str: _length = bytes([len(_source_hash_bytes)]) _hash = b'\x12' + _length + _source_hash_bytes return base58.b58encode(_hash).decode('utf-8') + + +def get_proofs(input_file: str, + output_file: str, + start_index: int = 1, + end_index: int = -1) -> bool: + _root_and_proofs_output, _root_and_proofs_error = execute_bash( + f'export NODE_OPTIONS=--max_old_space_size=4096 && ' + f'yarn start --input {input_file} --output {output_file} --start_index {start_index} --end_index {end_index}') + if _root_and_proofs_output: + print(_root_and_proofs_output) + return True + else: + print(_root_and_proofs_error) + return False diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb new file mode 100644 index 0000000..8e7aeda --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb @@ -0,0 +1,429 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## Calculation of Merkle Root and Proofs for Final Distribution" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "from multiprocess import Pool\n", + "from math import ceil\n", + "import json\n", + "from IPython.core.display import display, HTML\n", + "\n", + "from contract_utils import instantiate_contract, execute_contract, query_contract, get_proofs\n", + "\n", + "INITIAL_BALANCE = str(10_000_000_000)\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = str(10)\n", + "COEF_UP = str(13)\n", + "COEF_DOWN = str(7)\n", + "TARGET_CLAIM = str(10)\n", + "\n", + "NUMBER_OF_THREADS = 10\n", + "BASH_SIZE = 1000\n", + "\n", + "WALLET_ADDRESS = os.getenv('WALLET_ADDRESS')\n", + "DISPLAY_TX_EXECUTION = False\n", + "\n", + "INIT_SUBGRAPH_CONTRACTS = False\n", + "SUBGRAPH_CODE_ID = str(40)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", + "\n", + "INIT_PASSPORT_CONTRACT = False\n", + "PASSPORT_CODE_ID = str(25)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra'\n", + "\n", + "INIT_GIFT_CONTRACT = True\n", + "GIFT_CODE_ID = str(20)\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", + "\n", + "CALCULATE_PROOFS = True\n", + "STATE_FILE_NAME = 'gift_state_final_220320.csv'\n", + "ROOT_SOURCE_FILE_NAME = 'root_source_final.json'\n", + "PROOF_FILE_NAME = 'proof_final.json'\n", + "ROOT_FILE_NAME = 'root_final'" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [], + "source": [ + "state_df = pd.read_csv(STATE_FILE_NAME)\n", + "display(HTML(state_df.head().to_html(index=False, notebook=True, show_dimensions=False)))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create Merkle Tree, Get Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [], + "source": [ + "state_agg_by_address = state_df.groupby('address')['gift'].sum().reset_index().rename(columns={'gift': 'amount'})\n", + "state_agg_by_address['amount'] = state_agg_by_address['amount'] * 1_000_000" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of addresses: 4426091\n" + ] + } + ], + "source": [ + "root_source_list = state_agg_by_address.to_dict(orient='records')\n", + "number_of_addresses = len(root_source_list)\n", + "print(f'Number of addresses: {number_of_addresses}')\n", + "\n", + "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Calculate Merkle Root and Proofs" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [], + "source": [ + "if CALCULATE_PROOFS:\n", + " tasks = set(\n", + " (\n", + " ('root_testing_source_1000_addresses.json',\n", + " f'temp/proofs_{i}.json',\n", + " i * BASH_SIZE + 1,\n", + " min(number_of_addresses + 1, (i + 1) * BASH_SIZE + 1))\n", + " for i in range(ceil(number_of_addresses/BASH_SIZE))\n", + " )\n", + " )\n", + " print(tasks)\n", + " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(get_proofs, tasks)\n", + " assert res == [True] * len(res)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "data": { + "text/plain": "''" + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roots = []\n", + "proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + "for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = proofs_df.append(pd.DataFrame(root_and_proof_json['proofs']), ignore_index=True)\n", + "assert roots == [roots[0]] * len(roots)\n", + "root = roots[0]\n", + "print(f'Merkle root: {root}')\n", + "print(f'Number of proofs: {len(proofs_df)}')\n", + "display(HTML(proofs_df.head().to_html(index=False, notebook=True, show_dimensions=False)))\n", + "proofs_df.to_csv('proofs_final.csv', header=True, index=True)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph')\n", + " proof_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph')\n", + "else:\n", + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Passport Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "if INIT_PASSPORT_CONTRACT:\n", + " passport_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport')\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subgraph Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 25, + "outputs": [], + "source": [ + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_contract(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift')\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "root_register_output = execute_contract(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", + " contract_address=gift_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "print(f'Gift contract {gift_contract_address}')\n", + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts index 27f3934..b30a4e6 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts @@ -46,12 +46,30 @@ class GenerateProofs extends Command { static description = 'Generates merkle root and proofs for given addresses' static examples = [ - `$ generate-merkle-proofs --input root_testing_source.json --output proof.json`, + `$ generate-merkle-proofs --input root_testing_source.json --output proof.json --start_index 1 --end_index 100`, ] static flags = { - input: flags.string({char: 'f', description: 'airdrop file location'}), - output: flags.string({char: 'o', description: 'output file location'}), + input: flags.string({ + char: 'f', + description: 'airdrop file location' + }), + output: flags.string({ + char: 'o', + description: 'output file location' + }), + start_index: flags.integer({ + char: 's', + description: 'start index in the airdrop file for getting proofs', + default: 1, + required: false + }), + end_index: flags.integer({ + char: 'e', + description: 'end index in the airdrop file for getting proofs', + default: -1, + required: false + }), } async run() { @@ -74,7 +92,8 @@ class GenerateProofs extends Command { let result = {"merkle_root": merkle_root, - "proofs": receivers.map((r) => {return {"address": r.address, "amount": r.amount, "proof": airdrop.getMerkleProof(r)}})}; + "proofs": receivers.slice(flags.start_index, flags.end_index).map( + (r) => {return {"address": r.address, "amount": r.amount, "proof": airdrop.getMerkleProof(r)}})}; writeFileSync(flags.output, JSON.stringify(result)); console.log(`Number of addresses in the Merkle tree: ${Object.keys(result.proofs).length}`) } From c0c5e296a16a09e40cc320a0fc535c016613391a Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Mon, 4 Apr 2022 12:09:44 +0800 Subject: [PATCH 26/69] - update calculation of final merkle tree - fix contract utils --- .../generate_test_data/contract_utils.py | 20 +- .../gift_final_merkle_tree.ipynb | 200 ++++++++++-------- 2 files changed, 126 insertions(+), 94 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index e1ad709..41c46ca 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -26,10 +26,10 @@ def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: def instantiate_contract(init_query: str, contract_code_id: str, contract_label: str, amount: str = '', display_data: bool = False) -> str: _init_output, _init_error = execute_bash( - f'''INIT='{init_query}' \ - && cyber tx wasm instantiate {contract_code_id} "$INIT" --from $WALLET - {'--amount ' + amount + 'boot' if amount else ''} --label "{contract_label}" \ - -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''') + f'''INIT='{init_query}' \ + && cyber tx wasm instantiate {contract_code_id} "$INIT" --from $WALLET \ + {'--amount ' + amount + 'boot' if amount else ''} --label "{contract_label}" \ + -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''') if display_data: try: print(json.dumps(json.loads(_init_output.decode('utf-8')), indent=4, sort_keys=True)) @@ -46,10 +46,10 @@ def instantiate_contract(init_query: str, contract_code_id: str, contract_label: def execute_contract(execute_query: str, contract_address: str, from_address: str = '$WALLET', gas: int = 300000, display_data: bool = False) -> str: _execute_output, _execute_error = execute_bash( - f'''EXECUTE='{execute_query}' \ - && CONTRACT="{contract_address}" \ - && cyber tx wasm execute $CONTRACT "$EXECUTE" --from {from_address} --broadcast-mode block -o json -y - --gas={gas} --chain-id={NETWORK} --node={NODE_URL}''') + f'''EXECUTE='{execute_query}' \ + && CONTRACT="{contract_address}" \ + && cyber tx wasm execute $CONTRACT "$EXECUTE" --from {from_address} --broadcast-mode block -o json -y \ + --gas={gas} --chain-id={NETWORK} --node={NODE_URL}''') if display_data: try: print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) @@ -63,8 +63,8 @@ def execute_contract(execute_query: str, contract_address: str, from_address: st def query_contract(query: str, contract_address: str, display_data: bool = False) -> json: _execute_output, _execute_error = execute_bash( f'''QUERY='{query}' \ - && cyber query wasm contract-state smart {contract_address} "$QUERY" -o json - --chain-id={NETWORK} --node={NODE_URL}''') + && cyber query wasm contract-state smart {contract_address} "$QUERY" -o json \ + --chain-id={NETWORK} --node={NODE_URL}''') try: if display_data: print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb index 8e7aeda..61b67a8 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "outputs": [], "source": [ "import pandas as pd\n", @@ -22,17 +22,18 @@ "from multiprocess import Pool\n", "from math import ceil\n", "import json\n", + "from tqdm.notebook import tqdm\n", "from IPython.core.display import display, HTML\n", "\n", "from contract_utils import instantiate_contract, execute_contract, query_contract, get_proofs\n", "\n", - "INITIAL_BALANCE = str(10_000_000_000)\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = str(10)\n", + "INITIAL_BALANCE = str(100_000_000_000)\n", + "\n", "COEF_UP = str(13)\n", "COEF_DOWN = str(7)\n", "TARGET_CLAIM = str(10)\n", "\n", - "NUMBER_OF_THREADS = 10\n", + "NUMBER_OF_THREADS = 15\n", "BASH_SIZE = 1000\n", "\n", "WALLET_ADDRESS = os.getenv('WALLET_ADDRESS')\n", @@ -51,8 +52,9 @@ "INIT_GIFT_CONTRACT = True\n", "GIFT_CODE_ID = str(20)\n", "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", + "MERKLE_ROOT = 'd8dfb2c769cac706bb3d9cea1b681ff6ba5f680f0af05cefbe68a74027317ab0'\n", "\n", - "CALCULATE_PROOFS = True\n", + "CALCULATE_PROOFS = False\n", "STATE_FILE_NAME = 'gift_state_final_220320.csv'\n", "ROOT_SOURCE_FILE_NAME = 'root_source_final.json'\n", "PROOF_FILE_NAME = 'proof_final.json'\n", @@ -65,25 +67,10 @@ } } }, - { - "cell_type": "code", - "execution_count": 2, - "outputs": [], - "source": [ - "state_df = pd.read_csv(STATE_FILE_NAME)\n", - "display(HTML(state_df.head().to_html(index=False, notebook=True, show_dimensions=False)))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, { "cell_type": "markdown", "source": [ - "### Create Merkle Tree, Get Root" + "### Create source data for Merkle Tree" ], "metadata": { "collapsed": false, @@ -94,38 +81,22 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "outputs": [], "source": [ - "state_agg_by_address = state_df.groupby('address')['gift'].sum().reset_index().rename(columns={'gift': 'amount'})\n", - "state_agg_by_address['amount'] = state_agg_by_address['amount'] * 1_000_000" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 5, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of addresses: 4426091\n" - ] - } - ], - "source": [ - "root_source_list = state_agg_by_address.to_dict(orient='records')\n", - "number_of_addresses = len(root_source_list)\n", - "print(f'Number of addresses: {number_of_addresses}')\n", + "if CALCULATE_PROOFS:\n", + " state_df = pd.read_csv(STATE_FILE_NAME)\n", + " display(HTML(state_df.head().to_html(index=False, notebook=True, show_dimensions=False)))\n", + "\n", + " state_agg_by_address = state_df.groupby('address')['gift'].sum().reset_index().rename(columns={'gift': 'amount'})\n", + " state_agg_by_address['amount'] = state_agg_by_address['amount'] * 1_000_000\n", + "\n", + " root_source_list = state_agg_by_address.to_dict(orient='records')\n", + " number_of_addresses = len(root_source_list)\n", + " print(f'Number of addresses: {number_of_addresses:>,}')\n", "\n", - "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", - " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + " with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" ], "metadata": { "collapsed": false, @@ -148,22 +119,22 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "outputs": [], "source": [ "if CALCULATE_PROOFS:\n", - " tasks = set(\n", + " tasks = list(\n", " (\n", - " ('root_testing_source_1000_addresses.json',\n", - " f'temp/proofs_{i}.json',\n", - " i * BASH_SIZE + 1,\n", - " min(number_of_addresses + 1, (i + 1) * BASH_SIZE + 1))\n", - " for i in range(ceil(number_of_addresses/BASH_SIZE))\n", + " (ROOT_SOURCE_FILE_NAME,\n", + " f'final_temp/proofs_{i}.json',\n", + " i * BASH_SIZE,\n", + " min(number_of_addresses, (i + 1) * BASH_SIZE))\n", + " for i in range(ceil(number_of_addresses/BASH_SIZE))\n", " )\n", " )\n", - " print(tasks)\n", + " print(f'First task: {tasks[0]}\\nLast task: {tasks[-1]}\\nTotal tasks: {len(tasks)}\\nThreads: {NUMBER_OF_THREADS:>,}')\n", " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", - " res = pool.starmap(get_proofs, tasks)\n", + " res = pool.starmap(get_proofs, tasks, 1)\n", " assert res == [True] * len(res)" ], "metadata": { @@ -173,33 +144,59 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Get proofs and root from temporary files" + ], + "metadata": { + "collapsed": false + } + }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Merkle root: d8dfb2c769cac706bb3d9cea1b681ff6ba5f680f0af05cefbe68a74027317ab0\n", + "Number of proofs: 4426091\n" + ] + }, { "data": { - "text/plain": "''" + "text/plain": "", + "text/html": "

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0addressamountproof
00x000000000000000000000000000000000000002024000000['1c12d0e0e5c8dd03999ed1b49e4f8bdc3deb2238c91c7...
10x00000000000000000000000000000000009a6ca024000000['6f914877a2f44e37e2ad1937ba54e6a69078f40865d90...
20x000000000000000000000000000000000e297bdb24000000['28ab88ce80aa1d602c9273e3c01762a15db4a754326be...
30x000000000000000000000000000000000edd899b137000000['cf5c194a5ddb674c0feb1ed63f82d98ada8848db46759...
40x0000000000000000000000000000000053db6ff11505000000['cd92981c19927509a95c585ccd131219ceccda3093684...
\n
" }, - "execution_count": 7, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "roots = []\n", - "proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", - "for task in tasks:\n", - " with open(task[1], 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - " roots.append(root_and_proof_json['merkle_root'])\n", - " proofs_df = proofs_df.append(pd.DataFrame(root_and_proof_json['proofs']), ignore_index=True)\n", - "assert roots == [roots[0]] * len(roots)\n", - "root = roots[0]\n", + "if CALCULATE_PROOFS:\n", + " roots = []\n", + " proofs = []\n", + " for task in tqdm(tasks):\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " if len(proofs) == 0:\n", + " proofs = root_and_proof_json['proofs']\n", + " else:\n", + " proofs.extend(root_and_proof_json['proofs'])\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + "\n", + " assert roots == [roots[0]] * len(roots)\n", + " root = roots[0]\n", + " proofs_df = pd.DataFrame(proofs)\n", + " proofs_df.to_csv('proofs_final.csv', header=True, index=True)\n", + "else:\n", + " root = MERKLE_ROOT\n", + " proofs_df = pd.read_csv('proofs_final.csv')\n", "print(f'Merkle root: {root}')\n", "print(f'Number of proofs: {len(proofs_df)}')\n", - "display(HTML(proofs_df.head().to_html(index=False, notebook=True, show_dimensions=False)))\n", - "proofs_df.to_csv('proofs_final.csv', header=True, index=True)" + "display(HTML(proofs_df.head().to_html(index=False, notebook=True, show_dimensions=False)))" ], "metadata": { "collapsed": false, @@ -223,8 +220,18 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 5, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", + "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", + "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" + ] + } + ], "source": [ "if INIT_SUBGRAPH_CONTRACTS:\n", " name_subgraph_contract_address = \\\n", @@ -271,8 +278,16 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 6, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passport contract address: bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\n" + ] + } + ], "source": [ "if INIT_PASSPORT_CONTRACT:\n", " passport_contract_address = \\\n", @@ -305,7 +320,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 7, "outputs": [], "source": [ "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", @@ -340,8 +355,16 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom1yhdxsta8qt7guughmerkekkxegrmkgycfyhxz9m4k8mu27su0hnq22ecn3\n" + ] + } + ], "source": [ "if INIT_GIFT_CONTRACT:\n", " gift_contract_address = \\\n", @@ -375,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "outputs": [], "source": [ "root_register_output = execute_contract(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", @@ -390,8 +413,17 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 10, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract bostrom1yhdxsta8qt7guughmerkekkxegrmkgycfyhxz9m4k8mu27su0hnq22ecn3\n", + "{'data': {'merkle_root': 'd8dfb2c769cac706bb3d9cea1b681ff6ba5f680f0af05cefbe68a74027317ab0'}}\n" + ] + } + ], "source": [ "print(f'Gift contract {gift_contract_address}')\n", "print(query_contract(query='''{\"merkle_root\": {}}''',\n", From 0a9ec7dc6b7aa5bc80c82dc4e410c29d11f0755f Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Wed, 6 Apr 2022 02:19:23 +0800 Subject: [PATCH 27/69] - add contract execution by cyber CDK - add coin sending for address activation - add file with environmental variables - refactoring --- .../testdata/generate_test_data/.env.example | 2 + .../testdata/generate_test_data/.gitignore | 1 + .../generate_test_data/contract_utils.py | 161 + .../gift_and_passport_contracts_testing.ipynb | 7123 ++++++++++++++++- 4 files changed, 6881 insertions(+), 406 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example new file mode 100644 index 0000000..0aa3665 --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example @@ -0,0 +1,2 @@ +WALLET_SEED='correct lens reopen movie practice harsh blush satisfy ecology action unlock feed begin deny trouble timber bulb infant gun test steel bid rate input' +WALLET_ADDRESS='bostrom1ywemhcrla7f9lkktfsu3cnqv2mapw82a5yf5fc' \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore index 3c3629e..1dcef2d 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore @@ -1 +1,2 @@ node_modules +.env \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 41c46ca..75ddb25 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -3,10 +3,48 @@ import hashlib from subprocess import Popen, PIPE +from cyber_sdk.client.lcd import LCDClient +from cyber_sdk.client.lcd.api.tx import CreateTxOptions +from cyber_sdk.core import AccAddress, Coins +from cyber_sdk.core.wasm import MsgExecuteContract +from cyber_sdk.key.mnemonic import MnemonicKey +from cyber_sdk.core.bank import MsgMultiSend +from cyber_sdk.core.bank.msgs import MultiSendInput, MultiSendOutput + NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443' +LCD_URL = 'https://lcd.space-pussy-1.cybernode.ai/' NETWORK = 'space-pussy-1' +bostrom_lcd_client = LCDClient( + url=LCD_URL, + chain_id=NETWORK +) + + +def execute_contract_sdk(execute_msg: json, contract_address: str, mnemonic: str, + gas: int = 500000, gas_price: int = 0, display_data: bool = False) -> str: + _key = MnemonicKey(mnemonic=mnemonic) + _wallet = bostrom_lcd_client.wallet(key=_key) + + _msg = MsgExecuteContract( + sender=_wallet.key.acc_address, + contract=AccAddress(contract_address), + execute_msg=execute_msg) + + _tx = _wallet.create_and_sign_tx( + CreateTxOptions( + msgs=[_msg], + gas_prices=str(gas_price)+'boot', + gas=str(gas) + ) + ) + if display_data: + print(_msg) + print(_tx) + return bostrom_lcd_client.tx.broadcast(_tx).to_json() + + def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate() if _error: @@ -103,3 +141,126 @@ def get_proofs(input_file: str, else: print(_root_and_proofs_error) return False + + +def send_coins(from_seed: str, to_addresses: list, amounts: list, gas: int = 70999, denom: str = 'boot', + display_data: bool = False) -> str: + _mk = MnemonicKey(mnemonic=from_seed) + _wallet = bostrom_lcd_client.wallet(key=_mk) + + _msg = MsgMultiSend( + inputs=[ + MultiSendInput(address=_wallet.key.acc_address, coins=Coins(boot=_amount)) + for _amount in amounts + ], + outputs=[ + MultiSendOutput(address=_to_address, coins=Coins(boot=_amount)) + for _to_address, _amount in zip(to_addresses, amounts) + ], + ) + + _tx = _wallet.create_and_sign_tx( + CreateTxOptions( + msgs=[_msg], + gas_prices="0boot", + gas=str(gas), + fee_denoms=["boot"], + ) + ) + if display_data: + print(_msg) + print('\n', _tx) + return bostrom_lcd_client.tx.broadcast(_tx).to_json() + + +class ParseOutput: + + def __init__(self, ipfs_client, address_dict): + self.ipfs_client = ipfs_client + self.address_dict = address_dict + + def get_contract_name(self, contract_address: str) -> str: + try: + return self.address_dict[contract_address] + except KeyError: + return contract_address + + def get_name_from_cid(self, ipfs_hash: str, row=None) -> str: + if row is None: + return ipfs_hash + cid_name_dict = { + row['avatar']: 'Avatar', + self.ipfs_client.add_str(row['nickname']): 'Nickname', + self.ipfs_client.add_str(row['ethereum_address']): 'Ethereum Address', + self.ipfs_client.add_str(row['cosmos_address']): 'Cosmos Address', + self.ipfs_client.add_str(row['bostrom_address']): 'Passport Owner Address', + self.ipfs_client.add_str('cyberhole'): 'cyberhole'} + try: + return cid_name_dict[ipfs_hash] + except KeyError: + return ipfs_hash + + def parse_contract_execution_json(self, contract_execution_json: str, row=None) -> None: + print('\nEvents') + _contract_execution_json = json.loads(contract_execution_json) + _logs = _contract_execution_json['logs'] + if _logs is None or len(_logs) == 0: + print(_contract_execution_json['raw_log']) + else: + for log_item in _logs: + for event_item in log_item['events']: + print('') + if event_item['type'] == 'message': + if len(event_item["attributes"]) == 3: + print( + f'message from {self.get_contract_name(event_item["attributes"][-1]["value"])} ' + f'{event_item["attributes"][1]["value"]} {event_item["attributes"][0]["value"]}') + else: + print(event_item) + elif event_item['type'] == 'execute': + print('execute') + for attr_item in event_item["attributes"]: + if attr_item["key"] == '_contract_address': + print(f'\texecute contract: {self.get_contract_name(attr_item["value"])}') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'reply': + print('reply') + for attr_item in event_item["attributes"]: + if attr_item["key"] == '_contract_address': + print(f'\treply contract: {self.get_contract_name(attr_item["value"])}') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'cyberlink': + print('cyberlinks') + for i, attr_item in enumerate(event_item['attributes']): + if attr_item['key'] == 'particleFrom': + print( + f'\t{self.get_name_from_cid(attr_item["value"], row=row)} -> ' + f'{self.get_name_from_cid(event_item["attributes"][i + 1]["value"], row=row)}') + elif attr_item['key'] == 'particleTo': + pass + elif attr_item['key'] == 'neuron': + print(f'\tneuron: {self.get_contract_name(attr_item["value"])}\n') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'coin_received': + print('coin received') + for attr_item in event_item["attributes"]: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'coin_spent': + print('coin spent') + for attr_item in event_item["attributes"]: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'wasm': + print('wasm') + for attr_item in event_item["attributes"]: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'transfer': + print('transfer') + for attr_item in event_item["attributes"]: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + else: + print(event_item) + print(f"Gas used: {int(_contract_execution_json['gas_used']):>,}") + print(f"Tx hash: {_contract_execution_json['txhash']}") diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 5ca925c..88464ca 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -2,18 +2,26 @@ "cells": [ { "cell_type": "markdown", - "metadata": { - "collapsed": true, - "pycharm": { - "name": "#%% md\n" - } - }, "source": [ "## Gift Contract Testing" - ] + ], + "metadata": { + "collapsed": false + } }, { "cell_type": "code", + "execution_count": 1, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/sergenedashkovsky/Library/Python/3.8/lib/python/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.10.0' (not in range: 0.5.0 ≤ … < 0.9.0)\n", + " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" + ] + } + ], "source": [ "from web3.auto import w3\n", "import pandas as pd\n", @@ -22,31 +30,38 @@ "from cyberpy._wallet import seed_to_privkey\n", "from eth_account.messages import encode_defunct\n", "import json\n", - "import os\n", "from time import time\n", "import ipfshttpclient\n", "from tqdm.notebook import tqdm\n", "from base64 import b64encode\n", + "from multiprocess import Pool\n", + "from math import ceil\n", + "from dotenv import dotenv_values\n", + "from itertools import islice\n", + "from IPython.core.display import display, HTML\n", "\n", - "from contract_utils import execute_bash, instantiate_contract, execute_contract, query_contract, get_ipfs_cid_from_str\n", + "from contract_utils import execute_bash, instantiate_contract, execute_contract, query_contract, get_ipfs_cid_from_str, get_proofs, ParseOutput, execute_contract_sdk, send_coins\n", "\n", "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 3\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 2\n", + "NUMBER_OF_PARTICIPANTS = 1000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 10\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", "CLAIM_AMOUNT_LIST = [1_000_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", - "COEF_UP = str(20)\n", - "COEF_DOWN = str(5)\n", + "COEF_UP = str(13)\n", + "COEF_DOWN = str(7)\n", "TARGET_CLAIM = str(2)\n", "\n", - "WALLET_ADDRESS = os.getenv('WALLET_ADDRESS')\n", + "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", + "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", "DISPLAY_TX_EXECUTION = False\n", + "TEST_ACCOUNT_ADDRESS = 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'\n", + "TEST_ACCOUNT_SEED = 'end spread blind steak install glare pride pony switch exit zone faint opinion march layer illness can nest fence top debate monitor supreme noble'\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", "SUBGRAPH_CODE_ID = str(40)\n", @@ -63,7 +78,7 @@ "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", "\n", "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", - "PROOF_FILE_NAME = 'proof_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "PROOF_FILE_NAME = 'proof_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" ], "metadata": { @@ -71,18 +86,7 @@ "pycharm": { "name": "#%%\n" } - }, - "execution_count": 1, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/sergenedashkovsky/Library/Python/3.8/lib/python/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.10.0' (not in range: 0.5.0 ≤ … < 0.9.0)\n", - " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" - ] - } - ] + } }, { "cell_type": "markdown", @@ -90,10 +94,7 @@ "### Generate addresses and sign messages" ], "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } + "collapsed": false } }, { @@ -102,8 +103,20 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16474127780 QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp \n1 1000000 john16474127781 QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD \n2 1000000 john16474127782 QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos6 \n\n ethereum_address \\\n0 0x4878aae4c66be69d15c590dac467692337e5b0cf \n1 0x744443c73710d15eb9970ce7ebf470d36569176b \n2 0x15720b613d56c03d0a2a7f0690ff21fbcc03f9b4 \n\n ethereum_private_key \\\n0 0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4... \n1 0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616... \n2 0xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31... \n\n bostrom_address \\\n0 bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrk \n1 bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8 \n2 bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvh \n\n cosmos_address \\\n0 cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3 \n1 cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q \n2 cosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjs \n\n cosmos_seed \\\n0 success clog skill length already armed entry ... \n1 village have emotion large august merry escape... \n2 dress tobacco ignore cinnamon party isolate ca... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3... \n1 0x7631668215a5b300662228dafa47f08d87c797a4ea09... \n2 0x342d548d44fd16875b7e91b2427a4aa33108f5633647... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z... \n1 {'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm... \n2 {'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0... \n1 eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej... \n2 eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16474127780QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp0x4878aae4c66be69d15c590dac467692337e5b0cf0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4...bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrkcosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3success clog skill length already armed entry ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3...{'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z...eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0...
11000000john16474127781QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD0x744443c73710d15eb9970ce7ebf470d36569176b0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616...bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4qvillage have emotion large august merry escape...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x7631668215a5b300662228dafa47f08d87c797a4ea09...{'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm...eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej...
21000000john16474127782QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos60x15720b613d56c03d0a2a7f0690ff21fbcc03f9b40xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31...bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvhcosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjsdress tobacco ignore cinnamon party isolate ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x342d548d44fd16875b7e91b2427a4aa33108f5633647...{'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B...eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU...
\n
" + "text/plain": " 0%| | 0/1000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16491805420QmYkvRCFomDU2kTS8tPHyc2dq8zbH5sGX3UkSdNwhcA3KU0x53aab6fbd57f81474d5f982b7283db51de3c83170x5d9bb0a41022bc64517176c2b7683eb13db0cc3099ff...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjnexit cash extra kiss night bacon input tackle ...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5...0x659812efcc33bd31bb6dd313305b701a9e964ffe4819...{'pub_key': 'A1gm6WiIDTYeIyt9QSSGcauYKb35OCCfy...eyJwdWJfa2V5IjoiQTFnbTZXaUlEVFllSXl0OVFTU0djYX...
11000000john16491805421QmcgbLatva5ByF9E9PEkvWD8MGFLkn4ysPWEYzmhnBusqN0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d60x103392bdb81d67f69722608de6a33d01c4bcac72f4f8...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4fcosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2twbrown vacuum craft mask puzzle option subway p...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f...0x02ba7cd56909d60fa871286bddea9b803d737dff9e70...{'pub_key': 'AtX2v1wR/Je2l4sRLHbsA3WbK5s0dtKDW...eyJwdWJfa2V5IjoiQXRYMnYxd1IvSmUybDRzUkxIYnNBM1...
21000000john16491805422Qmes2KpFKKyVhMExUx9WYm1XhaXpXsJzT8nngGEZo8THNX0x00ef128fe6552bbdbaa9ccd799348cf0bfc090040xbc057c174aa9f5a7ce6cd8970c5b85381e6bf05553fb...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3cosmos1j7zq5gs74hlx0v0wlkfueuz2agdnm0jdx8rvzkpool loop myth tonight submit library refuse e...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3...0x28877399a194b0254e59cc51afb115d9607a6e13a266...{'pub_key': 'AxPpSNqt0t1PuN+hsE8YGusfpjbKfShFu...eyJwdWJfa2V5IjoiQXhQcFNOcXQwdDFQdU4raHNFOFlHdX...
31000000john16491805423QmTbBu9yNkpyvsFaRTFG2LajAtL6aeR8TxKwmvZaGtonpu0xbbe13e3406d7eed71c67cffb687459f3b217bf9f0xc53fbb9e5a0383a7d11f34248ab507c6749e5433a533...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qhcosmos183y9le3eqqy058fjkk2l23f54gxv2vkymmn87sinitial police glance human okay pave tornado ...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh...0x78c51751be88294f022551bb8c46fb5bdda8cabd6cac...{'pub_key': 'AuRQu3Pd0lH0wkQZBQtKanE02zIZZT1yA...eyJwdWJfa2V5IjoiQXVSUXUzUGQwbEgwd2tRWkJRdEthbk...
41000000john16491805424QmNd8GkXwqs2avFgB2vx6anU6PqCPwMBrVaLr5h8py5gdv0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d0x8f34e2dac8046e1fb55d130a522c7eba2ec884271241...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6vcosmos1c22rcy7lq55qrcllvyxy0d4dm8we7h3uu9j2ytexcess choose sweet fluid borrow crunch unfair...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v...0xcb1a4b6eed38a4d1cdd2ca93f0d621d98db04de82dbc...{'pub_key': 'AlqmKMZ7WV49o9daIYFl286RDKRCxQ7Cf...eyJwdWJfa2V5IjoiQWxxbUtNWjdXVjQ5bzlkYUlZRmwyOD...
.......................................
9951000000john1649180542995QmPPN4uXU5pnXHgv6QeJANmUUQ91pzWSdvwaA9E42mGntU0x1e1824ada074f0afdca15a6c57f30b5f028707bb0xae23a16ea4e551a50213ff14106551e025772c663236...bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qucosmos14x6c0nt3l7e4xxvufapmdpch8gq6ysepdt2k7mselect clap panic beauty leave youth glory riv...bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu...0x1993f68d904904bd4630966e6d18a7ecbdbcb03cd7bc...{'pub_key': 'AiMAqhMz1czTJN634ySX8Z2jHRYFytTMC...eyJwdWJfa2V5IjoiQWlNQXFoTXoxY3pUSk42MzR5U1g4Wj...
9961000000john1649180542996QmdzN3Cw1tRoi2DrCp27VGCDsJX6awPK8JKoMYQTkLCtGN0xcf800ad16bf6144d60651b87dca581c78572ef1f0xf7cd685f09310132680449af21d83770628b2c05c985...bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxwcosmos18605553ld5nvw5yvf37n20asz5uy62xa9n4hcfpush extend egg lobster country rug drastic im...bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw...0x272bb707e76d72427aeb1ab01cd68f46da004f98c6c3...{'pub_key': 'A5Ng/mcdI0YN5X4iqsA8LHugEHP1kz1o5...eyJwdWJfa2V5IjoiQTVOZy9tY2RJMFlONVg0aXFzQThMSH...
9971000000john1649180542997QmXrzBrT8hfqXVRST6ELiRRaBgibpbUzXgGaLLxQQog7sF0x042b7342c7438babe46ac89a3d2329f07fad4df60x09022387bd76729fe16396ad409144e36ef25f537849...bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcmcosmos1ywr569ke6tgpwc03t36uz7f73aweg6u6g7v9xucinnamon feed option congress rate gap two exi...bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm...0x6a57fae828f456f96436933034e15d1be2e8701aec04...{'pub_key': 'AlNHCI/i0TVn1waAAu4j6yDTzv12lOaxF...eyJwdWJfa2V5IjoiQWxOSENJL2kwVFZuMXdhQUF1NGo2eU...
9981000000john1649180542998QmQMDryY34qP53R95fbur1DRz1x9pguZkj1bkKzdPF1T3X0x967e13eb434842b6040666b44ee6aa47db2d35d00x76f158ee3e107d8ad9dfb496d0b24a7307feaf02db83...bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3cosmos1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghghn7lfkcrawl melody pledge hard fit day welcome mater...bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3...0x80cc26369b9567c8acd019d6971571fb6f889f133a1a...{'pub_key': 'Arpf2KMNOVP8xBdRj6w2usT+1G01JgM94...eyJwdWJfa2V5IjoiQXJwZjJLTU5PVlA4eEJkUmo2dzJ1c1...
9991000000john1649180542999QmXjxfQm5FvkoGPHRSd7G7k2G2SWUkS2jZAsk9XwzHN4xL0xa92f2a2d27a1f6329c15bdada24c86ac2f3dd6c90xa017fccc7e3acfae651e2cde3e36a1b041b28e0d0fd6...bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98cosmos1cccky3u8au0qvqt2d3z4kj74wuzfaknluvwlmqreview movie tiger view destroy ticket electri...bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98...0x39379c5c591c9d8c32af050e178eeeb85c781c78ac2d...{'pub_key': 'A6GXpZfq4qKFIjDHM5Tha5MFkVyriciVa...eyJwdWJfa2V5IjoiQTZHWHBaZnE0cUtGSWpESE01VGhhNU...
\n

1000 rows × 12 columns

\n" }, "execution_count": 2, "metadata": {}, @@ -129,7 +142,7 @@ " claim_item['cosmos_seed'] = bostrom_wallet['seed']\n", "\n", " # Create message\n", - " claim_item['message'] = f\"{WALLET_ADDRESS}:QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV\"\n", + " claim_item['message'] = f\"{claim_item['bostrom_address']}:QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV\"\n", "\n", " # Sign message form Ethereum address\n", " ethereum_signed_message = \\\n", @@ -153,7 +166,7 @@ " claims_list.append(claim_item)\n", "\n", "claims_df = pd.DataFrame(claims_list)\n", - "claims_df.to_csv('claims_ethereum_test_data_without_proof' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df.to_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", "claims_df" ], "metadata": { @@ -163,6 +176,189 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Create Merkle Tree, Get Root and Proofs" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [], + "source": [ + "root_source_list = [{'address': _item['ethereum_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", + " [{'address': _item['cosmos_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]\n", + "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", + "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "yarn run v1.22.17\n", + "$ ts-node index.ts --input root_testing_source_1000_addresses.json --output proof_testing_1000_addresses.json\n", + "Merkle root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "Number of addresses in the Merkle tree: 1999\n", + "Done in 4.27s.\n", + "\n", + "Merkle root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "Number of addresses in the Merkle tree: 1999\n" + ] + } + ], + "source": [ + "root_and_proofs_output, root_and_proofs_error = execute_bash(\n", + " f'export NODE_OPTIONS=--max_old_space_size=4096 && '\n", + " f'yarn start --input {ROOT_SOURCE_FILE_NAME} --output {PROOF_FILE_NAME}')\n", + "print(root_and_proofs_output)\n", + "with open(PROOF_FILE_NAME, 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + "root = root_and_proof_json['merkle_root']\n", + "proofs_df = pd.DataFrame(root_and_proof_json['proofs'])\n", + "print(f'Merkle root: {root}')\n", + "print(f'Number of addresses in the Merkle tree: {len(proofs_df)}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{('root_testing_source_1000_addresses.json', 'temp/proofs_0.json', 0, 1001)}\n", + "yarn run v1.22.17\n", + "$ ts-node index.ts --input root_testing_source_1000_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 1001\n", + "Merkle root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 3.03s.\n", + "\n" + ] + } + ], + "source": [ + "NUMBER_OF_THREADS = 10\n", + "BASH_SIZE = 1000\n", + "\n", + "tasks = set(\n", + " (\n", + " (ROOT_SOURCE_FILE_NAME,\n", + " f'temp/proofs_{i}.json',\n", + " i * BASH_SIZE,\n", + " min(NUMBER_OF_PARTICIPANTS * 2 + 1, (i + 1) * BASH_SIZE + 1))\n", + " for i in range(ceil(NUMBER_OF_PARTICIPANTS/BASH_SIZE))\n", + " )\n", + ")\n", + "print(tasks)\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(get_proofs, tasks)\n", + "assert res == [True] * len(res)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "data": { + "text/plain": " address amount \\\n0 0x53aab6fbd57f81474d5f982b7283db51de3c8317 1000000 \n1 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6 1000000 \n2 0x00ef128fe6552bbdbaa9ccd799348cf0bfc09004 1000000 \n3 0xbbe13e3406d7eed71c67cffb687459f3b217bf9f 1000000 \n4 0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d 1000000 \n... ... ... \n996 0xcf800ad16bf6144d60651b87dca581c78572ef1f 1000000 \n997 0x042b7342c7438babe46ac89a3d2329f07fad4df6 1000000 \n998 0x967e13eb434842b6040666b44ee6aa47db2d35d0 1000000 \n999 0xa92f2a2d27a1f6329c15bdada24c86ac2f3dd6c9 1000000 \n1000 cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn 1000000 \n\n proof \n0 [161e04d67252fe71120c2e00d55501f8c22a95564d5d8... \n1 [6a387858cf1b24bb77c557395634dd684547064aa4984... \n2 [cad95c432671e2767c87836f2971bb3634e055153e69b... \n3 [961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d... \n4 [d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d... \n... ... \n996 [a1959cdf7524769b9385e53ce9efdbe1989a15847483d... \n997 [a3eceb3255a10e3aa743b716545651e1b08678264fa29... \n998 [2a5b28037d80215e4574abf38c871afbf1c4c607221f1... \n999 [51390b99be7fc69c938e543dbcf2d0a3538da10624ee7... \n1000 [d27462aa80375ce17211fc423e757fafa63a68d4c3cfc... \n\n[1001 rows x 3 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00x53aab6fbd57f81474d5f982b7283db51de3c83171000000[161e04d67252fe71120c2e00d55501f8c22a95564d5d8...
10xde48fb7fcd78f33ebdef4956fb79e02bc70c97d61000000[6a387858cf1b24bb77c557395634dd684547064aa4984...
20x00ef128fe6552bbdbaa9ccd799348cf0bfc090041000000[cad95c432671e2767c87836f2971bb3634e055153e69b...
30xbbe13e3406d7eed71c67cffb687459f3b217bf9f1000000[961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d...
40xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d1000000[d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d...
............
9960xcf800ad16bf6144d60651b87dca581c78572ef1f1000000[a1959cdf7524769b9385e53ce9efdbe1989a15847483d...
9970x042b7342c7438babe46ac89a3d2329f07fad4df61000000[a3eceb3255a10e3aa743b716545651e1b08678264fa29...
9980x967e13eb434842b6040666b44ee6aa47db2d35d01000000[2a5b28037d80215e4574abf38c871afbf1c4c607221f1...
9990xa92f2a2d27a1f6329c15bdada24c86ac2f3dd6c91000000[51390b99be7fc69c938e543dbcf2d0a3538da10624ee7...
1000cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn1000000[d27462aa80375ce17211fc423e757fafa63a68d4c3cfc...
\n

1001 rows × 3 columns

\n
" + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roots = []\n", + "proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + "for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = proofs_df.append(pd.DataFrame(root_and_proof_json['proofs']), ignore_index=True)\n", + "assert roots == [roots[0]] * len(roots)\n", + "proofs_df" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "data": { + "text/plain": " amount nickname avatar \\\n0 1000000 john16491805420 QmYkvRCFomDU2kTS8tPHyc2dq8zbH5sGX3UkSdNwhcA3KU \n1 1000000 john16491805421 QmcgbLatva5ByF9E9PEkvWD8MGFLkn4ysPWEYzmhnBusqN \n2 1000000 john16491805422 Qmes2KpFKKyVhMExUx9WYm1XhaXpXsJzT8nngGEZo8THNX \n3 1000000 john16491805423 QmTbBu9yNkpyvsFaRTFG2LajAtL6aeR8TxKwmvZaGtonpu \n4 1000000 john16491805424 QmNd8GkXwqs2avFgB2vx6anU6PqCPwMBrVaLr5h8py5gdv \n\n ethereum_address \\\n0 0x53aab6fbd57f81474d5f982b7283db51de3c8317 \n1 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6 \n2 0x00ef128fe6552bbdbaa9ccd799348cf0bfc09004 \n3 0xbbe13e3406d7eed71c67cffb687459f3b217bf9f \n4 0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d \n\n ethereum_private_key \\\n0 0x5d9bb0a41022bc64517176c2b7683eb13db0cc3099ff... \n1 0x103392bdb81d67f69722608de6a33d01c4bcac72f4f8... \n2 0xbc057c174aa9f5a7ce6cd8970c5b85381e6bf05553fb... \n3 0xc53fbb9e5a0383a7d11f34248ab507c6749e5433a533... \n4 0x8f34e2dac8046e1fb55d130a522c7eba2ec884271241... \n\n bostrom_address \\\n0 bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 \n1 bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f \n2 bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3 \n3 bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh \n4 bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v \n\n cosmos_address \\\n0 cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn \n1 cosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2tw \n2 cosmos1j7zq5gs74hlx0v0wlkfueuz2agdnm0jdx8rvzk \n3 cosmos183y9le3eqqy058fjkk2l23f54gxv2vkymmn87s \n4 cosmos1c22rcy7lq55qrcllvyxy0d4dm8we7h3uu9j2yt \n\n cosmos_seed \\\n0 exit cash extra kiss night bacon input tackle ... \n1 brown vacuum craft mask puzzle option subway p... \n2 pool loop myth tonight submit library refuse e... \n3 initial police glance human okay pave tornado ... \n4 excess choose sweet fluid borrow crunch unfair... \n\n message \\\n0 bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5... \n1 bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f... \n2 bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3... \n3 bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh... \n4 bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v... \n\n ethereum_message_signature \\\n0 0x659812efcc33bd31bb6dd313305b701a9e964ffe4819... \n1 0x02ba7cd56909d60fa871286bddea9b803d737dff9e70... \n2 0x28877399a194b0254e59cc51afb115d9607a6e13a266... \n3 0x78c51751be88294f022551bb8c46fb5bdda8cabd6cac... \n4 0xcb1a4b6eed38a4d1cdd2ca93f0d621d98db04de82dbc... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A1gm6WiIDTYeIyt9QSSGcauYKb35OCCfy... \n1 {'pub_key': 'AtX2v1wR/Je2l4sRLHbsA3WbK5s0dtKDW... \n2 {'pub_key': 'AxPpSNqt0t1PuN+hsE8YGusfpjbKfShFu... \n3 {'pub_key': 'AuRQu3Pd0lH0wkQZBQtKanE02zIZZT1yA... \n4 {'pub_key': 'AlqmKMZ7WV49o9daIYFl286RDKRCxQ7Cf... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTFnbTZXaUlEVFllSXl0OVFTU0djYX... \n1 eyJwdWJfa2V5IjoiQXRYMnYxd1IvSmUybDRzUkxIYnNBM1... \n2 eyJwdWJfa2V5IjoiQXhQcFNOcXQwdDFQdU4raHNFOFlHdX... \n3 eyJwdWJfa2V5IjoiQXVSUXUzUGQwbEgwd2tRWkJRdEthbk... \n4 eyJwdWJfa2V5IjoiQWxxbUtNWjdXVjQ5bzlkYUlZRmwyOD... \n\n ethereum_proof \\\n0 [161e04d67252fe71120c2e00d55501f8c22a95564d5d8... \n1 [6a387858cf1b24bb77c557395634dd684547064aa4984... \n2 [cad95c432671e2767c87836f2971bb3634e055153e69b... \n3 [961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d... \n4 [d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d... \n\n cosmos_proof \n0 [d27462aa80375ce17211fc423e757fafa63a68d4c3cfc... \n1 NaN \n2 NaN \n3 NaN \n4 NaN ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16491805420QmYkvRCFomDU2kTS8tPHyc2dq8zbH5sGX3UkSdNwhcA3KU0x53aab6fbd57f81474d5f982b7283db51de3c83170x5d9bb0a41022bc64517176c2b7683eb13db0cc3099ff...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjnexit cash extra kiss night bacon input tackle ...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5...0x659812efcc33bd31bb6dd313305b701a9e964ffe4819...{'pub_key': 'A1gm6WiIDTYeIyt9QSSGcauYKb35OCCfy...eyJwdWJfa2V5IjoiQTFnbTZXaUlEVFllSXl0OVFTU0djYX...[161e04d67252fe71120c2e00d55501f8c22a95564d5d8...[d27462aa80375ce17211fc423e757fafa63a68d4c3cfc...
11000000john16491805421QmcgbLatva5ByF9E9PEkvWD8MGFLkn4ysPWEYzmhnBusqN0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d60x103392bdb81d67f69722608de6a33d01c4bcac72f4f8...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4fcosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2twbrown vacuum craft mask puzzle option subway p...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f...0x02ba7cd56909d60fa871286bddea9b803d737dff9e70...{'pub_key': 'AtX2v1wR/Je2l4sRLHbsA3WbK5s0dtKDW...eyJwdWJfa2V5IjoiQXRYMnYxd1IvSmUybDRzUkxIYnNBM1...[6a387858cf1b24bb77c557395634dd684547064aa4984...NaN
21000000john16491805422Qmes2KpFKKyVhMExUx9WYm1XhaXpXsJzT8nngGEZo8THNX0x00ef128fe6552bbdbaa9ccd799348cf0bfc090040xbc057c174aa9f5a7ce6cd8970c5b85381e6bf05553fb...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3cosmos1j7zq5gs74hlx0v0wlkfueuz2agdnm0jdx8rvzkpool loop myth tonight submit library refuse e...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3...0x28877399a194b0254e59cc51afb115d9607a6e13a266...{'pub_key': 'AxPpSNqt0t1PuN+hsE8YGusfpjbKfShFu...eyJwdWJfa2V5IjoiQXhQcFNOcXQwdDFQdU4raHNFOFlHdX...[cad95c432671e2767c87836f2971bb3634e055153e69b...NaN
31000000john16491805423QmTbBu9yNkpyvsFaRTFG2LajAtL6aeR8TxKwmvZaGtonpu0xbbe13e3406d7eed71c67cffb687459f3b217bf9f0xc53fbb9e5a0383a7d11f34248ab507c6749e5433a533...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qhcosmos183y9le3eqqy058fjkk2l23f54gxv2vkymmn87sinitial police glance human okay pave tornado ...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh...0x78c51751be88294f022551bb8c46fb5bdda8cabd6cac...{'pub_key': 'AuRQu3Pd0lH0wkQZBQtKanE02zIZZT1yA...eyJwdWJfa2V5IjoiQXVSUXUzUGQwbEgwd2tRWkJRdEthbk...[961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d...NaN
41000000john16491805424QmNd8GkXwqs2avFgB2vx6anU6PqCPwMBrVaLr5h8py5gdv0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d0x8f34e2dac8046e1fb55d130a522c7eba2ec884271241...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6vcosmos1c22rcy7lq55qrcllvyxy0d4dm8we7h3uu9j2ytexcess choose sweet fluid borrow crunch unfair...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v...0xcb1a4b6eed38a4d1cdd2ca93f0d621d98db04de82dbc...{'pub_key': 'AlqmKMZ7WV49o9daIYFl286RDKRCxQ7Cf...eyJwdWJfa2V5IjoiQWxxbUtNWjdXVjQ5bzlkYUlZRmwyOD...[d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d...NaN
\n
" + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cosmos_proofs_df = proofs_df[proofs_df.address.str.startswith('cosmos')][['address', 'proof']]\n", + "ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + "\n", + "claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='left',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='left',\n", + " on='cosmos_address')\n", + "\n", + "claims_with_proofs_df.to_csv('claims_ethereum_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_with_proofs_df.head()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -178,7 +374,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "outputs": [ { "name": "stdout", @@ -236,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 9, "outputs": [ { "name": "stdout", @@ -278,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 10, "outputs": [], "source": [ "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", @@ -313,13 +509,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 11, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1hh235cquh47tk7mj2hfkdz70g6m787qpx9vledlyz0n3j4jt0d8sgj92mq\n" + "Gift contract address: bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8\n" ] } ], @@ -342,116 +538,10 @@ } } }, - { - "cell_type": "code", - "execution_count": 7, - "outputs": [], - "source": [ - "def get_contract_name(contract_address: str) -> str:\n", - " address_dict = {gift_contract_address: 'Gift Contract',\n", - " passport_contract_address: 'Passport Contract',\n", - " WALLET_ADDRESS: 'Passport Owner Address',\n", - " name_subgraph_contract_address: 'Name Subgraph Contract',\n", - " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", - " proof_subgraph_contract_address: 'Proof Subgraph Contract'}\n", - " try:\n", - " return address_dict[contract_address]\n", - " except KeyError:\n", - " return contract_address\n", - "\n", - "\n", - "def get_name_from_cid(ipfs_hash: str, row=None) -> str:\n", - " if row is None:\n", - " return ipfs_hash\n", - " cid_name_dict = {\n", - " row['avatar']: 'Avatar',\n", - " ipfs_client.add_str(row['nickname']): 'Nickname',\n", - " ipfs_client.add_str(row['ethereum_address']): 'Ethereum Address',\n", - " ipfs_client.add_str(row['cosmos_address']): 'Cosmos Address',\n", - " ipfs_client.add_str(WALLET_ADDRESS): 'Passport Owner Address'}\n", - " try:\n", - " return cid_name_dict[ipfs_hash]\n", - " except KeyError:\n", - " return ipfs_hash\n", - "\n", - "\n", - "def parse_contract_execution_json(contract_execution_json: str, row=None) -> None:\n", - " print('\\nEvents')\n", - " if len(json.loads(contract_execution_json)['logs']) == 0:\n", - " print(json.loads(contract_execution_json)['raw_log'])\n", - " for log_item in json.loads(contract_execution_json)['logs']:\n", - " for event_item in log_item['events']:\n", - " print('')\n", - " if event_item['type'] == 'message':\n", - " if len(event_item[\"attributes\"]) == 3:\n", - " print(f'message from {get_contract_name(event_item[\"attributes\"][-1][\"value\"])} {event_item[\"attributes\"][1][\"value\"]} {event_item[\"attributes\"][0][\"value\"]}')\n", - " else:\n", - " print(event_item)\n", - " elif event_item['type'] == 'execute':\n", - " print('execute')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " if attr_item[\"key\"] == '_contract_address':\n", - " print(f'\\texecute contract: {get_contract_name(attr_item[\"value\"])}')\n", - " else:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'reply':\n", - " print('reply')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " if attr_item[\"key\"] == '_contract_address':\n", - " print(f'\\treply contract: {get_contract_name(attr_item[\"value\"])}')\n", - " else:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'cyberlink':\n", - " print('cyberlinks')\n", - " for i, attr_item in enumerate(event_item['attributes']):\n", - " if attr_item['key'] == 'particleFrom':\n", - " print(f'\\t{get_name_from_cid(attr_item[\"value\"], row=row)} -> {get_name_from_cid(event_item[\"attributes\"][i + 1][\"value\"], row=row)}')\n", - " elif attr_item['key'] == 'particleTo':\n", - " pass\n", - " elif attr_item['key'] == 'neuron':\n", - " print(f'\\tneuron: {get_contract_name(attr_item[\"value\"])}\\n')\n", - " else:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'coin_received':\n", - " print('coin received')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'coin_spent':\n", - " print('coin spent')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'wasm':\n", - " print('wasm')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'transfer':\n", - " print('transfer')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " else:\n", - " print(event_item)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, { "cell_type": "markdown", "source": [ - "### Create Merkle Root" + "### Initiate Class of Output Parsing" ], "metadata": { "collapsed": false, @@ -462,16 +552,17 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 12, "outputs": [], "source": [ - "root_source_list = [{'address': _item['ethereum_address'],\n", - " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", - " [{'address': _item['cosmos_address'],\n", - " 'amount': str(_item['amount'])} for _item in claims_list]\n", - "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", - "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", - " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + "parse_output = ParseOutput(ipfs_client=ipfs_client,\n", + " address_dict= {\n", + " gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" ], "metadata": { "collapsed": false, @@ -481,57 +572,30 @@ } }, { - "cell_type": "code", - "execution_count": 9, - "outputs": [ - { - "data": { - "text/plain": "[{'address': '0x4878aae4c66be69d15c590dac467692337e5b0cf',\n 'amount': '1000000'},\n {'address': '0x744443c73710d15eb9970ce7ebf470d36569176b',\n 'amount': '1000000'},\n {'address': '0x15720b613d56c03d0a2a7f0690ff21fbcc03f9b4',\n 'amount': '1000000'},\n {'address': 'cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3',\n 'amount': '1000000'},\n {'address': 'cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q',\n 'amount': '1000000'},\n {'address': 'cosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjs',\n 'amount': '1000000'},\n {'address': '0xf2749114feaad68854e01c8ee762c7170532fdfd',\n 'amount': '10000000'}]" - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "root_source_list" - ], + "cell_type": "markdown", + "source": [], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } } }, { - "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Merkle root: 725942cbb284688da040f146cb3441852460f6d8034896768a7f5c1e87f7d14a\n" - ] - } - ], + "cell_type": "markdown", "source": [ - "execute_bash(f'rm {ROOT_FILE_NAME}')\n", - "root_output, root_error = execute_bash(\n", - " f'merkle-airdrop-cli generateRoot --file {ROOT_SOURCE_FILE_NAME} >> {ROOT_FILE_NAME} && cat {ROOT_FILE_NAME}')\n", - "root = root_output.replace('\\n', '')\n", - "print(f'Merkle root: {root}')" + "### Register Merkle Root" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } } }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "outputs": [ { "name": "stdout", @@ -548,14 +612,17 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: 725942cbb284688da040f146cb3441852460f6d8034896768a7f5c1e87f7d14a\n" + "\tmerkle_root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "Gas used: 117,294\n", + "Tx hash: E9BC5972D6FE9142342E86B36B8A8034E17B21667446DEED24BC18EFC4E38299\n" ] } ], "source": [ "root_register_output = execute_contract(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", + " from_address=WALLET_ADDRESS,\n", " contract_address=gift_contract_address)\n", - "parse_contract_execution_json(root_register_output)" + "parse_output.parse_contract_execution_json(root_register_output)" ], "metadata": { "collapsed": false, @@ -579,17 +646,19 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'data': {'merkle_root': '725942cbb284688da040f146cb3441852460f6d8034896768a7f5c1e87f7d14a'}}\n" + "Gift contract bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8\n", + "{'data': {'merkle_root': '4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638'}}\n" ] } ], "source": [ + "print(f'Gift contract {gift_contract_address}')\n", "print(query_contract(query='''{\"merkle_root\": {}}''',\n", " contract_address=gift_contract_address))" ], @@ -611,59 +680,14 @@ } }, { - "cell_type": "code", - "execution_count": 13, - "outputs": [ - { - "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16474127780 QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp \n1 1000000 john16474127781 QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD \n2 1000000 john16474127782 QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos6 \n\n ethereum_address \\\n0 0x4878aae4c66be69d15c590dac467692337e5b0cf \n1 0x744443c73710d15eb9970ce7ebf470d36569176b \n2 0x15720b613d56c03d0a2a7f0690ff21fbcc03f9b4 \n\n ethereum_private_key \\\n0 0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4... \n1 0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616... \n2 0xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31... \n\n bostrom_address \\\n0 bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrk \n1 bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8 \n2 bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvh \n\n cosmos_address \\\n0 cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3 \n1 cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q \n2 cosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjs \n\n cosmos_seed \\\n0 success clog skill length already armed entry ... \n1 village have emotion large august merry escape... \n2 dress tobacco ignore cinnamon party isolate ca... \n\n message \\\n0 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n1 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n2 bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz... \n\n ethereum_message_signature \\\n0 0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3... \n1 0x7631668215a5b300662228dafa47f08d87c797a4ea09... \n2 0x342d548d44fd16875b7e91b2427a4aa33108f5633647... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z... \n1 {'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm... \n2 {'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0... \n1 eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej... \n2 eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU... \n\n ethereum_proof \\\n0 [\"f164f48466bb32f66eabed8fbb52de5953bb1b4e756e... \n1 [\"78900d7c06c43ae20970087421f80e49257815363f6a... \n2 [\"3e3c9fa66f3317f6bfd46130ae15b61227730b12f820... \n\n cosmos_proof \n0 [\"0ea5afdcea05b78568ba41aa3b120c669db9fc111445... \n1 [\"cf75dec9a3423593845301454490058e275aba2beb5d... \n2 [\"84daa30ce2e40d0ed2745dd96dff99e0fd3d42ada1fa... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16474127780QmZVpc2G8oV5ghDoWsVC8znfn1EjgiAvGrYS3KfNLymsrp0x4878aae4c66be69d15c590dac467692337e5b0cf0x2ca0986d548ab75ad252cbe701d7393df117468ba5e4...bostrom1aw9qyjhmm8krtggpx728uutegazlq3lwajtkrkcosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3success clog skill length already armed entry ...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x6a1a572b734e7626e85cc33fccf5db6e3c7b8ccc05f3...{'pub_key': 'AiPJ68b+MkLs9faOtLGNOOEK23SduB41Z...eyJwdWJfa2V5IjoiQWlQSjY4YitNa0xzOWZhT3RMR05PT0...[\"f164f48466bb32f66eabed8fbb52de5953bb1b4e756e...[\"0ea5afdcea05b78568ba41aa3b120c669db9fc111445...
11000000john16474127781QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD0x744443c73710d15eb9970ce7ebf470d36569176b0x0d2abf8b07d08932a44f6fe95b729a6b3651f6d07616...bostrom1z55mxwhr9j287hzt60y90mvueyrs3480uwent8cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4qvillage have emotion large august merry escape...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x7631668215a5b300662228dafa47f08d87c797a4ea09...{'pub_key': 'AkkM9ngmwB05rEDTAaAUMz8C3oR1GqKXm...eyJwdWJfa2V5IjoiQWtrTTluZ213QjA1ckVEVEFhQVVNej...[\"78900d7c06c43ae20970087421f80e49257815363f6a...[\"cf75dec9a3423593845301454490058e275aba2beb5d...
21000000john16474127782QmcCbZ86xHNaa2cgSvN5JmcFAvYxB9GdmggQUGPGxFBos60x15720b613d56c03d0a2a7f0690ff21fbcc03f9b40xbc5fce7dfbe0d75c0044109ba5fd5b9f8513b7603a31...bostrom1f3wzccz56d8c48tuldchxf57878kx88wc8jhvhcosmos1f3wzccz56d8c48tuldchxf57878kx88wm5xyjsdress tobacco ignore cinnamon party isolate ca...bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz...0x342d548d44fd16875b7e91b2427a4aa33108f5633647...{'pub_key': 'A0gTMu4ihLFsg/gDG7e5uAD5BLrmGUe6B...eyJwdWJfa2V5IjoiQTBnVE11NGloTEZzZy9nREc3ZTV1QU...[\"3e3c9fa66f3317f6bfd46130ae15b61227730b12f820...[\"84daa30ce2e40d0ed2745dd96dff99e0fd3d42ada1fa...
\n
" - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def generate_proof(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " _proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {claim_row[network + \"_address\"]} --amount {claim_row.amount}',\n", - " display_data=display_data)\n", - " return _proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", - "\n", - "claims_df.loc[:, 'ethereum_proof'] = claims_df.apply(lambda x: generate_proof(x), axis=1)\n", - "claims_df.loc[:, 'cosmos_proof'] = claims_df.apply(lambda x: generate_proof(x, network='cosmos'), axis=1)\n", - "claims_df.to_csv('claims_ethereum_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", - "claims_df" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 14, - "outputs": [ - { - "data": { - "text/plain": "'[\"82ff93c206404af75c9add59e997d3e2adb90f217c9532941a713ea6d851cacd\",\"39b2d510f6915efa477b25c813366807b4cbea928649381f068eace67c643354\",\"01e792d24b7dd735767c69605e131d51db5a770d21ff4f144f29424ef9a5b1f1\"]'" - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", "source": [ - "proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {\"0xF2749114FeaAD68854E01C8eE762C7170532FdfD\".lower()} --amount 10000000',\n", - " display_data=False)\n", - "proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')" + "### Send coins to new addresses" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } } }, @@ -672,16 +696,6037 @@ "execution_count": 15, "outputs": [ { - "data": { - "text/plain": "'0xf2749114feaad68854e01c8ee762c7170532fdfd'" - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zlsmu65zf3hfzhwp2nkugf39f8jrpa28l2cga9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x9gypmwn7r53rkkrnp9szwn56t3um8ydjdpx7q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rq03g02qswr9lqzwhv2jnaz9vg88a86pt3y02f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yqe4x3znsuqjqs0tkzcj6f69tryw49mttmnkq8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1khw2pg8ppv2twaz35nj7gsf766vx9uq36nyhgq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15kms2d4urmwadnljpjqzmwum8vwtx3yxxxuh9k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19r7aeff0r5xnatt6v07swa2pny7c0uucsgn0q5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18a2mlj8kq9ny003da5lsc275yz04ttzzjjhrmq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lgl7p6s0ndg7n5jedqjgmxh2udwtta4sh7rtgk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yewqaleqj38qpltr2ddvvh7melq0kw0gk24tz7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1js4s4wn9c4lzuu5eqkcupf43lad9j4d2tq56f7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14uz6ezvc4hzhj0wd9g68ulgsp8uxyky4p49xcu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14qc4u4hpqjqegr0fy3crw6eg88sf0ra9vvmt5z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pm5wp6ytgvnv369r90dk7rd5cstdensqeyj3qe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tsf2f9hqj2jkhy06qyxjf26nyf0nwr7tc38ap8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tlhlzkj8x0u89qxthmjx307gkpqqa8c2xdslcv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v9xr20dscvczhtq23xskzlhkkk607he5mdxvzy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ejxcyakmgtrcx5ve5c8zt4k409rlr4s69y6aek\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c6x4n952dtdanmfhpgmgqyzp0qdp4d47rkvpk0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sa3j9n54ath0xmcn5nfv03xv6slkkxff8zhpra\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kwx9vqlzpr64ha6s00m4zn938krs3et5le2qtw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom103lgm6eq8kxlujwl7pqzsma0l89cw5h504u4k0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1slqyxc9ss6s36ew9w289lg047fnmv0zegdfg0l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mvk58tufhdh7z8we73n4uf5fkafwnq4yvzg6g6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hhxzpy9ym2f9g4k00p3kqu50ze067r9k7pxufg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r878ufyqaja70en4ft9lcz3rhxadu37xv2c057\n", + "\tamount: 1boot\n", + "\treceiver: bostrom153rkd4vu656e5lv3g2mzt2rqfsha3c7hct4fye\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1se4wsnmp6lar8afdnnsxdvkrcfnkf73hpl7whk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t0784zaayvpe2qpm6yt3k2skkrtal7dlme6k4f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vqamvjh9u5a2u2ksuxtg2xzew8k4hjthzggmf7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ekh0xkhef3cv9tu6fj0chjgq7sulrdefruw6kx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jjjz67ue9nzl6mazw86n2jfsqcsljuvnr97ar7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dhjl6anmvv3vuh6zyaf86v3p3sf0deamw9ssjc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aehnyppzk06wytk02pzvkmd4cd5htv5s06wpss\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pd3acx8lttynhghm0thgshg7wxrv4yt6hjmnfe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom126se6s2ft4vwkv5slnuq4l347ms4el9pjvyyfp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1em5ap0st5u9dhagngm4np2g36g6m69xle5xtu3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fdumyl6lne5gd02ked6xp5jy4g0fmnsk22cr6s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lcenkqpdp3dmsffmd8xez7apm3we8ky7vefdfa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y80d3t59yztu3uj67ak0qwu39m8x7ka0g0rsg2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tweka9vefsp0rau8htjk45uukn324ua4rtmg7p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom188q6rk80h9dhvyqdsvwhyqe6afl4cq4gv35l5v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sh0dam8jdl7p5thdjgf29sne7jyy5rfaduqdjx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wp8ylq4klv0w7d6h5u049mnk5w3h7n6a545wng\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19v8520q39mr26m0g843870kuj8nq39l7y33eeh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vksek6w76sz7we3s7ag9ea7dtcp58gusn49gl3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nvr537t5qmg25jjdfzg26tpzqrvn548ccs7m6t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vfqa8pc4psdk0rqr6v49mch9vgann0dtwncv3t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h7eyrpqv56e2ja34r6v7ufl7akj2u8lffya7wa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qh5n7txscgh8mfdsdjv9dfrctrpn8rne37l37e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xjfpvqeckum8f5mq68k33g3fw4sa0tw9jevnek\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xun2mrzvecfxztsu6ygtwrsff34xltn5g2ckup\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lstp05wp7ey62cm6eqpled0qsskg3t883js5uq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom132fm6704p6gtmgatuf27658j5v4yn096e00srj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mg2xktvjeueqxuhnqw4wc5ttsqv8xzfnwpptwp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tvazs99r4p4uhyy2dj2q4xp54dcjsdtv0gwvdv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sl5yxfy36qt896z54nyn5nr8rkk2exz4cflhpr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zfqj8lpuj4h6cnf6fg6lnch7f8d7jal7ler4nk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tn67440wmtnxhzcchfwupy3a786v4s33p6jglr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tcuvs2ryzmpkgl5u7cqax2cx3r0fsavpkmc2z0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16t9akqwgtwfhvc90ltctg72jap4p6w3k6qx2qn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w0mpyfm9kfslquvwnlt9edu32x00j3gyv8v0kj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fmcanu5q9z2m56uj72xux9av2ntwfdm54nkhm3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ytzz8gd2x75ecsnz083n3408hlm8pfjjr4crkm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tlehwsd0paf87a0gzvhnxdf88fes92ndfc2d3d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19vzlkp7udu92ykha76nkm88rsy0r7p5krjt5yd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dxarkqm8xajtte2jd8hfxk7j8905gydwal9s7x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1krvh3dk4aa2fwhz38zr82vdsx8d5ygprk8vxwy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wdcuhcpuswzvwdn27fhvmw45m7qe7kgpsu9cgj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sym0t6t0fejcamztrzwm3dgqkzl7mqezr57ge5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10ueazd5c6qm7a8tpx8a308mx3e4pyv89j7ymk5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jxsuppsey455zpu2y2z97pa86qrl4k7gs2sfqy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a0lm43fef7vg2dxx69s7xappjlnwavtlskawj0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18cl0ty4v9rdqerneferk048e70qd28cps0wk9m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1394m5r6a42qrzg6eukaaq52t4kmwh274efvj0t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gdy07av5tueu55sayfqltddjummqf70fhfccgf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c5aecuyv9wf574kxmuc2h44sah2cf0xnjr6hx9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1js972uhs4ydpjge6x4k9d9hfzac38x8zme5qyc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17dz34w52nwn6xdeatagdd9f6uf7tj0purs8qad\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13d4085jaxuy5grr6h0hrzx9rzuuwe6ac6pdft5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r2t0qe6ut3q3mtumsx78e3z7v9anjx79dncdw3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vva7fuyddhr8rfl53993l77nt7tye7urwn7n28\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qlkvuc4g7gwswsnjgucl0kqu6u478agyke9gqn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cujrvgjhmvz9yrh7qgcm7y5dhpw4g3j2yn7dvn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n3h3zykntm7et075gghpqhkxa3nzjqekslwpc7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vv2dffvvyewu3vddr5t3f8fcd5gxdcx35h6r4t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom185p0ynw7vug845qed0muv2xrzksfdkr80hw0mn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p4v4rysht75hcparzlrckhyqv8rv9qj5cpzw3x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom170mhk7kh5xwt55pk3u6vtzfq5z9yuqj6sufama\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gqvg2akzzyf942jtks0946ugakhf34adr7yjxl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mu7swnaf4j4dqzsxhaey678w82zje04nj50fem\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lv4pj88sda6nqezv5whglefwqzpdwfa3wvj29v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ma3d47rv8ul9hu2yygpxu3qa34wrwvhd4zl43f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g824sjlynd63ckx207768cmn7nv5dv7qxv89nx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1492knevw5pe6429vjz32w6e4zl693a7e8vr0v3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wwlmpyat4p2mejg4nja78ruj6l0v6eh4n88xxt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10awphjarm4j7du2cdm7zrhyw07hpc53x03lmwj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom107fe0djy7j9ty557c3cvw69d8x7zej8gq706qd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y3ymxalgm6rueg5kh76k4f46ank69zu9htlyv0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17sv5nk50l7y73dpx2546ulgx4wlk42tz498lh2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d6n3qjx5zuu0960sxfz8w4gfg76cspuzzdfttx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tsa9s0xdmz2d9r0w4wgg6r04qcmlmqmxcceyt8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17x95r6vzgw6dkva8stcqcdpjjvpugma64h5and\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q3cngvp0sz9g9gvk5kw4h2g397s65r38sm0xft\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15m0925vue58qvqwq2tkxkymmlq83ccp83k9r86\n", + "\tamount: 1boot\n", + "\treceiver: bostrom184xhu6v2293490x52v6sqw8n3a7y0vkhm7q3qz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15yxdc6c3fdgsqa2dytqmkr6d08jyceasd2h8pj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x20j0yt53ztf2pyp0wgc6evh279zandnqmluu7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13yfmxyc3kaklmtvd5h757gne0xgrp7xw3d4vt6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pje9sayev749mskveyc3mwm555uk59zu83kwgq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom108parfftwtmqzuu4udvgggr6jrexy97dgrvv42\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12k8usz27j2rz3yd9d4zpw9r42jygucmpfvsps5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v9rw3t2c5qh5plt03ddfhqxxjaaf9khwqzrg32\n", + "\tamount: 1boot\n", + "\treceiver: bostrom174ywlwkr0g2dkx7ntsczm8cy2ucjx6euxszszf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aymg26a33wc0ugt9cgrpytlyxwxrz5wm0ad0cl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom134u2w9famknhc969f7zp9wlp7zs5d34c8ufece\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sqp2c72knm0wgjtz6r3edadvs7emewzl57zqnc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u2mwkjslftrw6kqvkpn39zd4s67shzj9jx8gw6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12dyx59tjfacu6dgv52n9ufy48htye737xpqlxa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lqpprsd4q46e2c05jlv9r3uvl29tnw8ntdx2fz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mkfs5ne9pl37g9r6r56qx0ze0x2wkfu66pszd9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lpxr4fy4hjmfkeqlq2mgfa6tv24kkd0savqy0e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w5q5jyusg7msv8j74ajm48e67nmm42nmpuuc20\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16dhc4ay0wl99ynzruvhnyvqmed6jsrzcnhvwc7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w9cu2h2s38q2hehr09ulxcsg042vy8cw55qk6p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rd0lxxstuc6q54qhtn6dgdyqfjrrmz2qq3jhx8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tjah0yxy0hz7ln6ckfktmewur5kpwuse6wa6cp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a5qxpkycl306jnf3dd0xnt2szlf66s286mdqcf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a0jgs4ujtt9v6ak2vl4ns7ezy7etev2jh0swyd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q2q45yv8829xa2mm377spmawn4lvau9rhev658\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ew32852a2ndyl5qscaqv28556u8m59ha6svgz5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uqzf4x63drkmv4vsyuk0ghcxlmn3ju7fgmrs2x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j565parn3n9atp5m0rp00kc86k3zuryndpekge\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g882nurun76dphzvmgfpa45c8u2qfhapqsg8c9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jt56aud8xu959f0vp6q6sk4rzuvwlvrx29mn8p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k97pykvyg9m35ud2ej6aszxqzvka3t4fuacuuc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1584sjvepxayfpwe0zrytua6d5f4tgwfunhfdk6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1svgf7ktp2u9ssn9qp3qtr8rtkmd3ukjvjk6af0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1quwhw9ltgy2t6wrep6gfx4xv8fp6ymcj8g59n2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hxl9z70ncvjuvaa4e2afgpv58c5x4qfcnf7rtt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ghy9u0unj7emt6xqtvy59e6xew2lgt43pglrnl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mv0ay6ynzzgfuzgu77jvdc2fywwtg9n7p8stdd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10n52qexzxwxhmy5ehp2n8pd0l2fzsz6le9rv9z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lmkqt5mm5jwawqu3e0jw4cj27jkvp4mny5rplk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eavqyjvy89y6qcsp05te8fw87qsf877xd8y55g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lutjmvnm7ra6z4h7xcq3mrfexsjy8dymaznhx4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom185vk82quust6p8ulafmz9yupemlsem346asdat\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18qtgz0de9q72uz2m7n9r8xc9anc9zk4vzgdh5v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12lkwph2w79ls9tefjjj27l7w70hvvecp8pzcra\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fxz2esr50d4e9ctnn5mh7px8lnt9vt7exhudt7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gga3uqn2jks5wrvl6z4ucc4hjeuecgsfresg4k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fnxcx00vuuc5xdwm2fzrm7n4xmuvalvah79wsu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gtncjd9cs4cgpjwq7g7lm2kw9l3eqn4yhu7xq4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pz8gn0dz62t63s8tex3t7n5cyexsvgqf5vm3nj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom136l24v2zdpj6wmy5zqctutp78n39f8lgvumhg4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fsm7qwvpvw4hcl8zmqda2d62mewd6spyv8grmn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dpv69xe9mxeflalm576uantdkpnqhvngut9770\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xrcjgv3ujep9tp0md5nq0u5899c9cugxu8skew\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rqw0ls2r3hxxgf4yx8sks8ly8g7r3s6975zlcr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kkwk6vuwzpznh049p2z0dkatwzrrnr9flym8la\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13ewmrehjs8r2n7cvdc7vqd5jgyuz6j06pyyvzd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w67ns9p2qumpjs70p7wmyvwxqzzmgztt6f9w9r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gclw8ua87tuja65rwkmk8nh5j75kpc4x6nz828\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10cqukq7f9w3yxd4cj2r7cndujqd595ayxlvrjw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xm7txmvp4qh57sgtv5fpvqdxupfl3a0hcrlfph\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k0cvy4pd9tf6q44pvmdkt6edpntgetl5mfsft4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17rrlhac054zrzzpczmfcmrxfc9d85ak6yze9rd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d5mlccnw4hs0w880yey9lda6926axfe46tlk4v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fwsckpml8e4369p00ha38jjel0e3jaz2v3nh0t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17xmpl8h0625twaplrgvvpx6tne3pu35jrj0ahy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qvgguzy047hm3kjm5xe72y896ngk6nnp5geggt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15s8ds65edq4x4gyetdjs44rhkzwa0dhpeacd09\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h8gj9ekjreyk694vysseawncxsa8paucu72yt5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom108ljh53y3gp9xvh95zlsxh9xszumsmdy0d70x8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jrwsmefykjcw5cgqxckwtaejsukfdfue0rn58d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g90jgg2dd5xl04raq5kpch78hesxk3q4psa2sl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17nlmcaz9dpzaqtmnkhl6cf8sdw5sycppz8ap44\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j4uzuqq0vh3cnljns96p5w5cs42v86yxv8jsqk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x3h550wrfckwkxadl54hzj8h3ds8c3dfad08fj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rgdv32r2xneamu9m7yeh3asf74dlfkwg3xu2zq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ze334rpdfp8wkw6zvanh68f7ppump5lx3mwqan\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1takkg7qg8vpugqat0ym38xhgxmcttt9a59j545\n", + "\tamount: 1boot\n", + "\treceiver: bostrom134h5wa84vuvpz7awpa9wmjqemjzd2xusu3hlp3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qq7nhklvddqm7xtulw57aqejkqcrt6ypucxmta\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fdgxymcyqyzhx6rhdqyazl2rtdlk0p6x9tj3n7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19ec4g2gdmvawu76lxuzp3394aqk0w8kn9mww0k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wnez4n2nd0q4cc5nf5xr6zgtj0svs0rv7v6tv5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1apya9stgvhuuy42uu5d0es7p8ds8fwfs0ws4wp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f38q7wpnrfp3k4r204vrg7c2wp29au9eaj6z7g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qpr7xrrlcyxr8v3l3fr770gvn9aka4fra009dj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom100urkx0z8wz69suxkje03zkfdxl3h8algj3aa6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lpfngd0ja00c9nv0zn78zcz5syqs9hctyt4w2w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tpl0d6328zf2nfv7ptdcg2wqm3r5d9ps9ljz89\n", + "\tamount: 1boot\n", + "\treceiver: bostrom134p6h04ekdcfnn6txma3ytkp5hgqvz5wamkp75\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lur9ml6wze46xmpq2tylxrd29r42297he3wqpl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yste86hpc23rw9jhnluzv6zppsryvfhku3yh6q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d3w6qe7m4v8hrqdcgs2vf7r3jzmngazt0dy82g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v2xsd3mrrsx7jz2ktcfzkm9f7lppgf9l4krnq8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sgucgk84gc4q07gfl2m2ajrx0d3arq48xa3s6v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1640mwez3a96wqhrds0urad4j3t56fttffrg93m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom139vr8j3q2mxa98ljvguu32hk379j8409w05ry2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mx2rj8vj9cz3dwutl866e7gsynhnthzdywr3h7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fdypy5kxf4waa5xqpxtghzedhmj9vkah4xhpxl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uuv4etxm9xtjapdc3s2pgg4fhsu6nzjdyvmydl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18tck3y7qjrlx8rveptk03vj3tavt2edgn92fu3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r6pq8zn9au2tzzld7tzeueaheqlav8jp24zk00\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aysks96klvjx8sjhgg095ygl2daserf2u3g98r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h9c0dfvsx6vcs2a32apt886pdku3q78cw7wje6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18f8rldxw20dhv32k5355nfhd60xsx9xcvfl7hx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ytjx4mapa8uffwwshqlyr4g3qe83z2zmz2wt94\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xhm3x3rassdzk0cm6f5m793pzs6d3876r3947s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qp22u988azgyvygaksmznk2c4xe5hgfkxtaeh8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ga9gjwthqp3l6ngmgujz6xt85f7mj2hzll789m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16eu9km9g2ukn3kng3t05gyw77m0s388t3ldmw5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1trajx0zz607n6ynvzdf47l3t63t7wt02kknljm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h3em7ptasyuha4qx4nemmrunztd2ck4l8spjlk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1htdwg0u9f64348n62epugv7fqfyusqwnj6q5wn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l3ruv6lvgy7jjtwdvprmfdagqjtgqtwkkdlnzw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vzmqrfsj3gutpgsecc64xjlxhz0j5rhdck2e88\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qydzgts5a45ldyvn0673v9qvsll33vn6hnddsj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rm374xl90r0dvcvffvvza7dlk24h5fl4k032d5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19zh05hwequkj52gru8t86apkpdgkxpl79utawt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jvkduc9yly8uc9vpdhelalsh7ywh8p3yngnp0t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19js0y4h5wr4z37fyn9lk745ugs0eurrdxq7v2m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14jvu7j7p55cgwq0h66g6ezercfh635mpql79t4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x8j4x8hk52rxyx8plvvd3ckpknft2g3p0al7n3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rcluzdwgpv0mj9l2047jhfcrn25ym388pt75l5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d0c8r5x4ufdxncjp409dt6s6zedt9fpvf0phhg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k6jpv340pxju49et0kt8yx9x32sywx7v4n27qy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15ed9cevn2dejsehpjax6xd5fz2qnjy9l0msz3v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p3jj8tfx42pvh35gxd2z586004x6mz4glsx7c5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1trtghaanrlllzf360f4lz4a6yaj7p87c5c0g7k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qk5wfu4j3sgcn4k559gl6xk5jakmwhmum7rqjn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rn746ppd8wetnpuydhfr2m7a7vsncfsxm7mrqw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ukssxlx7uphpgadjst7d4u4nt833n85sujfrwz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wzee6yu5l832qsxqmfkelwddq7555alf2ye0sd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nd5f3g5au3sxv9vesgvntjcwl9rhhdhrrg4smm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kds6g6jnun386j4u2fxlykq6q9lu430kfs8w8t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pctzjgpqsmky4tda74huul22u66kjme3wjg9v7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ufpyj8d8enjvcxlwsxdfmfaqgflwdxcy0p7wjw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k8nn5ffskduazuy3d3jw4vkseqdc846q3r0tsp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w65sjppjel3k43fpdftgk06ly9kd566ygd2ksm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14plh27mz7fwj2rkg3h5jy924rv67mcnanvk9xk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1474ks28fvyea4qx9v87r9tevvqj50ye093nezf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nqkg99cakqsh7xsutsldnpx8ktdr894z2up2d6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k0c4u3d8qtmzgrlt98tkqlddlsfje756yf2qgw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g0324f6a9yfd3h92pa9f8870gwkeekquknr0fj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wuq47y984j6kyupflxvx3xkdrcwqr70chgk0dq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rrwwhee3zyus60e0mr5r76ap4yaknaskk93upc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e46hy0mxmvd7pt5m7rekkka33gz7lsa7t509yt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vdw7577265sjhc9tf76dexg0vjqe2hwqwmfx77\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r3xjazpfgz7dfsghlyxlqxnx6lzkvtz49ude6l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uyj5y856xq5f5sekcmm9xdrj30f2j6cvrkp7e8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1negurdr4eukfukmf4p26uyw62uly2dyx5d9jcd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10v3zm6sqeqtmm4w9cpc0ms9rk2r4gfghz6ydx5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1crjanjdlfwunuf758j2qnp0c2ylm9jenm24xq0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u8epgelfklzvzhyv9umps0gna2k68lsmh7zf22\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p9l0e9unkextwflrm5l996gvmvs8wlph9xryp6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15dvge7l2lcyhdxtprncmwm2874fyd2739pfgxe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18xn0gq59p5dnjh73rjay2usvfgsdna6724tqhn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xsn7uufhgks3eragre8qx9lyk9gtw8t6k9mauy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kjugtqyv5myp6p6sm0nvxc5cta0y78084t5k76\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nhrspqdl8u80c8c0tdccxl57v4ch3fyxez92z6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m8aywf5kfydnwdc2w0wk8xygt27xmstgucfmnj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mf7zpdnu72tpm5q2z4em4qmrclwpq2w8r6c967\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1axk4pn349fyvumukyeuue7mp57846x5n85jzn2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cr9ssxvtt0p6tlumf69qnp3p8er2yu2tfdav9n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xy5dy28f9hxlg2m0es0j5ceatnwgfac9edfzwq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vjc34h3hld2l7tahyveavwhu34gtnrxjwplknk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xnshuer3n282hlxams553ggeh3rtggqlwm6jlh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1med4scf5g3g58cefa0lg4elc7ynwspwjcnpymw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kazrlwxh6np5jl7zl7hp6900f50cw72l8vdjea\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sxvl6rvgr4elvtntttd69vt2c849yx90tzu5aq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fkg3p6gl004xknqeqfx97tyxszzvd442z4n7ye\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wusfzl84jdzwc5l6y9e20msvlxu08xwejduaxx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lc09nrxk7jggv7wh0nlpth2k09s7z0q0vg6j43\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ax4tdnfx565caewe89q7y4pmjhsgw22rv2tk3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nxuenpkulvl5dej5fvew6wk97e3c88yplesa44\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zdzwgrcrun7qmllatq4sdk56zkkxn7wzyy9hzw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vyjsskq82x439pdwklcyr3kuh72c5xeds6h7ec\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18vzzn9dmaxfhxkrlqmnht53k8d38st6yxgyyar\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k8a0lpkjhrc84hqfz0tsljezp5zu6sc72cmwye\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vdeln5gzfum6v444mghx52f32dlr50x4jvs40t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pg3rd9jqhfp3c5fdet467wmysukc9npqrpdf2u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uudq355065f0esp3x99mffal337674ryna547c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13ekked354xjm9e3k6g24vxmvv9g6f3sy7eqs4w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mfj0qz0fpvgssw2lsh93e8yl96k0mad4qmr92l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12tx5kleezsl390y74a0czsvndku48dvz56nkcy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f2qs2stcutv7mjrsekgu97ld0mv3yl46z79zf8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pjgpvk35snhf35gmzktzehss8hzj52sk7v8quu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u0mzndr8pcp0ldcyx52pchtc5cheettd40en8k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wdcytgtdzayqz90y7qycmvpms3xu7sntg32n8m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t8xtwsnx87rmcvwvf8fw2jmjm6udaz05r5uvr5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1esupkf4gkd387vk47cwhszhqccrkulvl7x5smn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hv5zpmadursxxgr46er893r08h3u74h8ssdqcm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1red7se690dsyqqttqgu6fukmuedf5ma9xazjfs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19nmwgmpl35k6yunq9d6yf2sfd2522fx3rtldq9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ps2tua3k78kpq29s85np2utqjwpfnfr769k4fj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom132kzv0drasazwmywmjdgwlkxnuaa65f035d828\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lj9c4895pyczdm5ewe824qr73sy706ufvr3u8j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1huj8syflgp4wgrxe2kek99l54mmpjglf3qazhd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pgx4j7vgfesw5yuczdhm408y5as5kzpzt5pqh4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n06qj8xmrd0gjzq5qusy626skmvjvuccurm3pn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13x45389rvzzck2qnlrfsacn3w07d5rxwtln5vk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hhlezq55q0k9jnd8y5mkeqd48p9xf79xkm4sew\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1adnquteqdxv0n2hyu8hqmm54sa2m7kfqsjvfwn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c4nvwse3rpmuas9yqtwaen7cdpqq0qypc4vg0w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1elp7gt4jcy3nyc77gtkn3s5dl6tv8gsf8j4hsy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zzzesx85ney96p2r4a8yl28hgfagtnlad7x0xu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ef33gccdfefzt4qu549gp2lx62z7tzqw2rk7zh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14qufmlqatpag6crnz804sm66zg5asr5n5rquak\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12a5cwxpum4rc8amywdd5799fl7487n6hhnytt6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom133z95cvfe6zm95drzcu76cesazpz8cpnnacme5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ejekgvajj4kah3l2qxeuqsc4ge0g9s9gpspcn7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dpc2g89pw0xynnevfnfu3yv2xk74tyv2h0gtjg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16ut38h04e7wehjh72jck69skd2tzqnt2vf9nf5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yfefhc6xgyc8dja754xw7k6qquctu9eymzucqd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ad807pcpjplvssem34m3w333gxkfszkypaywqc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rp2tc3g43kjmj5k5rmupa5rx33gzpd7jvm54sq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dh70nt3he37g6a6ppfru3x3vtlaxzzumzyqfgh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vkjpyak5vuxqmh2mkklw0z9cyxdccn8h0g26eu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l8s9qvrqsvux42wujhpunuxpgc2rvyueyqqh3f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l73r60rqh608teuh7ntlm4j8lv5ddt4pujkk5h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sgtst4rd8zxlrjzt9ep37a9894fy95v9cjcmft\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k3j25up26wjvpuvtdyagp8u82lx4zv6r088ddx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v2jh6vpjfqnnhtmdr2gh6ggmjgj8qeq0z5k73d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zrch7j3jzyzfc4krgk0rt2ysx7mmv9a3ngrf4d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ltsge6cj96fz3hq3fthmkkyusrtgraqzgxknn0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lx6nnj049qk3fvappr7602cn46hrhcvrkamxay\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mvm0upuuhys405tuj3yk4emwpd3jp6v66t2ptm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t27snpyh9lhwkd7v5qgsyv75dnetm9uyde0y67\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gpxr2cxsuacvmyj3jdk465gcnt9zrt45med59t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1863jyasajs90z58jx3xwyh27t24s7w9zz8wpud\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m3h9f57wrh7rtfjxvmnj4dj6p2jscph48l0jjq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ycj9x2lw8dhf7cz8rchhkhnellq2a9ntypjhhu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rcxa3anuy6mntenpdh3kmzgt2ud66axuxv87dp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13adtcl0647z34gqaepj0xhfh32vav3fh0l4cvh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19pjdhdyd5qhm2xdp4z8pm3sqmqfxv3x8cf398u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14yesn3x6ws8z8wg8up70fn5ehluxsuv7prmdvp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom109m5s2eahdtc003rs7ythl39058kvf6c3wlqac\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18shkaw6upfar3hy50tjdgn8xcs4qmhwryd8cm0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zeq3ednsc380cgaty0cady475fxxamunqjr0qx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ws8zm5hw9tdg29lekr2wp6aewp5328qqgyuar0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z42hr083fwqzp7pqvu0th764m2xh7gjthlkpn5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gt3rrquajjlfztmmlnvhc0jrrlf6ftuttszjpg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lwty2eevdwn0des49xj30y36m0nl4pmxe8e2z7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10qkcxexsrvdcwky786gmz47yyl0gnp752qcjgl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15kl3huqd3pr3cpnjfaqq5ez6fgettngymw9y7h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19n8mwxawxh8kusfhyhqd83h3q6x79rdhp4dnnu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cn48cexxfd2sw9pe4nsxa97cg45y6z4zvm5tnd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lghgf783gv4zpm6qsh4d7wg5jx9c43k0vgvuzq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e0wcr4rrt747d0f9r0wulv93u7tz6hgpxqg3s9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gzl96wh9h7mf9cl3uk64sg28etp7xe3xllrkc8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1canzzjrahyhfaeexgx9rxu4xlf3sufz52cpkv3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lzn27zl5tpurehdxl4kdzhce8gjgf7h688c562\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15xnvrjlfj3kdjy2l6v9g7sqyxjd46vwhrvujsu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n2n9dtemhfc4034fcjwdjsu3u407la9mzsv05f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10zsr4kyzt9x9rhvv4dhk7mrw0pp7gryckkggt4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15w9fg5gjg22hjwp9k0jezsx4fs90xjfgynt67c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ltnkp70zar32cvucs95r7azddtzsdm3jd9m4kj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cmyzcmgqsyqdxn22d4lamgv7xm3nnprzfhsf0t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sl9tnk2tlvswd2cwcz7qcmks0m5ahxla3gs7t6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mk2e5zkzppkzttpdq9vz4r620gxx6lre732c40\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ryga6u8vfqc82609geavywlcafak9mmfdq59xt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12y4qk7v8xppmjygyqdqk9vlqra82wk3pdqzz6a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rsll65gumqax28nx23g9utglfwv0mkmc9fjmns\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l90ux9f2nh6l7j0qcs9cr7d78pnka28h8489rq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13g2khvhft04ma5gr26vm7vjvjqvyvhec2rvhg2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pvhcayvs8pye5ke86tvmw2yd4s5sftrcvp93j3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12r7ef469emrly5xm2e4qm8agmc4fjzry354265\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1272zwr2gw5phz5md73v24mvl0ars5mppskg95d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17a8j97ppqytuhctf4dkh4mszy2hr5fsy4uwlzp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16ff8vpqjptj3dcv5zx8zalxp4cskvskc2tywph\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z8k7y0dmasuppvg842zmy3qjz2cpvt9ersh0zt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qf3677tgxadzz59u3g5v2easav83kx5a06sshh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kvqcf62npl8psayn0zj8u5384g84qpfeqcds9x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yxp0d5uqky056kt9jewx9wsfhqzzjkww2m5seg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10j0ku495ccz5jqtje473etfxp2kzgx5w69jdsd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lf6jgjee9gc2szmv3eccvtmhus0aczwxu68tr5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yxrkavqllgpauke296q06tdxfgzk0t2pkq3n2m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d2vk45yqt5lwha0xy6vfu4cf7vcyn03nage6ww\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mkd9wd4edvye75kn6mxrmfm40pw835epy3ld94\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1el6lhqvs9peghr28uncqppmre0zx80q43u4ztr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nk5u4n685wdsut5hsges6whr00fv9jxp6lgvm5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1djunzwycl3ctlqy3x43qket07dqnf20e8pg57t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tg4e8uk630mjwu7wa6fs0zhnz5ds9w6v5zhtpr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n5av3ye4jmv3nzvm5kzykuppny3q5ja9pl9wpc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19fe2zw8svaj28udaarvk5n4pam6a3ym7232fct\n", + "\tamount: 1boot\n", + "\treceiver: bostrom148yjsyevtaxaqey3gq6e7uj8qa36zad2y52cq7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15nav2cp0wp2rx5xrrum8qcpdjdvg2g8vq9lsda\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pnap9pn2tnrxrjsle5p4446jvq05yg6cx5lyqe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17uvtxffr65lwzvq3hfaczx8k5vtp0gh7m94rdw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom156jljd0l0lzdmk4ctxh03hk73j2zfeqmftg2c8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p2hlp4s5wd037k2ydy56rkzu35je5y4vyf3p0u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w9u25qtrrk9sdpwlw79t4ezqfxgjcrms0l7dua\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vgexpyksz0lrfs80mu80rnn2axua024w6ermxv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18xgwweleqtd74esw2k8a7fv4ut5uekswdqeezm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1knkp24dhxpmtza4gfaugh5hzx7wqdwpcqu3kpx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uym0vjr8u3ulq678u4z6y5rmxpdda99x24a4g0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yvtud2gd3zycgfdamwcj806rsd2ruxsleru08w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rm3zmg0d9nsqtgpgn3wutp0cthyxjvmr3ld8rz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jvkkuwf3mqm349gmm7pstted7z38v5tg34yflm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eecc7029t5mg8an8hu4rjcmjmgw6fraqupw8rp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lnssksz8wu9snewwaqhn30cdqyjw2cgmajhzy8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z7zsg4l3t70u0l0q27xmj3k9kjm4q70gdantkz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kk2mgq4anvha64zj2v70kfrlkfyg2kka4eer9r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qyvjcl66jdeqjjglnsuhdlnh2et54597qds923\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yuxd9jhxj2q4qwku5rs9dmc3s7sdcaw9cucrlt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aql2jdv3z8q704l2t6wtaza094004m2latxjsu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18lctkqflqze9se4k9cyqe04jmhhc2mqwarh5sl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gv26y3ershdhk80jft742fryxgfxkvw2u7cqkm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gnyjl8p4kju72dzc9e3r3x0z634krxjzclvla8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e0punakkucg6fs3zfzt7kxa3l9ws2vnmsk7k3g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom152rkzjxxltryazsc7tlc7pkeqshguwhlcjvccz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10snmcmq5dcjwqt5tx9898e7yw9jqm4q257tewg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom130289ucmemaae94038mvnwkw2u0g8agj4twv0y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ryeer40h5kqamrppaelkl32wd7wqvxcnyzzlxs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t7nlfpu3ul0xu9l0zd2yhwln40jk7q5zhkqu23\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rv0ndmcktfpredfzx5sdnpkaw4kv3jf2r8kyy9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wc6fuczajc944fzff5smxmxarscluxv4sjjdre\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hy8923lntzzlffzqxwljc98xht2hjx5k9608ag\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xwc4pcrye5kfawl5h8x7c8srz7znyhctqapgnr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1whv7hwdvg04mrcwwef6zqvgj55d3hrwmqqvdll\n", + "\tamount: 1boot\n", + "\treceiver: bostrom196arr37vdpkegs36sst0wapeu09x2jrwsqf6nl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rndq2483s5xj8gucrc9wxpu553xcsdgqrartc7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rvl83armem27ldzyqtr0975v26xtvf6h79zxqu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k5sv92m2p4e25gth774v6tzd5z9z732samlp9q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qyt0p8z3u9ax5mv6ugpka0fqhat62z2gk2kq7z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c772gprpha0c0mn3kjnakm5s0t5xz0ql3lnkyw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jtqh20wypfl20axxs8fmm7wfp3tsfqr443qhgm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wrc86l5mwruxpn3jd0axp4aa2g67794vtvckyn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10878qvjnmx8877k79xmwnnwehznj5gccxkw4nu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xkpvlq2epd5myd0jjgghqaz65kdjngpdjmtgms\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eegfsvusxll6qzkmpq432ql6l7a4kmaxys4md3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ymja7x5ma6c5kzylq7mwnlrq4k90nqueau85qf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rmaxxl8f9cz2v3855gxrgv7vcjha6rgwft3q0d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1exergrwjnsc59pjylq5nq5l8gxva54530v057f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gdyvn0r7h2g87dr47uywjqr2ls5ac0yhpp7u84\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1av965mr6s99cmjh64dxaq6zjjklu5qzg00e8pc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1slx2cuzkrndjkryv5hmjer37zedkkl4ly54p6y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qw0nxhken97l2gcnzufachp075722k8mlvqffm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d957e45r6787r7gl94hj88wzdszfcpz802hnyf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wrz9dv5vmt85kr6gqts4zpnxpmmsrd3ggg7q00\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1263htm4usq57gaqgyv87mucxhwer6sjk9hfmus\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x9gnuqfs5fwz3wjssphv5vx3djnhlvvxmvym5m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16cn6v5q0zxkw37tqv0nug3sxdl2t3ejyy6x53v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15hu4ss4dkwcy2yvw7z08la0s0j2gl7u0d2j459\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pxxqjtc9vmlepja5v4l32649qnnsnmtg4pzxgf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n8tluw3cthfdued39qar32ut8m9rcp2fvcrtnr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ra8yxpyw4acp0tvmz090z6agmgtk5y5mp5630f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zz9et7c7n0r5ga72972zvnnu2lj44m3ss9a69j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13klcwndzccfplnww4shw6jwftmautl00wh9jae\n", + "\tamount: 1boot\n", + "\treceiver: bostrom183yhqdvqmvzmguvzqghvj8lxf2aajyta2wppr3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17tsf38fy353ak3lz5ta2faewswefru296t784v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d2nxh2sv3p5sy2097shzrdwvjwsultmax49zah\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xsh0z6f2qcjm8s79e7nhvpman6enacgw4uqrqh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13zvvt0zurjx9e0cw4gjwhhhx96zqg37m4k4nrv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pjpvc4nfjmwkfd7t05f408hr8y98nt4k6zjfag\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fpumhtym2yy0f8guted6hvxuqxslyuleyu4vyf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19ngkcyj60yx942zgsnm3ezywpk4jgak698hpet\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yjygzl72eengtatw5tlglpgxw6jnmdkzsnle4j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14m00xy5zg864fjy9w88demrd3y5lvdnefpyvhg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w4drvlekq4g65nwlf3v6w2p4umpxkvrk34y4g2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13yv7g6nvy8lpjetpwtt8rtqmhzwn9t7wc7aczw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d36gkttdrlwse06fzqye46udx4s05e2up7a38a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eat3lmkfd30am2zwzsanacuy80dluqjma02jy9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rvjtyz7xmrjk5csltdg7fwx5ew9pyxg6rtnxud\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ee2drzj2x0ukhxfvxexd0pkv4vel5j48f7z04a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17tx89xcyqhvkvael3hssvy8w7plwsdn8vpw40g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nyy9grysw7zr37jcqqvq59mand2ufe29de4rxk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l4cxtgxrahlxrnau5npu4yhnfyrnmdg5jrxjta\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ascat57j3z4utyy3jjr6d7nkm9kz4wq53e2s3a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13c80ka49qsg0lsm7zsv6uq3mt9ncaj6cznmcee\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pmtwzzsemwsr5nnwgegxa7452r9w9mmz9l5vxx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pfvph3helrq9nkhmt8jr7n76yw7ym3v7g8rw5r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t6fejvlnfxezqu3k7e5wtls63760fcrr4l8hlm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wmfnfa3dckue8rzectj3mwvn4tu8f4ksy0uz49\n", + "\tamount: 1boot\n", + "\treceiver: bostrom153shdlxkckq4rqzzvy7dv98sdkuvvjj0uk8xer\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qqlgcpp8vtrmwf2h26r6vwladsqlyp0e3z355q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1png54rm48dslkqcpshlt5hlyk6ltg4jhynasuq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j7jtuvzvmr4ny7ptepk7kfzxyarph5wmgdsrtl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jdelca68u68nzh2vvcmz0d4wgrlxt6j800uf6h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kcfxzezjswl59lrvuh8ue5erp0lc8z6g4hzuw9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xjme8f7j48lqe92kf7zr4n5lety0nysy22v86t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17pz3k0j896c3uk4u2f0s38m52atl80fxw76lh4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yzkts87l5pavkpgu8pufaexkqsflnll427ruvq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r9vljtq3elx4rcuy7j2t7u2k3y80gnrmty6vw9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h7q4ga3pvkzwjq4t33wnsel6ufq5490ymkpcqf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y9w8asyqfrdh2a6444q2setcyf5rjupj7fgfqm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14rrrzyfapqxcjkkde43v8euecalwcsqgjr2wj8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q5ccszy2ah3kr4duagz3fcexpxhreuanwf7y0x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p48v93pt6x3v55q8tmc6m0zz89x4mv8zrkw0ke\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ncddg6ug3z9nurnvxs68yes7jpkkdf64r0gxw9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cqrr48fuh7a0lvfkvpt64ew8qtyf6wdp3p3sa4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tp2r22hgtjaddj58ru6nqq3aa2jdv9ulglw7ps\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ffyxtwy5auxheqa4zsf355ccpk9mxgt5384lrx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gvtm8jmja2p986qc3zdpl283n8rxz5ajx308ry\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17f6j0cpkpsu4kq4u3309xayngjc5jwpjw6cqfg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17vwh3hamtymwk7wfzfah425sjhwgndy9x24z5c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xs6j4c2ty4ewdxs6wmuw38z74hgxnq6xq5s2gn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13fkzzn589ylsml8sggefzn6sfhxtspxgg8jxaa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rs5ma0lf343n0d2wdpt42v3wqnenrd6cdxkhxf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x4dpwdk82pzcg5n6phav47slfcymv4a5f5vyll\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17zv64shm4lwdlqnmx53yjv90ywv8eutvrahvld\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17flwgp3d9apaaf7q8tn4pylv73v5glv5clkz0v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12gn059recljdtxl4rlvn7873r0687qvwcd563p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1caw8zz782598l8t8gwqwk33cnsz3caqltun63t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p4q9avu6gnm7vdpjhe24zglufxg8enenmsy4jv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom145836y7hja9cncgs46spy6xzefvl87h6gh0tmz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yel27hz29t99fcc9zt20a6he6qfx74hrap68x6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zwzuwp2pd737jk4deptsfv6l04r02av43ymgem\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dvnskpwrurfl7zhnhv6z8dp4pwv7yjwqrr9r9x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom124ghrls84red03cxkqddw0r8r9gdwaml22ee8j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vy6re6hce6jm393j3srg67dvefzeaxck94frr8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1he4q77h7xmrp06uusdy8ml3tyh9s4v896t7c7q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1atmwph4vdk35npt4kagup64ntppe4puwcus2kh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mhc863res2rp9wxmedffr8gqyqqj08v0l67nvm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x598fcfkucz8wwak6yg7mxvmpan4rjp7h7ewyq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qx63pxw5qzc0t92rtakr6ljyg9ge9vz4cnrsgz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19xlqckcfejgqpvrhtmjgctt08s0p3l7xv3aaww\n", + "\tamount: 1boot\n", + "\treceiver: bostrom168ls65gxjl29pwuyyx3gced4njymv3vdfre5nn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rkfqct4ter3sf2yxxx5suhkgzy4nqwgkuhezx8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g7n376gyl2a0jlmlmjsla9ntq0a94rg075m25h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ulthpdsy8urseckn307vtgrln6l6p5tysmu37t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yzwzqjs9g4rwv3qguf2ml8gsj5x9qgywqxdkx6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jgetn5srmpjpj5q9n8gru3unhn48w2sv98qlka\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18jmx20hum6xj08crz9pnmuh83lyf60he03chha\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13y9ld8qkhvwas0cyn3p8pf5uutl4dr99lxafun\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15ksh3m2zznc9xqvfnsctzkh6sxx7lp4jst9sfw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ldwhwkchu3detzr0c8krz3a5x67wgmh5hpldh0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aj4n8fzd3t6zeev3gk9fw02sth0jslsqkly7dl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h58ae2yurf7ud5ks3p9v27qc823nm3agj3d7dh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yzhymlt448me2qnacd6069gjay9hudflkexulu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rv6nc70ute7l7ae6xrrfw3cfudxhkkclkjlzgm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n7px7k4aeyv72kymw4h2r9hnet5f6rvv96w50p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gg5p9r6gqyxx2cfaalytmt34ke8cs95k97u60y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1suh8jh3scj9q57ryelutzm2mk4x2ph2uarcej7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15u3tsczecjfyk8c9xwalx976h3anvw6url4d0a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ph7zufdg9j69ys3sjv6y6wt57aaktn84pstdfg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k3dgc96l9frv60wc228exfph0647zpdrq8pnut\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fp4frdj8ghsxddx3l9v3vpfgut7ja8f67s4dmt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mfmzyy8a6kp2yp0d7h9xeq4swlmp599c8yw8gf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nwm3m9ralaudmtsum6utrfj8gz8z22ews9mme4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u5zqu60sc66vwzv96f5v7cexz93ejj87wztl6r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18u53mr0vp0pp674jdl3x6exdv3knn2pt20mnsu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1586nk9mpr5nzvnkehra8jsutvpen8pqau7f7re\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10wundhk9hrq46lj6dky3fkghnnr6jn4efkxjyx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hvzyvpfjdtwwzpqhu7mskct2utxqd4t7r7dqu8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ghtn8pu4w6zp9upmj6p5c4epg2442ltgrtxysg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rtfpahnnv0n7q5ke46vsr9dkrrrymvmcqutty6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19lek9havtt8cgmmjfxh2kqmexy2tvul3msdtag\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wvh7ay5xxtc4a0k9t5rk5z5svk0kdsh0zcrs8p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a9ynmx23rk7wxvya2r5flrm7x3ygdmlecfjg4k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19yd4vl3fyre0zuyxqe0s73ljs6j07l2f6ytw55\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d7dlcx0rk8ta8u7dqh5ev4unkg9wvj5wwdhrrc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jqt0537ezrmyc86avjl4pnrtmtze25xj2smjgh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c6w6k242c3vnu52sqffungud6l4prlskv039pa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jngp0enkeq6my9j5qltkz7r2gad23uthhqmxeh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kttv6q2swxqglzfle0f8dugu28evdramef7dpj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pdk7qqmrkrfq2fn2k7740fy9culyp874qlx4h6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jqz98wyv6zahnjnyq8yyvqnhsc54y8wt7ytjtm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16exzpafaghdhdxvz2hmkvv3clzu9my9jr38tv7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1afaeqe33dh6errx5mjkgjq0zxkd26j43nsze9p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aqfuzvmrr3aaacq5j85ckj3d8pcr5v6lynny5j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q0rkaf9es0m6l4a706a5kzpla8ydmjamp08eg5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1de753cdsqrfzt6xaj9l49tq0hftg777fgjau3j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ttgrdeql2c4rfp438tdhxlsn0fctrkr5yj93jp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10kqyvgu9nmavledpxz0dyl6xngffazacej435s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom106r5hg0vgl7r0qw9qwjy4xkhwmfq99tqv3g2fr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hjtx9m6574knhuagvqq693rjrm9hekypmkx3zw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z55sx5azkudsu8s0u08k6euaq3s7x7fv28l9s0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r3hmj9vf4xpq8ax7vldgxty3qv288muy8pllm3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s2arqqdg5a90gmns4t3ha43l5r2luza46g03ay\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w932zxzuzp52qvf7twffp9a0ntnve7yk97usup\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lg3uyzlx3rj7ruhc3gu7yzmdya9z5azv5pl058\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wz8v33fxdjecn2y39x6nqkjrpnz349f46rea5e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lrn69tej5nh2x4s9r9tzjhjl2l499fa8785kvy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom152pr0x9f9wfp3usguulm4n0gerekr95rpy7fq4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cvq3r8lrws9msqr5hr3rn8m43xvp2hdygf7d0n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vfqx7zxcl2s6tpa0sc9xl52hfdknhkek0zrd8u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l6udntq36grf20uygj3pxajvp7yusej5r69ylj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zk6shgm92yk8yexjeh48qclk4redknc8fy4azq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13nm6e2ln9p38jpjxrj3d8q2ch3urflwspcjezy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19ygcygl49az0ru68lhfpg345j25zrapnxj3hg2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fa4upw7gf6ul8avpfhfvv0jg5xktagrgq8gzen\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19508ffym49xtcwsz6u2ldj6xd7xdnaknayc4fu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nhmfha4xwszukn2u7c6cd87fnauqtsa09sc8cg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom129w2sh44tsw6sxk5d0h49hc3m99pzftxej9afg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16302hu2dg2xjy5xa5yjxp8j09xzztxh62xeehq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10y9jczg354mwvgcgvjxr36rzykr3vnpshhrakt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zpz8ey8v68xlfy56h27ea3r2cgy3c4gyuxpzvm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10gtkzrzgwsdgcwz85gs4jggqtq698g6mapvlrf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yzgurzc5cvpa4dxmxxtp7wu32m4rurp8hsn9aq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1csea06lmljug5v8przsujr0y069ap05a9ezfap\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1827ttnrfdnalsnpqvwlqgkvrf00xya2g9tx5de\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19m3fxeuve3rafj8cl2cr838wmauvknjrlnsg6e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x5pnz7sjm7leg2mcm0fu7w6psm9g8ng0cnf60w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uezwwg77n6pm2vfwac9qsxurrfm489u6e7qgaa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom180dtwgd4tkvgda4jdg0qsg3yre4zq992j0e3qz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18juvm0akzgj0dt2v0fnnv6u88ye4h5wm889gyf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w3z6wqu55gmtmvpaqnp53ymvjvyezaqlazwgug\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15hu8fjcef2tk4ytw0cu0va2kgmam26rh4wh8p6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18d5fvvuqz8et85lwguufwjykalnxyef5r4pm5l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13hm8uqysw7j6yq9cqlx0zea0yhmcucd0496sn7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14kpejxfh4phfhm5tq6m6ezktfa2w2ukq9trmra\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16ax8kxhjnjtmem9rty7lec5xjvu6u384ne7uze\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cjv5epft46zc2q6tvxumpndstem9w5cyagy5eq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ja48grh4r8ugysyuqvl04edyyrtml0n5vwqs6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k2d5j6jttke7pzjy3aqnl909f96lke8p6uqt0q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ngnxthqerlvjeqg7ynl7mxqgl6y8a69348xgmw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nh6guse54687tvwn4drgu0n7avse6hlefq8naq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gkj3p2yuwlh9gj0zc3ussp30faxvz5vwxnlq9u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gld5tp060m2mcfd8zp78t626558ekp7hrprcuw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ch3m28ln5kch7afevydqyl2zdqexv5xvjrafcq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mccnzyn9wapyl0t7mqt7npuq7khvqtpl728y9s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom133d3hmrly7a0dvx2j5u5gv5kwkcw4d76ghrwgp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ctgfyenf9pfy2zz7hvkjwzpgfyh088qwmyqhf5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cdf3875zusnwu95dsu09a9ahez56g6xcz625d9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rk7e4d4ggk8hz55k2fdslsmxac8lm6enx4g2dk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s8kqj6074x54hu6dtwmw8rhnqpqncjy26r07ma\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ssqz5c5y0wyh03cd9u5e3cxac3m55dqva7vrh2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hhqylnfvw9j39a9xsmq2yexy7ps9wd875cd6al\n", + "\tamount: 1boot\n", + "\treceiver: bostrom184zw5t6yh2qf8g7sj5nn58wun79newd6rhnrjl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hd2kndfelvkav5gr8ftuncs9hu2dztwd7245c9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom100x0v0mqlmc7pzhd5028jqsdtuc2s7x6tjq79d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n7j5qp9yg52u2wpq2cjcfu2lkmjlw5g90asmvl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fmprp74gpyusky9xhwqxqexyq985w5z3uh9zms\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s23g7yplcz55p92g8xd4hce4qas3n2dcxdpsu3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19j3g8wrpkgwur24ftwrknesmanapjax9we7qn7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j3lquel2264yrle6vzkjljmqv2yv890j4zn8w2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ks4vj2yvx8vetxs69g4hpu0mhg8y3wfjun3cx7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15amxqxhxdydqxjqgytlwwvj3t2fsu5gd9xwjwk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gnu25zshmzk5k0mg98fkduvva9xzkzjg4wvn7l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z0a86fn3sx2keeay0yrp4pa9hj44yaunn0f6vq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q2ax0058jktj4fhaux953cch86xy6gc7jegv2n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14eluumf8clc9eu9jx790zhr96tvtv0f4d640jf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uaathhmtr5g3euk9d0zu26jwuka9nvqc7kaw20\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uml7z9lyulujgthn76hw6xr8mfynlmm2qzht8v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rq358dmvfjd49zq9rtg07su2tzpr0g8wd06rjx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jux0l38zhkarhj3zu27ulahm4rjrhxng9q0uf7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p5gnl3guvs8pm6yyeaav87xezg5xlnpg832484\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a9yxrfqvwpws3jnsjs0ylg0l8qhhxupelj8vzm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wqjjchvmupxcmqgq98yqu3s66ndhk3fkt29cm5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10nz2c8mcra3zhk28gvawv3v30h4wzyfekjmqwt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qa9nc8wde7glu736ea65upz7lnxwpqaq73nxqm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q6zq3hx8djgxuv8lkgy2l8e2jkwep96upt2pgd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u508yx46lyulnawc0d3839ur8tsnsaqvt7l3c8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eewuy8malwuylz5rn7cclfpsce32hpaz7r7rsn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wc8hk5pzf4r7ndvwldnkedewn0jj6xmqw2txk2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom147squjzjk9d3sxyrkvl7txa07q56fahn494te7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k4fa0h2qdwstpjhx6yfdfds4etmvtyu0hpf24a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1udvw8ygzg6s7xn2ne0xf54txhv773te8047whs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1djy2l5uny3qfs40tym2zq28lwku56vdrglz9j0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yx2p9afwr9yw5uq3dt2y4d73sz9chre657twqd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gw3xswcqcsyzlahtgp8tms9ynhx8mp0jtxg47c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12rp4qdvhqk8k0gvvsyqzdzvwpcdku2pjcwahg8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1306923aatalvyl2ryngvm43ut3c0h7qkwkp0d7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1usfnlq7xeyk3f6mdrslkcgurddlf2uy3g978dl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pns5ln7sj6qx99540nl6ty335p4xssqn2hx4y3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z50y7pw6mwkp74fvujne92cnkkwpd0nv2hgw27\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xfxz9p6nwz853367j82lz5dkveht4mqdm8dd3q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom150mu8jtt8cmzgekrv8yy9axpp6gk563un4q759\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fn58rdscdmtfprredcnuqupq5qqllj250jde79\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c7f7c37rmgv8qlxpx58quc7t3tgj849435vjz2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w4ulcj6nfw8q0wkdyynhy3wxpasxsha7plhdlv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xufh63t6uwpmjax5r28jc5ng53x7vwjjdne65s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1akz5990rrs23g54fxlv9wgpeq85sye7uvqd7g4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f5qmhuae9ufqdclsmc2qfm87x0mnjg9rmwhnek\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wmyx62jsn4fju557k9utj5l9p6jgmj9ne0frp7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x5zexspgdjuamz4v4a2s5qnvju8jn7u5k0ynlz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s7sdqaujt7lf78xp0hxyxt4mtvp5yer2q330nm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dwdckxqr4t6ccuz5hv5d5wt43gg7wx2td50q8x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u2axhhfh9zt09m38d2daapau3vg22lejgdfk3v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom130y7ek0wfs2efyneptyte0ntjsn2fyxym8thm8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d3daas0kc8chey5mjvr3gzuegnw6nnghmgpwpp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qn6h3p87rkewktylguc3hlw3wjupu0tzl9nwcp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15dgr3zs2cl6fvdq57n6kqzrcmcca7z6fvnechx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k8yr06ve2v9k7jchjjxhhrvay50l8e2dzhyywc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l5n205g9dcggdc6ntlyajuve2nghwh8pecr4v4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12mx2secz6fdwz9c6d3hul6ckafgepuqx0tvyj3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d36chghzzqnwhe6ye7ewnj4hxp3hn57pjuqzjn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10vaz23ujjv4q39pf4snehne2eemjsuttm3ggv7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uhy3ju5mvyszs65nzmr4lych6a2r7ymn0py4m7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17m9ghgm8m9djc279dwl945r5lynwjsyy752y4s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ax0l3dxpgp0sgq0z8t0qpddparf8tkqp7mhf5m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eta8yfu8ugqw0psre00xwkn44fxkxd0hpfr0fe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ya38u8l3pfnrve246wms90959vzr8scsc2qwf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z8nccpnz7kxaejsa2ur8qkzgt2rj2zkqa7m500\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ng5hfk8ekr4gec6ysq94hn0jq98zfzfxy0hmj4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10ul4hj8ruxsllmtacuvx0g7ex0z3lm4asc3wjp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ynsv60j2ha98xx90czjsq5t3ktvwx0ryxsqs58\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mjnp2lmaamjfeex76yfdj0g47mfxsnxw6v9fh2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wq0r2hv3vuwfmg7ztaudg6fadsdvfuxpmzmuum\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19jrrjh7vfvcjsejaf2a7nz5ma74uyszzl5nw7y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c2ecxdkwd0aq7g6ae079g6mqayjnmv0hk3ae4n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17f03k06ljf2z6t30kxqrjwuvqlj9lm77zgn47t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom105zq3ak0nxaj28fxlrym8j2dxv9zk2utu5aj80\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a42umar69mpk5ywhmq26wm4qfhmkw8dh4rejwg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13af0qehfnh3q6hls77jq9qdkhjgez2ajdyapdz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cw3tw7xdglnyk2kmm86vvqpqla28j8xp9pap3y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom172ntp6a98f8rntwqaady7240uk49tf7uer8r4h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1glyuupx0fudpjq5d26v600tw26gez5awltkmty\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u06dqvyktywqv03g243gs9gdqf4vmt5lnvth5a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hcx8f644wn5dsx8qksy4zeanma5r53vckapjlh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom195m54v3x7yp90q3r38qmuf9d6v5dkhhjutd9hj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1252q2pda6nw3e0yw07muh8snqxa9nw094g7gwf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e95d5rlstm6knyva9f5knyycarhlmfy8jmvy2f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rgxy79v8dw9sywxtu4zr04mhxxg72h6vgshngg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mfwa5an7aekyr0qktpq85q7lamdu792lx4206f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nslz4gc8z4gznhdw0aajzehjv3j02rz7j85hlf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16elkp7re55zdp9ulv7etqemp648vl8vhsmcjj6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14hv98p0dlfz86282huqhjhxdv2keacn7wdq4sd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15g86ngw0ue7y7r9kx8g6mylehcna3kx0suwvtj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nu35zgs57sgt74cuj72yr04an299ytutyvddum\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ljzypf35u983tcgzeldxyjy82zgwxcjm5p65vx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19afdrc6f6an9zu632tehwnq4uta96zkkyt4d4t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12axvgl38dmpvx6t5gdxas3kcnp7eqsn8q5v0he\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hgu2sftchr7pz76xdr3eavlz8clqtl4dmrl62k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t7jl3t0chamgyv3c3qgfkgu26358ve6kva65gy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wa3920az2j4p0d3gqlznnft9akl3chw02rv2mp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1txa8llmcx57hsfuxy08ej7aay8pk0tm600q2ld\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a4hk6lgw3wtdkaatycy73fd7nw7s5c77narjdf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qfe96027kc2tnuvwspuwdx4p3sxcwzseu5atzh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f385nxfugtvljnnsmc8d7zufpld790ajnvuaqf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eseer0q2df2dte2erq7vfun5tt4xjtlkrmn2hj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1seqg6rg3dh5wqj3u8364svnehm5j6xt5ml0wfj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17sp99qljgcc5sapv02krdnwgzmqclru45lxza0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jr3l45lkqq0x0jpr74y6mhd6md8zpaaqafjgpv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ax2dgjukvua8wyzrrctgdyrktx90f9daqznw0r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m77qd7cwp995pku2ld9x7cuj94mx5zp9kf2666\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15ecleart6k66h7aul7uchgwm8pttxceurw8z3m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hvxm8h705wfuxn0gefgewzrpq8mfwdxyek5mtm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xvrkhggvdeewakrs4tmsh50yr67t9sa0nxy7kt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tvukjxlc8urj83fqa00vh7ac37fc43yf4ac8n2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nwmskjvvnxphz6nljjh9e2e35f2e7p7rxmw9zy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zxfcu9vu5a3fgy25zpuqrus9tqzfazqd76tuer\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hnrulvwr609gxxgtv6e7xa2u6kcgga826al9da\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dsqe8988yssvxl3r78xs5ptevc3wgwmugr8vsl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uhcxuvv7dcrwarh6szy8e94vsmxvnfamulujkv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12c96k3np8uy8zjy3w78fzfksvs3pp38erjqmx7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom194vkw8h4azautk5q5vvajl76pvpezmw3qz4ftq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1er2ysyxkcklq0wg3klf0myp0fvq7z6yulgqqpg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom158p4llggzkhya5c9uane4vexqfj0h8rtknvpuw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18r2de233t53wmyjwmu9vkjtn5mh0qzdd98zfe6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sl6geynchv868junjepu3mjew2a3lc5sceyzrn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wz5ca69yyaykh0zpkxx9zlmwz90f589lu9gghc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lnrmld6n5wvt5ew64myp80hvy96yuymshk2t7m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1twsywg8vk6xgzmzsd3kr24z3dx9v5czw4e8pmm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rr882vtffxthtj4v56hwe7qujsxcseefg7jtam\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kfazpp7r8txnfadl80wm5cxszgvqaxjp2yaeyd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kvpvy3e9ywjnmw2wnr9r8g4k372gaack90a3lm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tw2pvj7e94cphz3qchke6w5j6vpsu6hspt9z0g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17m6jaul56s6n7phes0gkm9t8zel0e5vf6f55h6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kmfh0aw3dywq5qxnetyslrv0rgfs5nh22ch8vl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n8cte7et2ypgypkeltae24x96f2yh4h6hhhye9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pl23mjkc7khy2azmy8hxvjqqzhhkwd9ew393hw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z98wluzyv3kl4a2lw48jg9j239699cxylaprtv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18r64ldsyrgd8hel0pw8xaz9ugefnd7t8y2w7l0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hj6vx8z02f6wa9tdypdetwh38ry4ke7na6lcr2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lwkl9znu4g0qq6s0rmdxzt4cskrpazevs4lynr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19l5sd43qxl6wq9cz0qjc2rrzcmu82l9lte7p4y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom183fg46tade68t7p77yn4zry4gurtsjuraxfdw4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gwnlulu8392uvwcdsfeythm46kqrphqz6094r9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zh5jp54cgum7amzuhjxjy0gs9y6ekg5en79srf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m5wgk8a8wtu86ek8f94tahcstdpzlq4pj673y6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z3p97l3ezu6jmfq0keyrxen5zlu2v8qfl6epq2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fnu5cnftc2c80hxgsfz7rk0muc7n8w0g4av2gp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h8n5gsmn5fy88thnn00tqmxfl55whm49k5c2gw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16k965hsaqnltlqnusln5u8g8483xz9ca6ux6yw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hve6c25ajcthysu9kz0u2duyzd4gpf5sw5gvh4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lwpjmf0u7n86cxw0f3wv3fjq9a7rqxeq8fxydj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13pv2434qt9ez2uqwdggx8agujuk696jynj6le6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18hhw6nfwjn4n09fcd70weyv7zm4stm5xw6jvwe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13zpnfzu4xgxtlxyeex52a387c6d7pg64mpptk0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1taaar7fsp4wlz40szl02z9jluluhhg5txy4zqv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16t5w7q32m7k9zjwaxrefknjlr4w0llfpclutx7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gnpk2gnw75hrewnjw9vw6qxcyr0tkdrtha438f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pt767plvxgxkdxlq6tultkn4ghewpu26ccj3ae\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pspcsc8ktyeezzrt7y4gc4aa4g4uyeyh5k9zz3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aagxzrs5sdwpzv7y4l7csxnzcftky22m2e7me4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1270dznuxukmwldm5y9qs0k37fqmwvhgldhvf36\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nrw8mdgxwkjq70jcd8qlq3w2dgl07886f7lfq5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom149e9hzvmhr2cn4gnqxaz07h7rqf85f4qe2y6zl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom187fh40fpvuft2lxt7maea79hqlg77umk04aces\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d2v5hp544300ydqeadx3nrdfn0zmuxk6zqgm8q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom109kpv2eapwldu5vdjfe9x4dknul79z6j0pjztd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q55j8m8249dgcmstmh9x7vaysjvuaqda2m7y4n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13r0v52gujksfcq2zra63takypemfx2dg5xn5ed\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yq3d9hsgankr0njdartuv3vr780yg88dsk0xc8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r0qlnghtuj65kt220vjjeknl4vu2827rfa33p2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z747yem8ndw5hkgu0c48t6k4gle20gq89pfwaa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15l5ynjwnf5vhfzjqx2u0ja787psl6ytwf6xmyl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1le2zw5u5rckpn8apwg6l3yu374ltjz3sts63ej\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1htmclu8cx3dw2pmz9a22nwm8xtmelcursrhjjr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lccxp00cskjkzr2njtw4pajja89hxh3cxmm329\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n5qjt5xx45x8qmmxawf9qy7xevr9pnamqds4c2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16hghws8nqqheqv2j34ctpsp4a7kv6wmjrckjcv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x52zv3zxfcsk5vfgplu8cer3thy8a0kjl75l2x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hmw48qn3usz5jqsx3v3scacdl6qszafw46dh33\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c8ltyd9mwgw02ljq6e73yhvwdd8vhmhagzy7ty\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wnrdz00q83a804aflxq2syejhp4gd3sncu55cx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w2w6z4fen6y46xxpglxz7rf4tk0f98zxv953un\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u3c3t2dmukr8v0earp78c33hpm6frt20gz9krf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dw5gvw2znmpn2dzm7847yrsrcfv3fxfhfxr2l5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hty2hzwt8uk057p3gc3zdskvt5qpmvcxsh4r0d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qa906vq70gf26aalhkc6ky32zttc9q6xaafh5a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom163euvcrmrpq4u2sgs9en5puyazch7tm33plp92\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vxq9y87hr4a4kqhn37y3zhjdnjtjwnzh7ycmyj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n5tvmq0mjq28ldhplwx9uj8asqav3kdqup26jf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sk5rzappl90hes5kyyruqrrgpkq6y5j982jsfx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a40vz6ryf3tprzxa7andajphf0kdvy73w2523l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k8xgyhenw3069mkp0qlmm26hs8c3s99ker9f5w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ek0sdnv86m9hne9g805ldhv63fr879z9ry6j8u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14p8y3tumsvm0xmhx9f5565zc83ksv2nvtzt68r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hhvxsz30r3qery449x9p8muxfcep2fh0capksj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16jactzz062ljndpx8w7kcr5p8kru68y6cmzekx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rqp2s9ctwr5ecp68etp3vgg73v7w8dhumgqwus\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16tc25mskkukxlu40m3twlxx2c2prdvlq7jqaux\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tlxepn4ekapvmaqx3zj2n4pjp65zjcspk25n6e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1689nqy43u6zzer77armmu9syrzcy3vmqt7drkn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pl6fxlfa2493edmeef5z6upspl2t8pm53gwg6j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pn39dy7v3g3ej2zastqqx5tvp3yfn7rfgul30d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qnyzxz6jf3d9k4qr8l8nhlq3d7tcf90fr7de0e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ykhypxnmklmxj80z6rkjr092kcn4hxmqnfx9f5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nh9mmag4svhx052r7744k69txzyqrypj9f8xk7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16w9z3klshzxdmmejlwnlqjsxq4h7tuseycyc3w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zyf3s6c0asag4a0p7dfxe2wc37e0654vnuh92z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1znd0lyxr9pmn8gk2nmfqzf9fwkrv5audlgn86t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ld0ldqyql2x80fju0u07s5nxuxunrpey5cn6aq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c22frcfqxg3rc6nlf575aeks5adn300jwstnzw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ehr45fwxja4j5aeltlfpfjasxltz66xmxx23wq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ezfcypqgt7mcgyfqpl6zdnxcfanf8r2v5pklxw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1epdpeeqwcwjw6apr9unj3vvfagjdag6mu4j8hh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kukr2tfgup0haemgw4wev9k8fc42jvkmhjtctv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom192989dgun24403r4ug7fvre5758fkxv8qp776m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17s7un6flln4mqw8gh58kcr3s0j8qy9gth6mdta\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sp7trm678m7fp26kdga72vgyuvcuvq3cjdmykq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vrwlgwpumy48ygn9n0u86wc3vrd834u7z5yqd3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gceqa7838eeflmy0reywjwc0r4y03u2lkwn5vr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rqcnk27uh3uzajp3g3pye2g7p26smyqnu0qwp8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rmlcsa5ljhsqrmedqzd5gdy2qa5z87q0amlhu7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jd56hz2z2wy283ywf2fynnpyn7rqcqf8qq2rgk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ut48eym8n9f5ral5mk6hdhjgxh96hkwjj27ejm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sefkewd7yjnayc6asv9dzf6wcx37jkcru2llg3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a4jqwt9jag0sv9sdgv08k2usv0vyeudwfefkas\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x8zf8dch0qe9shlrud6wwgllpr9aqfzfll48ht\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tcu8u7f4exml5ws3xmm77flfr5ysk55ratywka\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qdcrt85sjjklnt7yl7lujr6jr3k47dy7nk0pj2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kqcj3wf4rd4vyjykhfwgc8kzjd42pqt5qr03tc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q2s73vjr5ld3kf7w2hny2kqthj06elaccwdnt2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d294aj94vd7fwfjl7rj56edfkrdwp8q7clpvsw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wq2fq7550egvxpmjqq4nd6qpqgqrf62tw8xx32\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dd90687zeqymgdpntrqrm75ux067lzq93kcxuf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uz8c9f9ymnw5quxwcq27vxlpspuqq0e8mqlnkd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cwxd5gqjtml42ysdumzrp8f44lrnvlvdsuku2r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom137dyn6lravnwrvp0xdarjpp3shs9eq9qayqrsj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17wsucxdknweka82d2gat0226zng3ecj5ewyznc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13h8exd4ssfpnsl3lsuwzvpn4fm4c8lsxrlt497\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w65z68mrj90k22tyfgxn9gq0uaw5yseehx6rm9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ewn92s68uaw3p2pxgvewp2hlm7rqupvtjnng6y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14u79amxfg52efqsmgmya5az45th2ke6h9nwcvd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rdgd7lzq2vp6cksxmyym42x9dw7pqkwa2x7vpx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m5n49zvpjmmtsgay3u0kd252007jwp7clwjrxc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15yk89rxy67zeskvr3ymq0ujkrx5lhy53d9s449\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a5m8zz8v903akelndpazkqdu0975e8yrrsn7w7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14qyvmxkzgt6y0gv04r5w5avq0m2ejr84hclxm2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1va2hlrht4w22e49ge59zvur7j7pdv0z73z3yvn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pkxnqde9gzuycm8u6wftl74rprgxa5svct80mz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pay43f7gwje57d56ewyzjrvg0gs5fzrjludtz3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z6tm06hwxqldg6j455tepqjz4nvrktengx4gc4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xtry5m4ntucu3zpc9y4kskttt43kzlewkylyfs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ut4vqupek9ya6907kfc4k86sul6xnm5y70s0sa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a0rclkxqknqj4pc6872rth99yyw3px5kgx2mv6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k5ezayyv45fshxuekmr7erk664z2wa7t7v5hdx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r4nhckpyk5fpk4hnvvtx47wg0mznqpj5kfjw5n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15wshxjqt3zy3m0muxf6gll3pjsgnnnsgc4qaex\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19jk6d5jkrc3k9yck02z3d5ug9ezj576lp485k9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r0j3spku6m45ueyac7se5a2dr2qfztwrjrz8v8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13d634j7nzc3qq2lly9wtmldz66pkrw4cnec75l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18rfg7r82hckclmfce2lgz9qv0yurqtxpnfcjtl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tya8kn5d8u7ndwary6djm9k7fjljhfghrq8525\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tw6pksuktay4cpwj0j9xwu4dv996z4ulyvh9eh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ng573t0mdqhufkfe9hw4gypavdjudecukhw7g7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16sps06qur4gktqthhe6glywj3m40djjeefzvsy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jh9l0sumr3fulpyh5c7hn4rq2uj9dpv9tc7ple\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s72wt3lwdvdkrn74q4uu84zwt0ykukwuderwum\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r895jfagyeyqu7jxxz90t3rfhqqtmtjud4acyy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m83hk5syetahgc0549trxcqecpcj0dglms2vhk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wasws7fvtf2ncv9cxqqp9u78ys6029733se78g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y3dey0f54x6g53dtgtlfrhvqacvpmmycapqwn2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f9e4vrcxysj6g8xk94pzgx5v5ljxyrk65xzs5n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ktp3zgtf5fmxyc928ydvwgkt8mekkn4hwk4wrk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1maez3a26d792yvsskk569n7dxdc6xz4cergn5n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h8mw9l2y7xzu5e5yg2e6eyw7vmmn657ewf59r7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g4amj4fwe0h9707he8gpp06e0ccrplydef3w4x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ahfpl4z6458uj633le5wfywjj04q4y29xcf8ve\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lphhr6phdv0s8xl697jn3k96d5m4q4fjl0ec0k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s4zu2runz5wrveh56q9zd6txrm644r8xwu6c3e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r7p4mgwsxddkgq5s8ladtfapupetjl8483sc0d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ensep7runynht2atdwlss6crnty6l9wfmjglp5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jpumajy0pu4u9q6exr6fw579kt2gpfxqtg3l7u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zzm9c009ngrcyawhwft7qwky9emul4ywsjg82s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wuv8z8ntgrffuyeqlpj3xk9xy0fkupynvkmj59\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kgc327fmq497qcz033w5au7340hznhhtanf53y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xlplr27jfkm5gshc3nzuzfcu5w99x682698g0k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ked9k8qy6q63g3fa6urh7z5kl9vxfwmekpcj5p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fa8uyq5mfag090t2rh7tyquxp28wp0mh7qzd85\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ljrs2jjesp9r2pc4lm2rpy62rn3md69m28f9g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17gt2kyd9shmdwxpvk0wjhvnvmdxsge972nkaep\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pnvfx8rv3xnhs3qqs904ffs5pggh5g9f0pp980\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gchhn3nyaemnygaugmmt7ad6cgs5n6ayswulrn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kjh3mvr2anxvt6p4hw7zqdczud06zmtk3fd5e5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10ax2tzudhd5hy3ggmtrdhx5sve5fatjmgyvqen\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tegw6mt90x6c7xxt00vfsc8dtc5wy93u66a5lf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kdh2wdln3fmsr90ctdkuspdlkp79h7plgn8x40\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15fav0dz94gquve0sp7ph7qcg39z98j47c8mdfd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ylhupuee3dl52rqrp0k6zum4rhzjjss6h37me6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ttmveuhuqvjlx0jvfpk9avv7eqadl9cf5pgcu0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1phj32ay82kv3tawftn5twhnqzfyf8aa60qadt2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18cydujcvq3mrtvyuz7gjv6yjlsx76qxtqk3k4z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xh5cqhxfarjmnmquhlynjyh9xd2j5nxrrzkak8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kkszf9376x2wmx4hx6jnqteufrcfu4y7zmjm88\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tx4npp655y8kfe80t5065mjtfukfwscd2g75lq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f7edss94wcw7d75wn9le4ufzcrh9c7xg8emc6x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zdsuc6c90dj7g6ckw8fsdjjyvmgv6wp48p06l6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rra6lpczdl4dssggwh0xsja28g8stg6rks9z9r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ywea3k3pr2csf42fa2074nq0fzzzl47mc3hlu8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k7vwk8pdka0j044l3qxzdu7jkzgsjrefujk7g2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10ujmghscue3rg5mtejuf83ejedgqgdx3tm67hq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j9z5dnnehwnmdnxyyrkwaaygtwls5xghar0rh6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pmvdmwuqxu6egdqwv4dwm4elajkrlrqtu4kgx4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19ammktlj7932y92us00rfql7654cudzk6grw0s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1clzzdsxs8g2ctnex4dme4pwlwmhsjgfm4fate4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dzmpm0jw65hktgxq7uu4q087hgpm9tag6hlc2q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12g7utasjrj7274efgakdu474fj3extwfugw420\n", + "\tamount: 1boot\n", + "\treceiver: bostrom105v8lx7nm9f5vevczvkvr4zzmyg5t6pc2sd3sx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1709z6pvf2zfpstfpg0gzx7ynhzjd7ltzkjz3yz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a0j5kggusr6330ut53yrklkuwpqzfftuqx6q7c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wqtycyff3cw6n57p43z035wwq08j6xl6dgusfx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k5npar4f8thuw8f9asgc37r7gftdjw62v2046d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hp4fldang8nuhxue47h06rragd83a3sk45pyda\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jtlxeczgaakga4mxlfz3fl6wx5zwfccg40keq8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c07dt4q9rlt05rark6krfxtq6dm2frzwrzzca2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12t7cev3l42pdqch6j2lj7pujl2g2xausgf3ncp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sa94a793d63agfelm9jqr5pfs9gtwtsl0ve7dj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sxjhktsmrrjehra8y6tkp0yemp9329e4k22n6p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1enerfqhgn9sz7nj4ufqxgnfwyfv8zprq7t5297\n", + "\tamount: 1boot\n", + "\treceiver: bostrom153dy50w36822ahp5g0zs42pljjqqwufh925ngf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fe3sc5cnfhnsv6yg3l4pnmdywgal2d8wvs5xt0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ge42amv45yrx3ash6rn3fg0zzcvvv0m8zgd4ek\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xdjpwj3ydm8w6dfuw36plwuv4nfp0gc4lj3vc6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u2zdyfrwgmvyt6ed7vkuah0zfz89qwer44s39y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s2plvnt0k2z5auvzemd30j8g276l93www7zdgd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vw432hg3v9q3khj26ds7hz8nhh82yxsmrcpxxd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fggn95fv7yvph4vt8gyhlyjpqpp00hqdtt6h2k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1utvgrw4zy90u3sax9es5mmyu59nqcgsn9nlh07\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c9n67utln9ecu57wffs2g34py8rl7jfy7cuefw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wr34r06hta64l929dytd66zg5ga8274gquey7r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k2n45jwm2ar3ljc9antrrtla5dlrlm4e7u3yz8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15ymvalestg9y05d70nt40y20lkmxu7stv0ccu8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom150dkpr90jdedqta9hy2838dddrkak4qvj4grqz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16nf839y69wes3yacvzycvygppdws3q6833x7wg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14ecd2guw3unfka39vwnxfcgsjm0l63lfl60jm4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fj5wuge24w5tm3s38mn3qgvuhqqsvu4ulw749e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e872ga9svc8hxk7g83dcq52dsdcdduxzdf8vxt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hdxxrmt62z6h6x8xtwydwsem70fhcn20yxkktx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xlurnyeqj8a424htf2nupz4sfd672729jpeqga\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g9d64h8rz2drcngqfl2ma2z6xuuv5xerpnykq0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m7ds2kuk0xnew9t873wd2e3jkeuh75s7xrzxha\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m4864rvulxglmvm5m8hfld2tw6vzgyxks7rcqa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s8usms2lzeha9u2cmd3cddr3vtukynru8cgu8a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dn2jxeqs2zlnj5ckef2h08xy8q3k7yyktlyt2n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1px35jkfus2r679qtv3284f2rnalwp3d6k72p0n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gc5gg6l43jeny53f5kcfxsrr2rd5txgw0sly8w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom149nfnp3yam0ytw3nwhcl9er4wxgnz5mpgaxkk5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom178lk25e0rh9lcwu8ldvprfertgtlm7smr7hw9l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom175p56xpedhye0kz9ua3ccsgsd4pcajc04ku9ye\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jzfelqvuzyfrrwatc9edphdmal9gqdyw8sltnp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wd8662mm0vak4p6zv4jjysw9ttsm2mezk5048a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ucst888jvkfp0qzgwesqs26f9uj5dhz62pgllv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1723m85tp04k0v3w3vkqr3a4pu3wz7dt8u9e2ql\n", + "\tamount: 1boot\n", + "\treceiver: bostrom154wgd8qmg70cuqaszspflqc9tz03z82gt2yrd6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12qznnamf4ptvc8qn6ywm5wjjnvmtahyznmyalf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e9rh6uz2a8qw3wwaedf8g2d8s6d8t9p92ljs47\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16mngktkvqewm4afpcc2m7r06y65403dqevxfcu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98\n", + "\tamount: 1boot\n", + "\n", + "coin spent\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\n", + "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", + "\n", + "transfer\n", + "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zlsmu65zf3hfzhwp2nkugf39f8jrpa28l2cga9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x9gypmwn7r53rkkrnp9szwn56t3um8ydjdpx7q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rq03g02qswr9lqzwhv2jnaz9vg88a86pt3y02f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yqe4x3znsuqjqs0tkzcj6f69tryw49mttmnkq8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1khw2pg8ppv2twaz35nj7gsf766vx9uq36nyhgq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15kms2d4urmwadnljpjqzmwum8vwtx3yxxxuh9k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19r7aeff0r5xnatt6v07swa2pny7c0uucsgn0q5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18a2mlj8kq9ny003da5lsc275yz04ttzzjjhrmq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lgl7p6s0ndg7n5jedqjgmxh2udwtta4sh7rtgk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yewqaleqj38qpltr2ddvvh7melq0kw0gk24tz7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1js4s4wn9c4lzuu5eqkcupf43lad9j4d2tq56f7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14uz6ezvc4hzhj0wd9g68ulgsp8uxyky4p49xcu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14qc4u4hpqjqegr0fy3crw6eg88sf0ra9vvmt5z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pm5wp6ytgvnv369r90dk7rd5cstdensqeyj3qe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tsf2f9hqj2jkhy06qyxjf26nyf0nwr7tc38ap8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tlhlzkj8x0u89qxthmjx307gkpqqa8c2xdslcv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v9xr20dscvczhtq23xskzlhkkk607he5mdxvzy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ejxcyakmgtrcx5ve5c8zt4k409rlr4s69y6aek\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c6x4n952dtdanmfhpgmgqyzp0qdp4d47rkvpk0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sa3j9n54ath0xmcn5nfv03xv6slkkxff8zhpra\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kwx9vqlzpr64ha6s00m4zn938krs3et5le2qtw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom103lgm6eq8kxlujwl7pqzsma0l89cw5h504u4k0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1slqyxc9ss6s36ew9w289lg047fnmv0zegdfg0l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mvk58tufhdh7z8we73n4uf5fkafwnq4yvzg6g6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hhxzpy9ym2f9g4k00p3kqu50ze067r9k7pxufg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r878ufyqaja70en4ft9lcz3rhxadu37xv2c057\n", + "\tamount: 1boot\n", + "\trecipient: bostrom153rkd4vu656e5lv3g2mzt2rqfsha3c7hct4fye\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1se4wsnmp6lar8afdnnsxdvkrcfnkf73hpl7whk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t0784zaayvpe2qpm6yt3k2skkrtal7dlme6k4f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vqamvjh9u5a2u2ksuxtg2xzew8k4hjthzggmf7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ekh0xkhef3cv9tu6fj0chjgq7sulrdefruw6kx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jjjz67ue9nzl6mazw86n2jfsqcsljuvnr97ar7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dhjl6anmvv3vuh6zyaf86v3p3sf0deamw9ssjc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aehnyppzk06wytk02pzvkmd4cd5htv5s06wpss\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pd3acx8lttynhghm0thgshg7wxrv4yt6hjmnfe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom126se6s2ft4vwkv5slnuq4l347ms4el9pjvyyfp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1em5ap0st5u9dhagngm4np2g36g6m69xle5xtu3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fdumyl6lne5gd02ked6xp5jy4g0fmnsk22cr6s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lcenkqpdp3dmsffmd8xez7apm3we8ky7vefdfa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y80d3t59yztu3uj67ak0qwu39m8x7ka0g0rsg2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tweka9vefsp0rau8htjk45uukn324ua4rtmg7p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom188q6rk80h9dhvyqdsvwhyqe6afl4cq4gv35l5v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sh0dam8jdl7p5thdjgf29sne7jyy5rfaduqdjx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wp8ylq4klv0w7d6h5u049mnk5w3h7n6a545wng\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19v8520q39mr26m0g843870kuj8nq39l7y33eeh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vksek6w76sz7we3s7ag9ea7dtcp58gusn49gl3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nvr537t5qmg25jjdfzg26tpzqrvn548ccs7m6t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vfqa8pc4psdk0rqr6v49mch9vgann0dtwncv3t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h7eyrpqv56e2ja34r6v7ufl7akj2u8lffya7wa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qh5n7txscgh8mfdsdjv9dfrctrpn8rne37l37e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xjfpvqeckum8f5mq68k33g3fw4sa0tw9jevnek\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xun2mrzvecfxztsu6ygtwrsff34xltn5g2ckup\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lstp05wp7ey62cm6eqpled0qsskg3t883js5uq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom132fm6704p6gtmgatuf27658j5v4yn096e00srj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mg2xktvjeueqxuhnqw4wc5ttsqv8xzfnwpptwp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tvazs99r4p4uhyy2dj2q4xp54dcjsdtv0gwvdv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sl5yxfy36qt896z54nyn5nr8rkk2exz4cflhpr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zfqj8lpuj4h6cnf6fg6lnch7f8d7jal7ler4nk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tn67440wmtnxhzcchfwupy3a786v4s33p6jglr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tcuvs2ryzmpkgl5u7cqax2cx3r0fsavpkmc2z0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16t9akqwgtwfhvc90ltctg72jap4p6w3k6qx2qn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w0mpyfm9kfslquvwnlt9edu32x00j3gyv8v0kj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fmcanu5q9z2m56uj72xux9av2ntwfdm54nkhm3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ytzz8gd2x75ecsnz083n3408hlm8pfjjr4crkm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tlehwsd0paf87a0gzvhnxdf88fes92ndfc2d3d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19vzlkp7udu92ykha76nkm88rsy0r7p5krjt5yd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dxarkqm8xajtte2jd8hfxk7j8905gydwal9s7x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1krvh3dk4aa2fwhz38zr82vdsx8d5ygprk8vxwy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wdcuhcpuswzvwdn27fhvmw45m7qe7kgpsu9cgj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sym0t6t0fejcamztrzwm3dgqkzl7mqezr57ge5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10ueazd5c6qm7a8tpx8a308mx3e4pyv89j7ymk5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jxsuppsey455zpu2y2z97pa86qrl4k7gs2sfqy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a0lm43fef7vg2dxx69s7xappjlnwavtlskawj0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18cl0ty4v9rdqerneferk048e70qd28cps0wk9m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1394m5r6a42qrzg6eukaaq52t4kmwh274efvj0t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gdy07av5tueu55sayfqltddjummqf70fhfccgf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c5aecuyv9wf574kxmuc2h44sah2cf0xnjr6hx9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1js972uhs4ydpjge6x4k9d9hfzac38x8zme5qyc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17dz34w52nwn6xdeatagdd9f6uf7tj0purs8qad\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13d4085jaxuy5grr6h0hrzx9rzuuwe6ac6pdft5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r2t0qe6ut3q3mtumsx78e3z7v9anjx79dncdw3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vva7fuyddhr8rfl53993l77nt7tye7urwn7n28\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qlkvuc4g7gwswsnjgucl0kqu6u478agyke9gqn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cujrvgjhmvz9yrh7qgcm7y5dhpw4g3j2yn7dvn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n3h3zykntm7et075gghpqhkxa3nzjqekslwpc7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vv2dffvvyewu3vddr5t3f8fcd5gxdcx35h6r4t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom185p0ynw7vug845qed0muv2xrzksfdkr80hw0mn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p4v4rysht75hcparzlrckhyqv8rv9qj5cpzw3x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom170mhk7kh5xwt55pk3u6vtzfq5z9yuqj6sufama\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gqvg2akzzyf942jtks0946ugakhf34adr7yjxl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mu7swnaf4j4dqzsxhaey678w82zje04nj50fem\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lv4pj88sda6nqezv5whglefwqzpdwfa3wvj29v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ma3d47rv8ul9hu2yygpxu3qa34wrwvhd4zl43f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g824sjlynd63ckx207768cmn7nv5dv7qxv89nx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1492knevw5pe6429vjz32w6e4zl693a7e8vr0v3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wwlmpyat4p2mejg4nja78ruj6l0v6eh4n88xxt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10awphjarm4j7du2cdm7zrhyw07hpc53x03lmwj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom107fe0djy7j9ty557c3cvw69d8x7zej8gq706qd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y3ymxalgm6rueg5kh76k4f46ank69zu9htlyv0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17sv5nk50l7y73dpx2546ulgx4wlk42tz498lh2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d6n3qjx5zuu0960sxfz8w4gfg76cspuzzdfttx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tsa9s0xdmz2d9r0w4wgg6r04qcmlmqmxcceyt8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17x95r6vzgw6dkva8stcqcdpjjvpugma64h5and\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q3cngvp0sz9g9gvk5kw4h2g397s65r38sm0xft\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15m0925vue58qvqwq2tkxkymmlq83ccp83k9r86\n", + "\tamount: 1boot\n", + "\trecipient: bostrom184xhu6v2293490x52v6sqw8n3a7y0vkhm7q3qz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15yxdc6c3fdgsqa2dytqmkr6d08jyceasd2h8pj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x20j0yt53ztf2pyp0wgc6evh279zandnqmluu7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13yfmxyc3kaklmtvd5h757gne0xgrp7xw3d4vt6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pje9sayev749mskveyc3mwm555uk59zu83kwgq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom108parfftwtmqzuu4udvgggr6jrexy97dgrvv42\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12k8usz27j2rz3yd9d4zpw9r42jygucmpfvsps5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v9rw3t2c5qh5plt03ddfhqxxjaaf9khwqzrg32\n", + "\tamount: 1boot\n", + "\trecipient: bostrom174ywlwkr0g2dkx7ntsczm8cy2ucjx6euxszszf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aymg26a33wc0ugt9cgrpytlyxwxrz5wm0ad0cl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom134u2w9famknhc969f7zp9wlp7zs5d34c8ufece\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sqp2c72knm0wgjtz6r3edadvs7emewzl57zqnc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u2mwkjslftrw6kqvkpn39zd4s67shzj9jx8gw6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12dyx59tjfacu6dgv52n9ufy48htye737xpqlxa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lqpprsd4q46e2c05jlv9r3uvl29tnw8ntdx2fz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mkfs5ne9pl37g9r6r56qx0ze0x2wkfu66pszd9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lpxr4fy4hjmfkeqlq2mgfa6tv24kkd0savqy0e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w5q5jyusg7msv8j74ajm48e67nmm42nmpuuc20\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16dhc4ay0wl99ynzruvhnyvqmed6jsrzcnhvwc7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w9cu2h2s38q2hehr09ulxcsg042vy8cw55qk6p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rd0lxxstuc6q54qhtn6dgdyqfjrrmz2qq3jhx8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tjah0yxy0hz7ln6ckfktmewur5kpwuse6wa6cp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a5qxpkycl306jnf3dd0xnt2szlf66s286mdqcf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a0jgs4ujtt9v6ak2vl4ns7ezy7etev2jh0swyd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q2q45yv8829xa2mm377spmawn4lvau9rhev658\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ew32852a2ndyl5qscaqv28556u8m59ha6svgz5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uqzf4x63drkmv4vsyuk0ghcxlmn3ju7fgmrs2x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j565parn3n9atp5m0rp00kc86k3zuryndpekge\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g882nurun76dphzvmgfpa45c8u2qfhapqsg8c9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jt56aud8xu959f0vp6q6sk4rzuvwlvrx29mn8p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k97pykvyg9m35ud2ej6aszxqzvka3t4fuacuuc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1584sjvepxayfpwe0zrytua6d5f4tgwfunhfdk6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1svgf7ktp2u9ssn9qp3qtr8rtkmd3ukjvjk6af0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1quwhw9ltgy2t6wrep6gfx4xv8fp6ymcj8g59n2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hxl9z70ncvjuvaa4e2afgpv58c5x4qfcnf7rtt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ghy9u0unj7emt6xqtvy59e6xew2lgt43pglrnl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mv0ay6ynzzgfuzgu77jvdc2fywwtg9n7p8stdd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10n52qexzxwxhmy5ehp2n8pd0l2fzsz6le9rv9z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lmkqt5mm5jwawqu3e0jw4cj27jkvp4mny5rplk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eavqyjvy89y6qcsp05te8fw87qsf877xd8y55g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lutjmvnm7ra6z4h7xcq3mrfexsjy8dymaznhx4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom185vk82quust6p8ulafmz9yupemlsem346asdat\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18qtgz0de9q72uz2m7n9r8xc9anc9zk4vzgdh5v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12lkwph2w79ls9tefjjj27l7w70hvvecp8pzcra\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fxz2esr50d4e9ctnn5mh7px8lnt9vt7exhudt7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gga3uqn2jks5wrvl6z4ucc4hjeuecgsfresg4k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fnxcx00vuuc5xdwm2fzrm7n4xmuvalvah79wsu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gtncjd9cs4cgpjwq7g7lm2kw9l3eqn4yhu7xq4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pz8gn0dz62t63s8tex3t7n5cyexsvgqf5vm3nj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom136l24v2zdpj6wmy5zqctutp78n39f8lgvumhg4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fsm7qwvpvw4hcl8zmqda2d62mewd6spyv8grmn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dpv69xe9mxeflalm576uantdkpnqhvngut9770\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xrcjgv3ujep9tp0md5nq0u5899c9cugxu8skew\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rqw0ls2r3hxxgf4yx8sks8ly8g7r3s6975zlcr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kkwk6vuwzpznh049p2z0dkatwzrrnr9flym8la\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13ewmrehjs8r2n7cvdc7vqd5jgyuz6j06pyyvzd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w67ns9p2qumpjs70p7wmyvwxqzzmgztt6f9w9r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gclw8ua87tuja65rwkmk8nh5j75kpc4x6nz828\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10cqukq7f9w3yxd4cj2r7cndujqd595ayxlvrjw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xm7txmvp4qh57sgtv5fpvqdxupfl3a0hcrlfph\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k0cvy4pd9tf6q44pvmdkt6edpntgetl5mfsft4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17rrlhac054zrzzpczmfcmrxfc9d85ak6yze9rd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d5mlccnw4hs0w880yey9lda6926axfe46tlk4v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fwsckpml8e4369p00ha38jjel0e3jaz2v3nh0t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17xmpl8h0625twaplrgvvpx6tne3pu35jrj0ahy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qvgguzy047hm3kjm5xe72y896ngk6nnp5geggt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15s8ds65edq4x4gyetdjs44rhkzwa0dhpeacd09\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h8gj9ekjreyk694vysseawncxsa8paucu72yt5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom108ljh53y3gp9xvh95zlsxh9xszumsmdy0d70x8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jrwsmefykjcw5cgqxckwtaejsukfdfue0rn58d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g90jgg2dd5xl04raq5kpch78hesxk3q4psa2sl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17nlmcaz9dpzaqtmnkhl6cf8sdw5sycppz8ap44\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j4uzuqq0vh3cnljns96p5w5cs42v86yxv8jsqk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x3h550wrfckwkxadl54hzj8h3ds8c3dfad08fj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rgdv32r2xneamu9m7yeh3asf74dlfkwg3xu2zq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ze334rpdfp8wkw6zvanh68f7ppump5lx3mwqan\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1takkg7qg8vpugqat0ym38xhgxmcttt9a59j545\n", + "\tamount: 1boot\n", + "\trecipient: bostrom134h5wa84vuvpz7awpa9wmjqemjzd2xusu3hlp3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qq7nhklvddqm7xtulw57aqejkqcrt6ypucxmta\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fdgxymcyqyzhx6rhdqyazl2rtdlk0p6x9tj3n7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19ec4g2gdmvawu76lxuzp3394aqk0w8kn9mww0k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wnez4n2nd0q4cc5nf5xr6zgtj0svs0rv7v6tv5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1apya9stgvhuuy42uu5d0es7p8ds8fwfs0ws4wp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f38q7wpnrfp3k4r204vrg7c2wp29au9eaj6z7g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qpr7xrrlcyxr8v3l3fr770gvn9aka4fra009dj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom100urkx0z8wz69suxkje03zkfdxl3h8algj3aa6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lpfngd0ja00c9nv0zn78zcz5syqs9hctyt4w2w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tpl0d6328zf2nfv7ptdcg2wqm3r5d9ps9ljz89\n", + "\tamount: 1boot\n", + "\trecipient: bostrom134p6h04ekdcfnn6txma3ytkp5hgqvz5wamkp75\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lur9ml6wze46xmpq2tylxrd29r42297he3wqpl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yste86hpc23rw9jhnluzv6zppsryvfhku3yh6q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d3w6qe7m4v8hrqdcgs2vf7r3jzmngazt0dy82g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v2xsd3mrrsx7jz2ktcfzkm9f7lppgf9l4krnq8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sgucgk84gc4q07gfl2m2ajrx0d3arq48xa3s6v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1640mwez3a96wqhrds0urad4j3t56fttffrg93m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom139vr8j3q2mxa98ljvguu32hk379j8409w05ry2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mx2rj8vj9cz3dwutl866e7gsynhnthzdywr3h7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fdypy5kxf4waa5xqpxtghzedhmj9vkah4xhpxl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uuv4etxm9xtjapdc3s2pgg4fhsu6nzjdyvmydl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18tck3y7qjrlx8rveptk03vj3tavt2edgn92fu3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r6pq8zn9au2tzzld7tzeueaheqlav8jp24zk00\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aysks96klvjx8sjhgg095ygl2daserf2u3g98r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h9c0dfvsx6vcs2a32apt886pdku3q78cw7wje6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18f8rldxw20dhv32k5355nfhd60xsx9xcvfl7hx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ytjx4mapa8uffwwshqlyr4g3qe83z2zmz2wt94\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xhm3x3rassdzk0cm6f5m793pzs6d3876r3947s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qp22u988azgyvygaksmznk2c4xe5hgfkxtaeh8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ga9gjwthqp3l6ngmgujz6xt85f7mj2hzll789m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16eu9km9g2ukn3kng3t05gyw77m0s388t3ldmw5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1trajx0zz607n6ynvzdf47l3t63t7wt02kknljm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h3em7ptasyuha4qx4nemmrunztd2ck4l8spjlk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1htdwg0u9f64348n62epugv7fqfyusqwnj6q5wn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l3ruv6lvgy7jjtwdvprmfdagqjtgqtwkkdlnzw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vzmqrfsj3gutpgsecc64xjlxhz0j5rhdck2e88\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qydzgts5a45ldyvn0673v9qvsll33vn6hnddsj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rm374xl90r0dvcvffvvza7dlk24h5fl4k032d5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19zh05hwequkj52gru8t86apkpdgkxpl79utawt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jvkduc9yly8uc9vpdhelalsh7ywh8p3yngnp0t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19js0y4h5wr4z37fyn9lk745ugs0eurrdxq7v2m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14jvu7j7p55cgwq0h66g6ezercfh635mpql79t4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x8j4x8hk52rxyx8plvvd3ckpknft2g3p0al7n3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rcluzdwgpv0mj9l2047jhfcrn25ym388pt75l5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d0c8r5x4ufdxncjp409dt6s6zedt9fpvf0phhg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k6jpv340pxju49et0kt8yx9x32sywx7v4n27qy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15ed9cevn2dejsehpjax6xd5fz2qnjy9l0msz3v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p3jj8tfx42pvh35gxd2z586004x6mz4glsx7c5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1trtghaanrlllzf360f4lz4a6yaj7p87c5c0g7k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qk5wfu4j3sgcn4k559gl6xk5jakmwhmum7rqjn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rn746ppd8wetnpuydhfr2m7a7vsncfsxm7mrqw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ukssxlx7uphpgadjst7d4u4nt833n85sujfrwz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wzee6yu5l832qsxqmfkelwddq7555alf2ye0sd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nd5f3g5au3sxv9vesgvntjcwl9rhhdhrrg4smm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kds6g6jnun386j4u2fxlykq6q9lu430kfs8w8t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pctzjgpqsmky4tda74huul22u66kjme3wjg9v7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ufpyj8d8enjvcxlwsxdfmfaqgflwdxcy0p7wjw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k8nn5ffskduazuy3d3jw4vkseqdc846q3r0tsp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w65sjppjel3k43fpdftgk06ly9kd566ygd2ksm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14plh27mz7fwj2rkg3h5jy924rv67mcnanvk9xk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1474ks28fvyea4qx9v87r9tevvqj50ye093nezf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nqkg99cakqsh7xsutsldnpx8ktdr894z2up2d6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k0c4u3d8qtmzgrlt98tkqlddlsfje756yf2qgw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g0324f6a9yfd3h92pa9f8870gwkeekquknr0fj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wuq47y984j6kyupflxvx3xkdrcwqr70chgk0dq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rrwwhee3zyus60e0mr5r76ap4yaknaskk93upc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e46hy0mxmvd7pt5m7rekkka33gz7lsa7t509yt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vdw7577265sjhc9tf76dexg0vjqe2hwqwmfx77\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r3xjazpfgz7dfsghlyxlqxnx6lzkvtz49ude6l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uyj5y856xq5f5sekcmm9xdrj30f2j6cvrkp7e8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1negurdr4eukfukmf4p26uyw62uly2dyx5d9jcd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10v3zm6sqeqtmm4w9cpc0ms9rk2r4gfghz6ydx5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1crjanjdlfwunuf758j2qnp0c2ylm9jenm24xq0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u8epgelfklzvzhyv9umps0gna2k68lsmh7zf22\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p9l0e9unkextwflrm5l996gvmvs8wlph9xryp6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15dvge7l2lcyhdxtprncmwm2874fyd2739pfgxe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18xn0gq59p5dnjh73rjay2usvfgsdna6724tqhn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xsn7uufhgks3eragre8qx9lyk9gtw8t6k9mauy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kjugtqyv5myp6p6sm0nvxc5cta0y78084t5k76\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nhrspqdl8u80c8c0tdccxl57v4ch3fyxez92z6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m8aywf5kfydnwdc2w0wk8xygt27xmstgucfmnj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mf7zpdnu72tpm5q2z4em4qmrclwpq2w8r6c967\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1axk4pn349fyvumukyeuue7mp57846x5n85jzn2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cr9ssxvtt0p6tlumf69qnp3p8er2yu2tfdav9n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xy5dy28f9hxlg2m0es0j5ceatnwgfac9edfzwq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vjc34h3hld2l7tahyveavwhu34gtnrxjwplknk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xnshuer3n282hlxams553ggeh3rtggqlwm6jlh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1med4scf5g3g58cefa0lg4elc7ynwspwjcnpymw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kazrlwxh6np5jl7zl7hp6900f50cw72l8vdjea\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sxvl6rvgr4elvtntttd69vt2c849yx90tzu5aq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fkg3p6gl004xknqeqfx97tyxszzvd442z4n7ye\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wusfzl84jdzwc5l6y9e20msvlxu08xwejduaxx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lc09nrxk7jggv7wh0nlpth2k09s7z0q0vg6j43\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ax4tdnfx565caewe89q7y4pmjhsgw22rv2tk3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nxuenpkulvl5dej5fvew6wk97e3c88yplesa44\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zdzwgrcrun7qmllatq4sdk56zkkxn7wzyy9hzw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vyjsskq82x439pdwklcyr3kuh72c5xeds6h7ec\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18vzzn9dmaxfhxkrlqmnht53k8d38st6yxgyyar\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k8a0lpkjhrc84hqfz0tsljezp5zu6sc72cmwye\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vdeln5gzfum6v444mghx52f32dlr50x4jvs40t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pg3rd9jqhfp3c5fdet467wmysukc9npqrpdf2u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uudq355065f0esp3x99mffal337674ryna547c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13ekked354xjm9e3k6g24vxmvv9g6f3sy7eqs4w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mfj0qz0fpvgssw2lsh93e8yl96k0mad4qmr92l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12tx5kleezsl390y74a0czsvndku48dvz56nkcy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f2qs2stcutv7mjrsekgu97ld0mv3yl46z79zf8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pjgpvk35snhf35gmzktzehss8hzj52sk7v8quu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u0mzndr8pcp0ldcyx52pchtc5cheettd40en8k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wdcytgtdzayqz90y7qycmvpms3xu7sntg32n8m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t8xtwsnx87rmcvwvf8fw2jmjm6udaz05r5uvr5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1esupkf4gkd387vk47cwhszhqccrkulvl7x5smn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hv5zpmadursxxgr46er893r08h3u74h8ssdqcm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1red7se690dsyqqttqgu6fukmuedf5ma9xazjfs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19nmwgmpl35k6yunq9d6yf2sfd2522fx3rtldq9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ps2tua3k78kpq29s85np2utqjwpfnfr769k4fj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom132kzv0drasazwmywmjdgwlkxnuaa65f035d828\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lj9c4895pyczdm5ewe824qr73sy706ufvr3u8j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1huj8syflgp4wgrxe2kek99l54mmpjglf3qazhd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pgx4j7vgfesw5yuczdhm408y5as5kzpzt5pqh4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n06qj8xmrd0gjzq5qusy626skmvjvuccurm3pn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13x45389rvzzck2qnlrfsacn3w07d5rxwtln5vk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hhlezq55q0k9jnd8y5mkeqd48p9xf79xkm4sew\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1adnquteqdxv0n2hyu8hqmm54sa2m7kfqsjvfwn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c4nvwse3rpmuas9yqtwaen7cdpqq0qypc4vg0w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1elp7gt4jcy3nyc77gtkn3s5dl6tv8gsf8j4hsy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zzzesx85ney96p2r4a8yl28hgfagtnlad7x0xu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ef33gccdfefzt4qu549gp2lx62z7tzqw2rk7zh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14qufmlqatpag6crnz804sm66zg5asr5n5rquak\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12a5cwxpum4rc8amywdd5799fl7487n6hhnytt6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom133z95cvfe6zm95drzcu76cesazpz8cpnnacme5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ejekgvajj4kah3l2qxeuqsc4ge0g9s9gpspcn7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dpc2g89pw0xynnevfnfu3yv2xk74tyv2h0gtjg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16ut38h04e7wehjh72jck69skd2tzqnt2vf9nf5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yfefhc6xgyc8dja754xw7k6qquctu9eymzucqd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ad807pcpjplvssem34m3w333gxkfszkypaywqc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rp2tc3g43kjmj5k5rmupa5rx33gzpd7jvm54sq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dh70nt3he37g6a6ppfru3x3vtlaxzzumzyqfgh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vkjpyak5vuxqmh2mkklw0z9cyxdccn8h0g26eu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l8s9qvrqsvux42wujhpunuxpgc2rvyueyqqh3f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l73r60rqh608teuh7ntlm4j8lv5ddt4pujkk5h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sgtst4rd8zxlrjzt9ep37a9894fy95v9cjcmft\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k3j25up26wjvpuvtdyagp8u82lx4zv6r088ddx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v2jh6vpjfqnnhtmdr2gh6ggmjgj8qeq0z5k73d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zrch7j3jzyzfc4krgk0rt2ysx7mmv9a3ngrf4d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ltsge6cj96fz3hq3fthmkkyusrtgraqzgxknn0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lx6nnj049qk3fvappr7602cn46hrhcvrkamxay\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mvm0upuuhys405tuj3yk4emwpd3jp6v66t2ptm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t27snpyh9lhwkd7v5qgsyv75dnetm9uyde0y67\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gpxr2cxsuacvmyj3jdk465gcnt9zrt45med59t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1863jyasajs90z58jx3xwyh27t24s7w9zz8wpud\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m3h9f57wrh7rtfjxvmnj4dj6p2jscph48l0jjq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ycj9x2lw8dhf7cz8rchhkhnellq2a9ntypjhhu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rcxa3anuy6mntenpdh3kmzgt2ud66axuxv87dp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13adtcl0647z34gqaepj0xhfh32vav3fh0l4cvh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19pjdhdyd5qhm2xdp4z8pm3sqmqfxv3x8cf398u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14yesn3x6ws8z8wg8up70fn5ehluxsuv7prmdvp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom109m5s2eahdtc003rs7ythl39058kvf6c3wlqac\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18shkaw6upfar3hy50tjdgn8xcs4qmhwryd8cm0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zeq3ednsc380cgaty0cady475fxxamunqjr0qx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ws8zm5hw9tdg29lekr2wp6aewp5328qqgyuar0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z42hr083fwqzp7pqvu0th764m2xh7gjthlkpn5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gt3rrquajjlfztmmlnvhc0jrrlf6ftuttszjpg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lwty2eevdwn0des49xj30y36m0nl4pmxe8e2z7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10qkcxexsrvdcwky786gmz47yyl0gnp752qcjgl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15kl3huqd3pr3cpnjfaqq5ez6fgettngymw9y7h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19n8mwxawxh8kusfhyhqd83h3q6x79rdhp4dnnu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cn48cexxfd2sw9pe4nsxa97cg45y6z4zvm5tnd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lghgf783gv4zpm6qsh4d7wg5jx9c43k0vgvuzq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e0wcr4rrt747d0f9r0wulv93u7tz6hgpxqg3s9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gzl96wh9h7mf9cl3uk64sg28etp7xe3xllrkc8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1canzzjrahyhfaeexgx9rxu4xlf3sufz52cpkv3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lzn27zl5tpurehdxl4kdzhce8gjgf7h688c562\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15xnvrjlfj3kdjy2l6v9g7sqyxjd46vwhrvujsu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n2n9dtemhfc4034fcjwdjsu3u407la9mzsv05f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10zsr4kyzt9x9rhvv4dhk7mrw0pp7gryckkggt4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15w9fg5gjg22hjwp9k0jezsx4fs90xjfgynt67c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ltnkp70zar32cvucs95r7azddtzsdm3jd9m4kj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cmyzcmgqsyqdxn22d4lamgv7xm3nnprzfhsf0t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sl9tnk2tlvswd2cwcz7qcmks0m5ahxla3gs7t6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mk2e5zkzppkzttpdq9vz4r620gxx6lre732c40\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ryga6u8vfqc82609geavywlcafak9mmfdq59xt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12y4qk7v8xppmjygyqdqk9vlqra82wk3pdqzz6a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rsll65gumqax28nx23g9utglfwv0mkmc9fjmns\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l90ux9f2nh6l7j0qcs9cr7d78pnka28h8489rq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13g2khvhft04ma5gr26vm7vjvjqvyvhec2rvhg2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pvhcayvs8pye5ke86tvmw2yd4s5sftrcvp93j3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12r7ef469emrly5xm2e4qm8agmc4fjzry354265\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1272zwr2gw5phz5md73v24mvl0ars5mppskg95d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17a8j97ppqytuhctf4dkh4mszy2hr5fsy4uwlzp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16ff8vpqjptj3dcv5zx8zalxp4cskvskc2tywph\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z8k7y0dmasuppvg842zmy3qjz2cpvt9ersh0zt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qf3677tgxadzz59u3g5v2easav83kx5a06sshh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kvqcf62npl8psayn0zj8u5384g84qpfeqcds9x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yxp0d5uqky056kt9jewx9wsfhqzzjkww2m5seg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10j0ku495ccz5jqtje473etfxp2kzgx5w69jdsd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lf6jgjee9gc2szmv3eccvtmhus0aczwxu68tr5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yxrkavqllgpauke296q06tdxfgzk0t2pkq3n2m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d2vk45yqt5lwha0xy6vfu4cf7vcyn03nage6ww\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mkd9wd4edvye75kn6mxrmfm40pw835epy3ld94\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1el6lhqvs9peghr28uncqppmre0zx80q43u4ztr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nk5u4n685wdsut5hsges6whr00fv9jxp6lgvm5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1djunzwycl3ctlqy3x43qket07dqnf20e8pg57t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tg4e8uk630mjwu7wa6fs0zhnz5ds9w6v5zhtpr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n5av3ye4jmv3nzvm5kzykuppny3q5ja9pl9wpc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19fe2zw8svaj28udaarvk5n4pam6a3ym7232fct\n", + "\tamount: 1boot\n", + "\trecipient: bostrom148yjsyevtaxaqey3gq6e7uj8qa36zad2y52cq7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15nav2cp0wp2rx5xrrum8qcpdjdvg2g8vq9lsda\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pnap9pn2tnrxrjsle5p4446jvq05yg6cx5lyqe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17uvtxffr65lwzvq3hfaczx8k5vtp0gh7m94rdw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom156jljd0l0lzdmk4ctxh03hk73j2zfeqmftg2c8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p2hlp4s5wd037k2ydy56rkzu35je5y4vyf3p0u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w9u25qtrrk9sdpwlw79t4ezqfxgjcrms0l7dua\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vgexpyksz0lrfs80mu80rnn2axua024w6ermxv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18xgwweleqtd74esw2k8a7fv4ut5uekswdqeezm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1knkp24dhxpmtza4gfaugh5hzx7wqdwpcqu3kpx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uym0vjr8u3ulq678u4z6y5rmxpdda99x24a4g0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yvtud2gd3zycgfdamwcj806rsd2ruxsleru08w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rm3zmg0d9nsqtgpgn3wutp0cthyxjvmr3ld8rz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jvkkuwf3mqm349gmm7pstted7z38v5tg34yflm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eecc7029t5mg8an8hu4rjcmjmgw6fraqupw8rp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lnssksz8wu9snewwaqhn30cdqyjw2cgmajhzy8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z7zsg4l3t70u0l0q27xmj3k9kjm4q70gdantkz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kk2mgq4anvha64zj2v70kfrlkfyg2kka4eer9r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qyvjcl66jdeqjjglnsuhdlnh2et54597qds923\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yuxd9jhxj2q4qwku5rs9dmc3s7sdcaw9cucrlt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aql2jdv3z8q704l2t6wtaza094004m2latxjsu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18lctkqflqze9se4k9cyqe04jmhhc2mqwarh5sl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gv26y3ershdhk80jft742fryxgfxkvw2u7cqkm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gnyjl8p4kju72dzc9e3r3x0z634krxjzclvla8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e0punakkucg6fs3zfzt7kxa3l9ws2vnmsk7k3g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom152rkzjxxltryazsc7tlc7pkeqshguwhlcjvccz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10snmcmq5dcjwqt5tx9898e7yw9jqm4q257tewg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom130289ucmemaae94038mvnwkw2u0g8agj4twv0y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ryeer40h5kqamrppaelkl32wd7wqvxcnyzzlxs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t7nlfpu3ul0xu9l0zd2yhwln40jk7q5zhkqu23\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rv0ndmcktfpredfzx5sdnpkaw4kv3jf2r8kyy9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wc6fuczajc944fzff5smxmxarscluxv4sjjdre\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hy8923lntzzlffzqxwljc98xht2hjx5k9608ag\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xwc4pcrye5kfawl5h8x7c8srz7znyhctqapgnr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1whv7hwdvg04mrcwwef6zqvgj55d3hrwmqqvdll\n", + "\tamount: 1boot\n", + "\trecipient: bostrom196arr37vdpkegs36sst0wapeu09x2jrwsqf6nl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rndq2483s5xj8gucrc9wxpu553xcsdgqrartc7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rvl83armem27ldzyqtr0975v26xtvf6h79zxqu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k5sv92m2p4e25gth774v6tzd5z9z732samlp9q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qyt0p8z3u9ax5mv6ugpka0fqhat62z2gk2kq7z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c772gprpha0c0mn3kjnakm5s0t5xz0ql3lnkyw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jtqh20wypfl20axxs8fmm7wfp3tsfqr443qhgm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wrc86l5mwruxpn3jd0axp4aa2g67794vtvckyn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10878qvjnmx8877k79xmwnnwehznj5gccxkw4nu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xkpvlq2epd5myd0jjgghqaz65kdjngpdjmtgms\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eegfsvusxll6qzkmpq432ql6l7a4kmaxys4md3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ymja7x5ma6c5kzylq7mwnlrq4k90nqueau85qf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rmaxxl8f9cz2v3855gxrgv7vcjha6rgwft3q0d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1exergrwjnsc59pjylq5nq5l8gxva54530v057f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gdyvn0r7h2g87dr47uywjqr2ls5ac0yhpp7u84\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1av965mr6s99cmjh64dxaq6zjjklu5qzg00e8pc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1slx2cuzkrndjkryv5hmjer37zedkkl4ly54p6y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qw0nxhken97l2gcnzufachp075722k8mlvqffm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d957e45r6787r7gl94hj88wzdszfcpz802hnyf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wrz9dv5vmt85kr6gqts4zpnxpmmsrd3ggg7q00\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1263htm4usq57gaqgyv87mucxhwer6sjk9hfmus\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x9gnuqfs5fwz3wjssphv5vx3djnhlvvxmvym5m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16cn6v5q0zxkw37tqv0nug3sxdl2t3ejyy6x53v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15hu4ss4dkwcy2yvw7z08la0s0j2gl7u0d2j459\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pxxqjtc9vmlepja5v4l32649qnnsnmtg4pzxgf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n8tluw3cthfdued39qar32ut8m9rcp2fvcrtnr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ra8yxpyw4acp0tvmz090z6agmgtk5y5mp5630f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zz9et7c7n0r5ga72972zvnnu2lj44m3ss9a69j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13klcwndzccfplnww4shw6jwftmautl00wh9jae\n", + "\tamount: 1boot\n", + "\trecipient: bostrom183yhqdvqmvzmguvzqghvj8lxf2aajyta2wppr3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17tsf38fy353ak3lz5ta2faewswefru296t784v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d2nxh2sv3p5sy2097shzrdwvjwsultmax49zah\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xsh0z6f2qcjm8s79e7nhvpman6enacgw4uqrqh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13zvvt0zurjx9e0cw4gjwhhhx96zqg37m4k4nrv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pjpvc4nfjmwkfd7t05f408hr8y98nt4k6zjfag\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fpumhtym2yy0f8guted6hvxuqxslyuleyu4vyf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19ngkcyj60yx942zgsnm3ezywpk4jgak698hpet\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yjygzl72eengtatw5tlglpgxw6jnmdkzsnle4j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14m00xy5zg864fjy9w88demrd3y5lvdnefpyvhg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w4drvlekq4g65nwlf3v6w2p4umpxkvrk34y4g2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13yv7g6nvy8lpjetpwtt8rtqmhzwn9t7wc7aczw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d36gkttdrlwse06fzqye46udx4s05e2up7a38a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eat3lmkfd30am2zwzsanacuy80dluqjma02jy9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rvjtyz7xmrjk5csltdg7fwx5ew9pyxg6rtnxud\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ee2drzj2x0ukhxfvxexd0pkv4vel5j48f7z04a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17tx89xcyqhvkvael3hssvy8w7plwsdn8vpw40g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nyy9grysw7zr37jcqqvq59mand2ufe29de4rxk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l4cxtgxrahlxrnau5npu4yhnfyrnmdg5jrxjta\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ascat57j3z4utyy3jjr6d7nkm9kz4wq53e2s3a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13c80ka49qsg0lsm7zsv6uq3mt9ncaj6cznmcee\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pmtwzzsemwsr5nnwgegxa7452r9w9mmz9l5vxx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pfvph3helrq9nkhmt8jr7n76yw7ym3v7g8rw5r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t6fejvlnfxezqu3k7e5wtls63760fcrr4l8hlm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wmfnfa3dckue8rzectj3mwvn4tu8f4ksy0uz49\n", + "\tamount: 1boot\n", + "\trecipient: bostrom153shdlxkckq4rqzzvy7dv98sdkuvvjj0uk8xer\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qqlgcpp8vtrmwf2h26r6vwladsqlyp0e3z355q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1png54rm48dslkqcpshlt5hlyk6ltg4jhynasuq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j7jtuvzvmr4ny7ptepk7kfzxyarph5wmgdsrtl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jdelca68u68nzh2vvcmz0d4wgrlxt6j800uf6h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kcfxzezjswl59lrvuh8ue5erp0lc8z6g4hzuw9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xjme8f7j48lqe92kf7zr4n5lety0nysy22v86t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17pz3k0j896c3uk4u2f0s38m52atl80fxw76lh4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yzkts87l5pavkpgu8pufaexkqsflnll427ruvq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r9vljtq3elx4rcuy7j2t7u2k3y80gnrmty6vw9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h7q4ga3pvkzwjq4t33wnsel6ufq5490ymkpcqf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y9w8asyqfrdh2a6444q2setcyf5rjupj7fgfqm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14rrrzyfapqxcjkkde43v8euecalwcsqgjr2wj8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q5ccszy2ah3kr4duagz3fcexpxhreuanwf7y0x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p48v93pt6x3v55q8tmc6m0zz89x4mv8zrkw0ke\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ncddg6ug3z9nurnvxs68yes7jpkkdf64r0gxw9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cqrr48fuh7a0lvfkvpt64ew8qtyf6wdp3p3sa4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tp2r22hgtjaddj58ru6nqq3aa2jdv9ulglw7ps\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ffyxtwy5auxheqa4zsf355ccpk9mxgt5384lrx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gvtm8jmja2p986qc3zdpl283n8rxz5ajx308ry\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17f6j0cpkpsu4kq4u3309xayngjc5jwpjw6cqfg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17vwh3hamtymwk7wfzfah425sjhwgndy9x24z5c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xs6j4c2ty4ewdxs6wmuw38z74hgxnq6xq5s2gn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13fkzzn589ylsml8sggefzn6sfhxtspxgg8jxaa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rs5ma0lf343n0d2wdpt42v3wqnenrd6cdxkhxf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x4dpwdk82pzcg5n6phav47slfcymv4a5f5vyll\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17zv64shm4lwdlqnmx53yjv90ywv8eutvrahvld\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17flwgp3d9apaaf7q8tn4pylv73v5glv5clkz0v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12gn059recljdtxl4rlvn7873r0687qvwcd563p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1caw8zz782598l8t8gwqwk33cnsz3caqltun63t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p4q9avu6gnm7vdpjhe24zglufxg8enenmsy4jv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom145836y7hja9cncgs46spy6xzefvl87h6gh0tmz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yel27hz29t99fcc9zt20a6he6qfx74hrap68x6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zwzuwp2pd737jk4deptsfv6l04r02av43ymgem\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dvnskpwrurfl7zhnhv6z8dp4pwv7yjwqrr9r9x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom124ghrls84red03cxkqddw0r8r9gdwaml22ee8j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vy6re6hce6jm393j3srg67dvefzeaxck94frr8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1he4q77h7xmrp06uusdy8ml3tyh9s4v896t7c7q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1atmwph4vdk35npt4kagup64ntppe4puwcus2kh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mhc863res2rp9wxmedffr8gqyqqj08v0l67nvm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x598fcfkucz8wwak6yg7mxvmpan4rjp7h7ewyq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qx63pxw5qzc0t92rtakr6ljyg9ge9vz4cnrsgz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19xlqckcfejgqpvrhtmjgctt08s0p3l7xv3aaww\n", + "\tamount: 1boot\n", + "\trecipient: bostrom168ls65gxjl29pwuyyx3gced4njymv3vdfre5nn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rkfqct4ter3sf2yxxx5suhkgzy4nqwgkuhezx8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g7n376gyl2a0jlmlmjsla9ntq0a94rg075m25h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ulthpdsy8urseckn307vtgrln6l6p5tysmu37t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yzwzqjs9g4rwv3qguf2ml8gsj5x9qgywqxdkx6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jgetn5srmpjpj5q9n8gru3unhn48w2sv98qlka\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18jmx20hum6xj08crz9pnmuh83lyf60he03chha\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13y9ld8qkhvwas0cyn3p8pf5uutl4dr99lxafun\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15ksh3m2zznc9xqvfnsctzkh6sxx7lp4jst9sfw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ldwhwkchu3detzr0c8krz3a5x67wgmh5hpldh0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aj4n8fzd3t6zeev3gk9fw02sth0jslsqkly7dl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h58ae2yurf7ud5ks3p9v27qc823nm3agj3d7dh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yzhymlt448me2qnacd6069gjay9hudflkexulu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rv6nc70ute7l7ae6xrrfw3cfudxhkkclkjlzgm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n7px7k4aeyv72kymw4h2r9hnet5f6rvv96w50p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gg5p9r6gqyxx2cfaalytmt34ke8cs95k97u60y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1suh8jh3scj9q57ryelutzm2mk4x2ph2uarcej7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15u3tsczecjfyk8c9xwalx976h3anvw6url4d0a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ph7zufdg9j69ys3sjv6y6wt57aaktn84pstdfg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k3dgc96l9frv60wc228exfph0647zpdrq8pnut\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fp4frdj8ghsxddx3l9v3vpfgut7ja8f67s4dmt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mfmzyy8a6kp2yp0d7h9xeq4swlmp599c8yw8gf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nwm3m9ralaudmtsum6utrfj8gz8z22ews9mme4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u5zqu60sc66vwzv96f5v7cexz93ejj87wztl6r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18u53mr0vp0pp674jdl3x6exdv3knn2pt20mnsu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1586nk9mpr5nzvnkehra8jsutvpen8pqau7f7re\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10wundhk9hrq46lj6dky3fkghnnr6jn4efkxjyx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hvzyvpfjdtwwzpqhu7mskct2utxqd4t7r7dqu8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ghtn8pu4w6zp9upmj6p5c4epg2442ltgrtxysg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rtfpahnnv0n7q5ke46vsr9dkrrrymvmcqutty6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19lek9havtt8cgmmjfxh2kqmexy2tvul3msdtag\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wvh7ay5xxtc4a0k9t5rk5z5svk0kdsh0zcrs8p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a9ynmx23rk7wxvya2r5flrm7x3ygdmlecfjg4k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19yd4vl3fyre0zuyxqe0s73ljs6j07l2f6ytw55\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d7dlcx0rk8ta8u7dqh5ev4unkg9wvj5wwdhrrc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jqt0537ezrmyc86avjl4pnrtmtze25xj2smjgh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c6w6k242c3vnu52sqffungud6l4prlskv039pa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jngp0enkeq6my9j5qltkz7r2gad23uthhqmxeh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kttv6q2swxqglzfle0f8dugu28evdramef7dpj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pdk7qqmrkrfq2fn2k7740fy9culyp874qlx4h6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jqz98wyv6zahnjnyq8yyvqnhsc54y8wt7ytjtm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16exzpafaghdhdxvz2hmkvv3clzu9my9jr38tv7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1afaeqe33dh6errx5mjkgjq0zxkd26j43nsze9p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aqfuzvmrr3aaacq5j85ckj3d8pcr5v6lynny5j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q0rkaf9es0m6l4a706a5kzpla8ydmjamp08eg5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1de753cdsqrfzt6xaj9l49tq0hftg777fgjau3j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ttgrdeql2c4rfp438tdhxlsn0fctrkr5yj93jp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10kqyvgu9nmavledpxz0dyl6xngffazacej435s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom106r5hg0vgl7r0qw9qwjy4xkhwmfq99tqv3g2fr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hjtx9m6574knhuagvqq693rjrm9hekypmkx3zw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z55sx5azkudsu8s0u08k6euaq3s7x7fv28l9s0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r3hmj9vf4xpq8ax7vldgxty3qv288muy8pllm3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s2arqqdg5a90gmns4t3ha43l5r2luza46g03ay\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w932zxzuzp52qvf7twffp9a0ntnve7yk97usup\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lg3uyzlx3rj7ruhc3gu7yzmdya9z5azv5pl058\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wz8v33fxdjecn2y39x6nqkjrpnz349f46rea5e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lrn69tej5nh2x4s9r9tzjhjl2l499fa8785kvy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom152pr0x9f9wfp3usguulm4n0gerekr95rpy7fq4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cvq3r8lrws9msqr5hr3rn8m43xvp2hdygf7d0n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vfqx7zxcl2s6tpa0sc9xl52hfdknhkek0zrd8u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l6udntq36grf20uygj3pxajvp7yusej5r69ylj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zk6shgm92yk8yexjeh48qclk4redknc8fy4azq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13nm6e2ln9p38jpjxrj3d8q2ch3urflwspcjezy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19ygcygl49az0ru68lhfpg345j25zrapnxj3hg2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fa4upw7gf6ul8avpfhfvv0jg5xktagrgq8gzen\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19508ffym49xtcwsz6u2ldj6xd7xdnaknayc4fu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nhmfha4xwszukn2u7c6cd87fnauqtsa09sc8cg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom129w2sh44tsw6sxk5d0h49hc3m99pzftxej9afg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16302hu2dg2xjy5xa5yjxp8j09xzztxh62xeehq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10y9jczg354mwvgcgvjxr36rzykr3vnpshhrakt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zpz8ey8v68xlfy56h27ea3r2cgy3c4gyuxpzvm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10gtkzrzgwsdgcwz85gs4jggqtq698g6mapvlrf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yzgurzc5cvpa4dxmxxtp7wu32m4rurp8hsn9aq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1csea06lmljug5v8przsujr0y069ap05a9ezfap\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1827ttnrfdnalsnpqvwlqgkvrf00xya2g9tx5de\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19m3fxeuve3rafj8cl2cr838wmauvknjrlnsg6e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x5pnz7sjm7leg2mcm0fu7w6psm9g8ng0cnf60w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uezwwg77n6pm2vfwac9qsxurrfm489u6e7qgaa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom180dtwgd4tkvgda4jdg0qsg3yre4zq992j0e3qz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18juvm0akzgj0dt2v0fnnv6u88ye4h5wm889gyf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w3z6wqu55gmtmvpaqnp53ymvjvyezaqlazwgug\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15hu8fjcef2tk4ytw0cu0va2kgmam26rh4wh8p6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18d5fvvuqz8et85lwguufwjykalnxyef5r4pm5l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13hm8uqysw7j6yq9cqlx0zea0yhmcucd0496sn7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14kpejxfh4phfhm5tq6m6ezktfa2w2ukq9trmra\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16ax8kxhjnjtmem9rty7lec5xjvu6u384ne7uze\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cjv5epft46zc2q6tvxumpndstem9w5cyagy5eq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ja48grh4r8ugysyuqvl04edyyrtml0n5vwqs6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k2d5j6jttke7pzjy3aqnl909f96lke8p6uqt0q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ngnxthqerlvjeqg7ynl7mxqgl6y8a69348xgmw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nh6guse54687tvwn4drgu0n7avse6hlefq8naq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gkj3p2yuwlh9gj0zc3ussp30faxvz5vwxnlq9u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gld5tp060m2mcfd8zp78t626558ekp7hrprcuw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ch3m28ln5kch7afevydqyl2zdqexv5xvjrafcq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mccnzyn9wapyl0t7mqt7npuq7khvqtpl728y9s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom133d3hmrly7a0dvx2j5u5gv5kwkcw4d76ghrwgp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ctgfyenf9pfy2zz7hvkjwzpgfyh088qwmyqhf5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cdf3875zusnwu95dsu09a9ahez56g6xcz625d9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rk7e4d4ggk8hz55k2fdslsmxac8lm6enx4g2dk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s8kqj6074x54hu6dtwmw8rhnqpqncjy26r07ma\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ssqz5c5y0wyh03cd9u5e3cxac3m55dqva7vrh2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hhqylnfvw9j39a9xsmq2yexy7ps9wd875cd6al\n", + "\tamount: 1boot\n", + "\trecipient: bostrom184zw5t6yh2qf8g7sj5nn58wun79newd6rhnrjl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hd2kndfelvkav5gr8ftuncs9hu2dztwd7245c9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom100x0v0mqlmc7pzhd5028jqsdtuc2s7x6tjq79d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n7j5qp9yg52u2wpq2cjcfu2lkmjlw5g90asmvl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fmprp74gpyusky9xhwqxqexyq985w5z3uh9zms\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s23g7yplcz55p92g8xd4hce4qas3n2dcxdpsu3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19j3g8wrpkgwur24ftwrknesmanapjax9we7qn7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j3lquel2264yrle6vzkjljmqv2yv890j4zn8w2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ks4vj2yvx8vetxs69g4hpu0mhg8y3wfjun3cx7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15amxqxhxdydqxjqgytlwwvj3t2fsu5gd9xwjwk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gnu25zshmzk5k0mg98fkduvva9xzkzjg4wvn7l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z0a86fn3sx2keeay0yrp4pa9hj44yaunn0f6vq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q2ax0058jktj4fhaux953cch86xy6gc7jegv2n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14eluumf8clc9eu9jx790zhr96tvtv0f4d640jf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uaathhmtr5g3euk9d0zu26jwuka9nvqc7kaw20\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uml7z9lyulujgthn76hw6xr8mfynlmm2qzht8v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rq358dmvfjd49zq9rtg07su2tzpr0g8wd06rjx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jux0l38zhkarhj3zu27ulahm4rjrhxng9q0uf7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p5gnl3guvs8pm6yyeaav87xezg5xlnpg832484\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a9yxrfqvwpws3jnsjs0ylg0l8qhhxupelj8vzm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wqjjchvmupxcmqgq98yqu3s66ndhk3fkt29cm5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10nz2c8mcra3zhk28gvawv3v30h4wzyfekjmqwt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qa9nc8wde7glu736ea65upz7lnxwpqaq73nxqm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q6zq3hx8djgxuv8lkgy2l8e2jkwep96upt2pgd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u508yx46lyulnawc0d3839ur8tsnsaqvt7l3c8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eewuy8malwuylz5rn7cclfpsce32hpaz7r7rsn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wc8hk5pzf4r7ndvwldnkedewn0jj6xmqw2txk2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom147squjzjk9d3sxyrkvl7txa07q56fahn494te7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k4fa0h2qdwstpjhx6yfdfds4etmvtyu0hpf24a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1udvw8ygzg6s7xn2ne0xf54txhv773te8047whs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1djy2l5uny3qfs40tym2zq28lwku56vdrglz9j0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yx2p9afwr9yw5uq3dt2y4d73sz9chre657twqd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gw3xswcqcsyzlahtgp8tms9ynhx8mp0jtxg47c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12rp4qdvhqk8k0gvvsyqzdzvwpcdku2pjcwahg8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1306923aatalvyl2ryngvm43ut3c0h7qkwkp0d7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1usfnlq7xeyk3f6mdrslkcgurddlf2uy3g978dl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pns5ln7sj6qx99540nl6ty335p4xssqn2hx4y3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z50y7pw6mwkp74fvujne92cnkkwpd0nv2hgw27\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xfxz9p6nwz853367j82lz5dkveht4mqdm8dd3q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom150mu8jtt8cmzgekrv8yy9axpp6gk563un4q759\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fn58rdscdmtfprredcnuqupq5qqllj250jde79\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c7f7c37rmgv8qlxpx58quc7t3tgj849435vjz2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w4ulcj6nfw8q0wkdyynhy3wxpasxsha7plhdlv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xufh63t6uwpmjax5r28jc5ng53x7vwjjdne65s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1akz5990rrs23g54fxlv9wgpeq85sye7uvqd7g4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f5qmhuae9ufqdclsmc2qfm87x0mnjg9rmwhnek\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wmyx62jsn4fju557k9utj5l9p6jgmj9ne0frp7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x5zexspgdjuamz4v4a2s5qnvju8jn7u5k0ynlz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s7sdqaujt7lf78xp0hxyxt4mtvp5yer2q330nm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dwdckxqr4t6ccuz5hv5d5wt43gg7wx2td50q8x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u2axhhfh9zt09m38d2daapau3vg22lejgdfk3v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom130y7ek0wfs2efyneptyte0ntjsn2fyxym8thm8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d3daas0kc8chey5mjvr3gzuegnw6nnghmgpwpp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qn6h3p87rkewktylguc3hlw3wjupu0tzl9nwcp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15dgr3zs2cl6fvdq57n6kqzrcmcca7z6fvnechx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k8yr06ve2v9k7jchjjxhhrvay50l8e2dzhyywc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l5n205g9dcggdc6ntlyajuve2nghwh8pecr4v4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12mx2secz6fdwz9c6d3hul6ckafgepuqx0tvyj3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d36chghzzqnwhe6ye7ewnj4hxp3hn57pjuqzjn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10vaz23ujjv4q39pf4snehne2eemjsuttm3ggv7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uhy3ju5mvyszs65nzmr4lych6a2r7ymn0py4m7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17m9ghgm8m9djc279dwl945r5lynwjsyy752y4s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ax0l3dxpgp0sgq0z8t0qpddparf8tkqp7mhf5m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eta8yfu8ugqw0psre00xwkn44fxkxd0hpfr0fe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ya38u8l3pfnrve246wms90959vzr8scsc2qwf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z8nccpnz7kxaejsa2ur8qkzgt2rj2zkqa7m500\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ng5hfk8ekr4gec6ysq94hn0jq98zfzfxy0hmj4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10ul4hj8ruxsllmtacuvx0g7ex0z3lm4asc3wjp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ynsv60j2ha98xx90czjsq5t3ktvwx0ryxsqs58\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mjnp2lmaamjfeex76yfdj0g47mfxsnxw6v9fh2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wq0r2hv3vuwfmg7ztaudg6fadsdvfuxpmzmuum\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19jrrjh7vfvcjsejaf2a7nz5ma74uyszzl5nw7y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c2ecxdkwd0aq7g6ae079g6mqayjnmv0hk3ae4n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17f03k06ljf2z6t30kxqrjwuvqlj9lm77zgn47t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom105zq3ak0nxaj28fxlrym8j2dxv9zk2utu5aj80\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a42umar69mpk5ywhmq26wm4qfhmkw8dh4rejwg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13af0qehfnh3q6hls77jq9qdkhjgez2ajdyapdz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cw3tw7xdglnyk2kmm86vvqpqla28j8xp9pap3y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom172ntp6a98f8rntwqaady7240uk49tf7uer8r4h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1glyuupx0fudpjq5d26v600tw26gez5awltkmty\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u06dqvyktywqv03g243gs9gdqf4vmt5lnvth5a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hcx8f644wn5dsx8qksy4zeanma5r53vckapjlh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom195m54v3x7yp90q3r38qmuf9d6v5dkhhjutd9hj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1252q2pda6nw3e0yw07muh8snqxa9nw094g7gwf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e95d5rlstm6knyva9f5knyycarhlmfy8jmvy2f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rgxy79v8dw9sywxtu4zr04mhxxg72h6vgshngg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mfwa5an7aekyr0qktpq85q7lamdu792lx4206f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nslz4gc8z4gznhdw0aajzehjv3j02rz7j85hlf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16elkp7re55zdp9ulv7etqemp648vl8vhsmcjj6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14hv98p0dlfz86282huqhjhxdv2keacn7wdq4sd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15g86ngw0ue7y7r9kx8g6mylehcna3kx0suwvtj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nu35zgs57sgt74cuj72yr04an299ytutyvddum\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ljzypf35u983tcgzeldxyjy82zgwxcjm5p65vx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19afdrc6f6an9zu632tehwnq4uta96zkkyt4d4t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12axvgl38dmpvx6t5gdxas3kcnp7eqsn8q5v0he\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hgu2sftchr7pz76xdr3eavlz8clqtl4dmrl62k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t7jl3t0chamgyv3c3qgfkgu26358ve6kva65gy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wa3920az2j4p0d3gqlznnft9akl3chw02rv2mp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1txa8llmcx57hsfuxy08ej7aay8pk0tm600q2ld\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a4hk6lgw3wtdkaatycy73fd7nw7s5c77narjdf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qfe96027kc2tnuvwspuwdx4p3sxcwzseu5atzh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f385nxfugtvljnnsmc8d7zufpld790ajnvuaqf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eseer0q2df2dte2erq7vfun5tt4xjtlkrmn2hj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1seqg6rg3dh5wqj3u8364svnehm5j6xt5ml0wfj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17sp99qljgcc5sapv02krdnwgzmqclru45lxza0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jr3l45lkqq0x0jpr74y6mhd6md8zpaaqafjgpv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ax2dgjukvua8wyzrrctgdyrktx90f9daqznw0r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m77qd7cwp995pku2ld9x7cuj94mx5zp9kf2666\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15ecleart6k66h7aul7uchgwm8pttxceurw8z3m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hvxm8h705wfuxn0gefgewzrpq8mfwdxyek5mtm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xvrkhggvdeewakrs4tmsh50yr67t9sa0nxy7kt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tvukjxlc8urj83fqa00vh7ac37fc43yf4ac8n2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nwmskjvvnxphz6nljjh9e2e35f2e7p7rxmw9zy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zxfcu9vu5a3fgy25zpuqrus9tqzfazqd76tuer\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hnrulvwr609gxxgtv6e7xa2u6kcgga826al9da\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dsqe8988yssvxl3r78xs5ptevc3wgwmugr8vsl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uhcxuvv7dcrwarh6szy8e94vsmxvnfamulujkv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12c96k3np8uy8zjy3w78fzfksvs3pp38erjqmx7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom194vkw8h4azautk5q5vvajl76pvpezmw3qz4ftq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1er2ysyxkcklq0wg3klf0myp0fvq7z6yulgqqpg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom158p4llggzkhya5c9uane4vexqfj0h8rtknvpuw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18r2de233t53wmyjwmu9vkjtn5mh0qzdd98zfe6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sl6geynchv868junjepu3mjew2a3lc5sceyzrn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wz5ca69yyaykh0zpkxx9zlmwz90f589lu9gghc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lnrmld6n5wvt5ew64myp80hvy96yuymshk2t7m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1twsywg8vk6xgzmzsd3kr24z3dx9v5czw4e8pmm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rr882vtffxthtj4v56hwe7qujsxcseefg7jtam\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kfazpp7r8txnfadl80wm5cxszgvqaxjp2yaeyd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kvpvy3e9ywjnmw2wnr9r8g4k372gaack90a3lm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tw2pvj7e94cphz3qchke6w5j6vpsu6hspt9z0g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17m6jaul56s6n7phes0gkm9t8zel0e5vf6f55h6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kmfh0aw3dywq5qxnetyslrv0rgfs5nh22ch8vl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n8cte7et2ypgypkeltae24x96f2yh4h6hhhye9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pl23mjkc7khy2azmy8hxvjqqzhhkwd9ew393hw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z98wluzyv3kl4a2lw48jg9j239699cxylaprtv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18r64ldsyrgd8hel0pw8xaz9ugefnd7t8y2w7l0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hj6vx8z02f6wa9tdypdetwh38ry4ke7na6lcr2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lwkl9znu4g0qq6s0rmdxzt4cskrpazevs4lynr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19l5sd43qxl6wq9cz0qjc2rrzcmu82l9lte7p4y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom183fg46tade68t7p77yn4zry4gurtsjuraxfdw4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gwnlulu8392uvwcdsfeythm46kqrphqz6094r9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zh5jp54cgum7amzuhjxjy0gs9y6ekg5en79srf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m5wgk8a8wtu86ek8f94tahcstdpzlq4pj673y6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z3p97l3ezu6jmfq0keyrxen5zlu2v8qfl6epq2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fnu5cnftc2c80hxgsfz7rk0muc7n8w0g4av2gp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h8n5gsmn5fy88thnn00tqmxfl55whm49k5c2gw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16k965hsaqnltlqnusln5u8g8483xz9ca6ux6yw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hve6c25ajcthysu9kz0u2duyzd4gpf5sw5gvh4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lwpjmf0u7n86cxw0f3wv3fjq9a7rqxeq8fxydj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13pv2434qt9ez2uqwdggx8agujuk696jynj6le6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18hhw6nfwjn4n09fcd70weyv7zm4stm5xw6jvwe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13zpnfzu4xgxtlxyeex52a387c6d7pg64mpptk0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1taaar7fsp4wlz40szl02z9jluluhhg5txy4zqv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16t5w7q32m7k9zjwaxrefknjlr4w0llfpclutx7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gnpk2gnw75hrewnjw9vw6qxcyr0tkdrtha438f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pt767plvxgxkdxlq6tultkn4ghewpu26ccj3ae\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pspcsc8ktyeezzrt7y4gc4aa4g4uyeyh5k9zz3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aagxzrs5sdwpzv7y4l7csxnzcftky22m2e7me4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1270dznuxukmwldm5y9qs0k37fqmwvhgldhvf36\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nrw8mdgxwkjq70jcd8qlq3w2dgl07886f7lfq5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom149e9hzvmhr2cn4gnqxaz07h7rqf85f4qe2y6zl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom187fh40fpvuft2lxt7maea79hqlg77umk04aces\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d2v5hp544300ydqeadx3nrdfn0zmuxk6zqgm8q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom109kpv2eapwldu5vdjfe9x4dknul79z6j0pjztd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q55j8m8249dgcmstmh9x7vaysjvuaqda2m7y4n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13r0v52gujksfcq2zra63takypemfx2dg5xn5ed\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yq3d9hsgankr0njdartuv3vr780yg88dsk0xc8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r0qlnghtuj65kt220vjjeknl4vu2827rfa33p2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z747yem8ndw5hkgu0c48t6k4gle20gq89pfwaa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15l5ynjwnf5vhfzjqx2u0ja787psl6ytwf6xmyl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1le2zw5u5rckpn8apwg6l3yu374ltjz3sts63ej\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1htmclu8cx3dw2pmz9a22nwm8xtmelcursrhjjr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lccxp00cskjkzr2njtw4pajja89hxh3cxmm329\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n5qjt5xx45x8qmmxawf9qy7xevr9pnamqds4c2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16hghws8nqqheqv2j34ctpsp4a7kv6wmjrckjcv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x52zv3zxfcsk5vfgplu8cer3thy8a0kjl75l2x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hmw48qn3usz5jqsx3v3scacdl6qszafw46dh33\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c8ltyd9mwgw02ljq6e73yhvwdd8vhmhagzy7ty\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wnrdz00q83a804aflxq2syejhp4gd3sncu55cx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w2w6z4fen6y46xxpglxz7rf4tk0f98zxv953un\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u3c3t2dmukr8v0earp78c33hpm6frt20gz9krf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dw5gvw2znmpn2dzm7847yrsrcfv3fxfhfxr2l5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hty2hzwt8uk057p3gc3zdskvt5qpmvcxsh4r0d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qa906vq70gf26aalhkc6ky32zttc9q6xaafh5a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom163euvcrmrpq4u2sgs9en5puyazch7tm33plp92\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vxq9y87hr4a4kqhn37y3zhjdnjtjwnzh7ycmyj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n5tvmq0mjq28ldhplwx9uj8asqav3kdqup26jf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sk5rzappl90hes5kyyruqrrgpkq6y5j982jsfx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a40vz6ryf3tprzxa7andajphf0kdvy73w2523l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k8xgyhenw3069mkp0qlmm26hs8c3s99ker9f5w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ek0sdnv86m9hne9g805ldhv63fr879z9ry6j8u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14p8y3tumsvm0xmhx9f5565zc83ksv2nvtzt68r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hhvxsz30r3qery449x9p8muxfcep2fh0capksj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16jactzz062ljndpx8w7kcr5p8kru68y6cmzekx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rqp2s9ctwr5ecp68etp3vgg73v7w8dhumgqwus\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16tc25mskkukxlu40m3twlxx2c2prdvlq7jqaux\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tlxepn4ekapvmaqx3zj2n4pjp65zjcspk25n6e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1689nqy43u6zzer77armmu9syrzcy3vmqt7drkn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pl6fxlfa2493edmeef5z6upspl2t8pm53gwg6j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pn39dy7v3g3ej2zastqqx5tvp3yfn7rfgul30d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qnyzxz6jf3d9k4qr8l8nhlq3d7tcf90fr7de0e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ykhypxnmklmxj80z6rkjr092kcn4hxmqnfx9f5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nh9mmag4svhx052r7744k69txzyqrypj9f8xk7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16w9z3klshzxdmmejlwnlqjsxq4h7tuseycyc3w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zyf3s6c0asag4a0p7dfxe2wc37e0654vnuh92z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1znd0lyxr9pmn8gk2nmfqzf9fwkrv5audlgn86t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ld0ldqyql2x80fju0u07s5nxuxunrpey5cn6aq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c22frcfqxg3rc6nlf575aeks5adn300jwstnzw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ehr45fwxja4j5aeltlfpfjasxltz66xmxx23wq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ezfcypqgt7mcgyfqpl6zdnxcfanf8r2v5pklxw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1epdpeeqwcwjw6apr9unj3vvfagjdag6mu4j8hh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kukr2tfgup0haemgw4wev9k8fc42jvkmhjtctv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom192989dgun24403r4ug7fvre5758fkxv8qp776m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17s7un6flln4mqw8gh58kcr3s0j8qy9gth6mdta\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sp7trm678m7fp26kdga72vgyuvcuvq3cjdmykq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vrwlgwpumy48ygn9n0u86wc3vrd834u7z5yqd3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gceqa7838eeflmy0reywjwc0r4y03u2lkwn5vr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rqcnk27uh3uzajp3g3pye2g7p26smyqnu0qwp8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rmlcsa5ljhsqrmedqzd5gdy2qa5z87q0amlhu7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jd56hz2z2wy283ywf2fynnpyn7rqcqf8qq2rgk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ut48eym8n9f5ral5mk6hdhjgxh96hkwjj27ejm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sefkewd7yjnayc6asv9dzf6wcx37jkcru2llg3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a4jqwt9jag0sv9sdgv08k2usv0vyeudwfefkas\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x8zf8dch0qe9shlrud6wwgllpr9aqfzfll48ht\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tcu8u7f4exml5ws3xmm77flfr5ysk55ratywka\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qdcrt85sjjklnt7yl7lujr6jr3k47dy7nk0pj2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kqcj3wf4rd4vyjykhfwgc8kzjd42pqt5qr03tc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q2s73vjr5ld3kf7w2hny2kqthj06elaccwdnt2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d294aj94vd7fwfjl7rj56edfkrdwp8q7clpvsw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wq2fq7550egvxpmjqq4nd6qpqgqrf62tw8xx32\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dd90687zeqymgdpntrqrm75ux067lzq93kcxuf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uz8c9f9ymnw5quxwcq27vxlpspuqq0e8mqlnkd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cwxd5gqjtml42ysdumzrp8f44lrnvlvdsuku2r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom137dyn6lravnwrvp0xdarjpp3shs9eq9qayqrsj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17wsucxdknweka82d2gat0226zng3ecj5ewyznc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13h8exd4ssfpnsl3lsuwzvpn4fm4c8lsxrlt497\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w65z68mrj90k22tyfgxn9gq0uaw5yseehx6rm9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ewn92s68uaw3p2pxgvewp2hlm7rqupvtjnng6y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14u79amxfg52efqsmgmya5az45th2ke6h9nwcvd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rdgd7lzq2vp6cksxmyym42x9dw7pqkwa2x7vpx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m5n49zvpjmmtsgay3u0kd252007jwp7clwjrxc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15yk89rxy67zeskvr3ymq0ujkrx5lhy53d9s449\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a5m8zz8v903akelndpazkqdu0975e8yrrsn7w7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14qyvmxkzgt6y0gv04r5w5avq0m2ejr84hclxm2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1va2hlrht4w22e49ge59zvur7j7pdv0z73z3yvn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pkxnqde9gzuycm8u6wftl74rprgxa5svct80mz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pay43f7gwje57d56ewyzjrvg0gs5fzrjludtz3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z6tm06hwxqldg6j455tepqjz4nvrktengx4gc4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xtry5m4ntucu3zpc9y4kskttt43kzlewkylyfs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ut4vqupek9ya6907kfc4k86sul6xnm5y70s0sa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a0rclkxqknqj4pc6872rth99yyw3px5kgx2mv6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k5ezayyv45fshxuekmr7erk664z2wa7t7v5hdx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r4nhckpyk5fpk4hnvvtx47wg0mznqpj5kfjw5n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15wshxjqt3zy3m0muxf6gll3pjsgnnnsgc4qaex\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19jk6d5jkrc3k9yck02z3d5ug9ezj576lp485k9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r0j3spku6m45ueyac7se5a2dr2qfztwrjrz8v8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13d634j7nzc3qq2lly9wtmldz66pkrw4cnec75l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18rfg7r82hckclmfce2lgz9qv0yurqtxpnfcjtl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tya8kn5d8u7ndwary6djm9k7fjljhfghrq8525\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tw6pksuktay4cpwj0j9xwu4dv996z4ulyvh9eh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ng573t0mdqhufkfe9hw4gypavdjudecukhw7g7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16sps06qur4gktqthhe6glywj3m40djjeefzvsy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jh9l0sumr3fulpyh5c7hn4rq2uj9dpv9tc7ple\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s72wt3lwdvdkrn74q4uu84zwt0ykukwuderwum\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r895jfagyeyqu7jxxz90t3rfhqqtmtjud4acyy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m83hk5syetahgc0549trxcqecpcj0dglms2vhk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wasws7fvtf2ncv9cxqqp9u78ys6029733se78g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y3dey0f54x6g53dtgtlfrhvqacvpmmycapqwn2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f9e4vrcxysj6g8xk94pzgx5v5ljxyrk65xzs5n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ktp3zgtf5fmxyc928ydvwgkt8mekkn4hwk4wrk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1maez3a26d792yvsskk569n7dxdc6xz4cergn5n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h8mw9l2y7xzu5e5yg2e6eyw7vmmn657ewf59r7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g4amj4fwe0h9707he8gpp06e0ccrplydef3w4x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ahfpl4z6458uj633le5wfywjj04q4y29xcf8ve\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lphhr6phdv0s8xl697jn3k96d5m4q4fjl0ec0k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s4zu2runz5wrveh56q9zd6txrm644r8xwu6c3e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r7p4mgwsxddkgq5s8ladtfapupetjl8483sc0d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ensep7runynht2atdwlss6crnty6l9wfmjglp5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jpumajy0pu4u9q6exr6fw579kt2gpfxqtg3l7u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zzm9c009ngrcyawhwft7qwky9emul4ywsjg82s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wuv8z8ntgrffuyeqlpj3xk9xy0fkupynvkmj59\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kgc327fmq497qcz033w5au7340hznhhtanf53y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xlplr27jfkm5gshc3nzuzfcu5w99x682698g0k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ked9k8qy6q63g3fa6urh7z5kl9vxfwmekpcj5p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fa8uyq5mfag090t2rh7tyquxp28wp0mh7qzd85\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ljrs2jjesp9r2pc4lm2rpy62rn3md69m28f9g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17gt2kyd9shmdwxpvk0wjhvnvmdxsge972nkaep\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pnvfx8rv3xnhs3qqs904ffs5pggh5g9f0pp980\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gchhn3nyaemnygaugmmt7ad6cgs5n6ayswulrn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kjh3mvr2anxvt6p4hw7zqdczud06zmtk3fd5e5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10ax2tzudhd5hy3ggmtrdhx5sve5fatjmgyvqen\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tegw6mt90x6c7xxt00vfsc8dtc5wy93u66a5lf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kdh2wdln3fmsr90ctdkuspdlkp79h7plgn8x40\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15fav0dz94gquve0sp7ph7qcg39z98j47c8mdfd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ylhupuee3dl52rqrp0k6zum4rhzjjss6h37me6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ttmveuhuqvjlx0jvfpk9avv7eqadl9cf5pgcu0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1phj32ay82kv3tawftn5twhnqzfyf8aa60qadt2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18cydujcvq3mrtvyuz7gjv6yjlsx76qxtqk3k4z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xh5cqhxfarjmnmquhlynjyh9xd2j5nxrrzkak8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kkszf9376x2wmx4hx6jnqteufrcfu4y7zmjm88\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tx4npp655y8kfe80t5065mjtfukfwscd2g75lq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f7edss94wcw7d75wn9le4ufzcrh9c7xg8emc6x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zdsuc6c90dj7g6ckw8fsdjjyvmgv6wp48p06l6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rra6lpczdl4dssggwh0xsja28g8stg6rks9z9r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ywea3k3pr2csf42fa2074nq0fzzzl47mc3hlu8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k7vwk8pdka0j044l3qxzdu7jkzgsjrefujk7g2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10ujmghscue3rg5mtejuf83ejedgqgdx3tm67hq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j9z5dnnehwnmdnxyyrkwaaygtwls5xghar0rh6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pmvdmwuqxu6egdqwv4dwm4elajkrlrqtu4kgx4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19ammktlj7932y92us00rfql7654cudzk6grw0s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1clzzdsxs8g2ctnex4dme4pwlwmhsjgfm4fate4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dzmpm0jw65hktgxq7uu4q087hgpm9tag6hlc2q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12g7utasjrj7274efgakdu474fj3extwfugw420\n", + "\tamount: 1boot\n", + "\trecipient: bostrom105v8lx7nm9f5vevczvkvr4zzmyg5t6pc2sd3sx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1709z6pvf2zfpstfpg0gzx7ynhzjd7ltzkjz3yz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a0j5kggusr6330ut53yrklkuwpqzfftuqx6q7c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wqtycyff3cw6n57p43z035wwq08j6xl6dgusfx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k5npar4f8thuw8f9asgc37r7gftdjw62v2046d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hp4fldang8nuhxue47h06rragd83a3sk45pyda\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jtlxeczgaakga4mxlfz3fl6wx5zwfccg40keq8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c07dt4q9rlt05rark6krfxtq6dm2frzwrzzca2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12t7cev3l42pdqch6j2lj7pujl2g2xausgf3ncp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sa94a793d63agfelm9jqr5pfs9gtwtsl0ve7dj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sxjhktsmrrjehra8y6tkp0yemp9329e4k22n6p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1enerfqhgn9sz7nj4ufqxgnfwyfv8zprq7t5297\n", + "\tamount: 1boot\n", + "\trecipient: bostrom153dy50w36822ahp5g0zs42pljjqqwufh925ngf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fe3sc5cnfhnsv6yg3l4pnmdywgal2d8wvs5xt0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ge42amv45yrx3ash6rn3fg0zzcvvv0m8zgd4ek\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xdjpwj3ydm8w6dfuw36plwuv4nfp0gc4lj3vc6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u2zdyfrwgmvyt6ed7vkuah0zfz89qwer44s39y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s2plvnt0k2z5auvzemd30j8g276l93www7zdgd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vw432hg3v9q3khj26ds7hz8nhh82yxsmrcpxxd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fggn95fv7yvph4vt8gyhlyjpqpp00hqdtt6h2k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1utvgrw4zy90u3sax9es5mmyu59nqcgsn9nlh07\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c9n67utln9ecu57wffs2g34py8rl7jfy7cuefw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wr34r06hta64l929dytd66zg5ga8274gquey7r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k2n45jwm2ar3ljc9antrrtla5dlrlm4e7u3yz8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15ymvalestg9y05d70nt40y20lkmxu7stv0ccu8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom150dkpr90jdedqta9hy2838dddrkak4qvj4grqz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16nf839y69wes3yacvzycvygppdws3q6833x7wg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14ecd2guw3unfka39vwnxfcgsjm0l63lfl60jm4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fj5wuge24w5tm3s38mn3qgvuhqqsvu4ulw749e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e872ga9svc8hxk7g83dcq52dsdcdduxzdf8vxt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hdxxrmt62z6h6x8xtwydwsem70fhcn20yxkktx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xlurnyeqj8a424htf2nupz4sfd672729jpeqga\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g9d64h8rz2drcngqfl2ma2z6xuuv5xerpnykq0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m7ds2kuk0xnew9t873wd2e3jkeuh75s7xrzxha\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m4864rvulxglmvm5m8hfld2tw6vzgyxks7rcqa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s8usms2lzeha9u2cmd3cddr3vtukynru8cgu8a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dn2jxeqs2zlnj5ckef2h08xy8q3k7yyktlyt2n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1px35jkfus2r679qtv3284f2rnalwp3d6k72p0n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gc5gg6l43jeny53f5kcfxsrr2rd5txgw0sly8w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom149nfnp3yam0ytw3nwhcl9er4wxgnz5mpgaxkk5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom178lk25e0rh9lcwu8ldvprfertgtlm7smr7hw9l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom175p56xpedhye0kz9ua3ccsgsd4pcajc04ku9ye\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jzfelqvuzyfrrwatc9edphdmal9gqdyw8sltnp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wd8662mm0vak4p6zv4jjysw9ttsm2mezk5048a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ucst888jvkfp0qzgwesqs26f9uj5dhz62pgllv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1723m85tp04k0v3w3vkqr3a4pu3wz7dt8u9e2ql\n", + "\tamount: 1boot\n", + "\trecipient: bostrom154wgd8qmg70cuqaszspflqc9tz03z82gt2yrd6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12qznnamf4ptvc8qn6ywm5wjjnvmtahyznmyalf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e9rh6uz2a8qw3wwaedf8g2d8s6d8t9p92ljs47\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16mngktkvqewm4afpcc2m7r06y65403dqevxfcu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98\n", + "\tamount: 1boot\n", + "Gas used: 21,524,229\n", + "Tx hash: E6406B670BD8BA09F59E5FC3377EE93A9D5069AD332639C409D7AF2E95D2E0B3\n" + ] } ], "source": [ - "\"0xF2749114FeaAD68854E01C8eE762C7170532FdfD\".lower()" + "bostrom_addresses = claims_with_proofs_df.bostrom_address.to_list()\n", + "NUMBER_ADDRESSES_IN_SENDING_CHUNK = 1000\n", + "bostrom_addresses_chunks = [bostrom_addresses[i: i+ NUMBER_ADDRESSES_IN_SENDING_CHUNK] for i in range(0, len(bostrom_addresses), NUMBER_ADDRESSES_IN_SENDING_CHUNK)]\n", + "\n", + "for bostrom_addresses_item in bostrom_addresses_chunks:\n", + " send_output = send_coins(\n", + " from_seed=WALLET_SEED,\n", + " to_addresses=claims_with_proofs_df.bostrom_address.to_list(),\n", + " amounts=[1] * len(claims_with_proofs_df.bostrom_address.to_list()),\n", + " gas=min(71000 * len(claims_with_proofs_df.bostrom_address.to_list()), int(23e6)),\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " parse_output.parse_contract_execution_json(contract_execution_json=send_output)" ], "metadata": { "collapsed": false, @@ -712,7 +6757,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "3b86235cac824f1bbe61385ada3e1032" + "model_id": "90621c73ae9240b2ab1661ed8298923c" } }, "metadata": {}, @@ -740,7 +6785,7 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Passport Contract\n", @@ -750,21 +6795,25 @@ "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 49\n" + "\ttoken_id: 209\n", + "Gas used: 407,208\n", + "Tx hash: 27F13AB3DB73EE25DB27004DF1ECA791905623AD426FC5571F83EB03AFD5B054\n" ] } ], "source": [ "def create_passport(claim_row: pd.Series, display_data: bool = False):\n", - " return execute_contract(execute_query=f'''{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}''',\n", - " contract_address=passport_contract_address,\n", - " gas=600000,\n", - " display_data=display_data)\n", + " return execute_contract_sdk(\n", + " execute_msg={\"create_passport\":{\"avatar\":claim_row[\"avatar\"], \"nickname\":claim_row[\"nickname\"]}},\n", + " contract_address=passport_contract_address,\n", + " mnemonic=claim_row['cosmos_seed'],\n", + " gas=500000,\n", + " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", " create_passport_json = create_passport(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(create_passport_json, row=row)\n", + " parse_output.parse_contract_execution_json(create_passport_json, row=row)\n", " else:\n", " create_passport(row)" ], @@ -797,7 +6846,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "b8d2532f7db74ea7bd94fa850f7b9766" + "model_id": "44ae19bb83ec47bc98336b28b8b191e0" } }, "metadata": {}, @@ -820,7 +6869,7 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Passport Contract\n", @@ -828,8 +6877,10 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16474127781\n", - "\taddress: 0x744443c73710d15eb9970ce7ebf470d36569176b\n", + "\tnickname: john16491805421\n", + "\taddress: 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6\n", + "Gas used: 265,000\n", + "Tx hash: 4AB4ADD58241DD2B3007503FD7F8A457AB88CE06055FE268CD73BF3E70FFA0FE\n", "\n", "Events\n", "\n", @@ -843,7 +6894,7 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Passport Contract\n", @@ -851,25 +6902,29 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16474127781\n", - "\taddress: cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q\n" + "\tnickname: john16491805421\n", + "\taddress: cosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2tw\n", + "Gas used: 267,449\n", + "Tx hash: 4BCACA235148FE82E33A0B0490ED2E055FAD0296FEEACE3DF494F05331596E81\n" ] } ], "source": [ "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_contract(execute_query=f'''{{\"proof_address\":{{\"address\":\"{claim_row[network + \"_address\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}''',\n", - " contract_address=passport_contract_address,\n", - " gas=400000,\n", - " display_data=display_data)\n", + " return execute_contract_sdk(\n", + " execute_msg={\"proof_address\": {\"address\":claim_row[network + \"_address\"], \"nickname\": claim_row[\"nickname\"], \"signature\": claim_row[network + \"_message_signature\"]}},\n", + " contract_address=passport_contract_address,\n", + " mnemonic=claim_row['cosmos_seed'],\n", + " gas=400000,\n", + " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 1:\n", " proof_ethereum_address_json = proof_address(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(proof_ethereum_address_json, row=row)\n", + " parse_output.parse_contract_execution_json(proof_ethereum_address_json, row=row)\n", "\n", " proof_cosmos_address_json = proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(proof_cosmos_address_json, row=row)\n", + " parse_output.parse_contract_execution_json(proof_cosmos_address_json, row=row)\n", " else:\n", " proof_address(row)\n", " proof_address(row, network='cosmos')" @@ -903,7 +6958,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "e308b7f5d856416e956b08f262dde894" + "model_id": "5c60515d83444280a90564ef28257325" } }, "metadata": {}, @@ -913,11 +6968,13 @@ "name": "stdout", "output_type": "stream", "text": [ + "MsgExecuteContract(sender='bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5', contract='bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8', execute_msg={'claim': {'nickname': 'john16491805420', 'gift_claiming_address': '0x53aab6fbd57f81474d5f982b7283db51de3c8317', 'gift_amount': '1000000', 'proof': ['161e04d67252fe71120c2e00d55501f8c22a95564d5d8ebc6bf48b10caad8d07', '7d8103c81cfc5d4787dca5edcc490b5ca19829f2daaba858fc983db84cbe6257', 'a8b9da4bf8622363d383156a88f4bcca3f819b0b339236cd49a9962e94be623c', '430baa2e4dae09ead61ba3402bbd621bf3acf4c0feb58e1ac88dcdaa3e99d08f', '11412ddba6be38b853cd84edceebacbe02165e8b597f7fd5f16c21c3c923b6ed', 'a321051347d21c788bbd54c192521857733fbcbdda8b645107478bca464099cd', '622dbee85410571169ead48be8946571f462b26c34405540d0899d874dea15fb', '36e3fa2c87986f4db50710458ce13451846a4caf9b4f07d6bfd7b3954f0788d8', 'b568a56dbdd8bdf3813edfa0b447ed4b0fa6d4febde8778119a652bde0c58d29', '5cdc291d151b402713a47d46c6467a39be9048c2337419006554f5bb73320cd2', '900600ed0bb58aaa44ad898473b129a36b2e1a44f6362cbe9800f8802d34cd9d']}}, coins=Coins())\n", + "Tx(body=TxBody(messages=[MsgExecuteContract(sender='bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5', contract='bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8', execute_msg={'claim': {'nickname': 'john16491805420', 'gift_claiming_address': '0x53aab6fbd57f81474d5f982b7283db51de3c8317', 'gift_amount': '1000000', 'proof': ['161e04d67252fe71120c2e00d55501f8c22a95564d5d8ebc6bf48b10caad8d07', '7d8103c81cfc5d4787dca5edcc490b5ca19829f2daaba858fc983db84cbe6257', 'a8b9da4bf8622363d383156a88f4bcca3f819b0b339236cd49a9962e94be623c', '430baa2e4dae09ead61ba3402bbd621bf3acf4c0feb58e1ac88dcdaa3e99d08f', '11412ddba6be38b853cd84edceebacbe02165e8b597f7fd5f16c21c3c923b6ed', 'a321051347d21c788bbd54c192521857733fbcbdda8b645107478bca464099cd', '622dbee85410571169ead48be8946571f462b26c34405540d0899d874dea15fb', '36e3fa2c87986f4db50710458ce13451846a4caf9b4f07d6bfd7b3954f0788d8', 'b568a56dbdd8bdf3813edfa0b447ed4b0fa6d4febde8778119a652bde0c58d29', '5cdc291d151b402713a47d46c6467a39be9048c2337419006554f5bb73320cd2', '900600ed0bb58aaa44ad898473b129a36b2e1a44f6362cbe9800f8802d34cd9d']}}, coins=Coins())], memo='', timeout_height=0), auth_info=AuthInfo(signer_infos=[SignerInfo(public_key=SimplePublicKey(key=b'\\x03X&\\xe9h\\x88\\r6\\x1e#+}A$\\x86q\\xab\\x98)\\xbd\\xf98 \\x9f\\xc9(\\x07\\xf8\\xec\\xc2o\\xd2k'), mode_info=ModeInfo(single=ModeInfoSingle(mode=), multi=None), sequence=3)], fee=Fee(gas_limit=400000, amount=Coins('0boot'), payer='', granter='')), signatures=[b\"\\xcf/\\xe1=\\x00\\xe1\\x8a5+\\xdd4F\\x1f\\xac\\t0'\\x84\\xeb-\\x9f\\xa4\\xe3\\xe5\\xc1\\x14\\xbb\\x81\\xde\\t\\r\\xea(\\xab!qx\\xb3\\xf3\\xb1\\xc68\\x89\\x91\\xdbdK\\x0e\\xae\\x91445\\xce?\\x17\\x9dB\\xa8\\xc7\\x13\\x9a\\xc8\\x8f\"])\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: Passport Owner Address\n", + "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -927,24 +6984,26 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Passport Owner Address\n", + "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x4878aae4c66be69d15c590dac467692337e5b0cf\n", - "\ttarget: Passport Owner Address\n", - "\tamount: 20000000\n", + "\toriginal: 0x53aab6fbd57f81474d5f982b7283db51de3c8317\n", + "\ttarget: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tamount: 13000000\n", + "Gas used: 310,199\n", + "Tx hash: CC8C9E3F8353C549144824D669D4D36777C873E96DE0FD39DE771B1C05501075\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: Passport Owner Address\n", + "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -954,24 +7013,26 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Passport Owner Address\n", + "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3\n", - "\ttarget: Passport Owner Address\n", - "\tamount: 20000000\n", + "\toriginal: cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn\n", + "\ttarget: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tamount: 13000000\n", + "Gas used: 310,547\n", + "Tx hash: 8BA6A38131511F1DCFE2A2F1310295C0CDA79DA5FEE598781388C94E6221DDF3\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: Passport Owner Address\n", + "\treceiver: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -981,24 +7042,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Passport Owner Address\n", + "\trecipient: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x744443c73710d15eb9970ce7ebf470d36569176b\n", - "\ttarget: Passport Owner Address\n", - "\tamount: 19700000\n", + "\toriginal: 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6\n", + "\ttarget: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\tamount: 12922000\n", + "Gas used: 310,479\n", + "Tx hash: 40A0841C726084DB9A03F3576FDF0F06900B42A4C6510F32575671AB8D72EDE5\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: EC68880EB505E40ECD0A74271068790FEB994335C534D79DE3AD945A9ECE6D63\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: Passport Owner Address\n", + "\treceiver: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -1008,42 +7076,289 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x00ef128fe6552bbdbaa9ccd799348cf0bfc09004\n", + "\ttarget: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\tamount: 12844000\n", + "Gas used: 310,674\n", + "Tx hash: 0B235947D22B802B97DF2EA756BCE11D395937973C12B9EFF983FE7ED7152360\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: 842364CF7C276D36DCB37FFB1973EEB4E5DAD8E7F1B518DF64148919E15047B7\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0xbbe13e3406d7eed71c67cffb687459f3b217bf9f\n", + "\ttarget: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\tamount: 12766468\n", + "Gas used: 310,684\n", + "Tx hash: DF61211AC78B2DCD9EB5625366165FF91F1EE9D2930470EEB6A3F4641BAFC7BA\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: C28DD7D5657EF068466C9AC1C17196C8F92572254AA244C2F0128D12D9226034\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d\n", + "\ttarget: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\tamount: 12689404\n", + "Gas used: 310,878\n", + "Tx hash: E47C17A482291C8CE360FD2DF5BD4EEB36D206C9B764841B9676B54A9DBB4680\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: 6CC3B1ACBC38BBC6D979D700724B673181AAFB75BED93AD6C00E716226368EC2\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0xa976c37b314928a7fc061098625d78be3dbad1ab\n", + "\ttarget: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\tamount: 12612805\n", + "Gas used: 310,888\n", + "Tx hash: 5706EC51DD518AA5A224F1C2D6DA2EBAD50C65DCFDB97CE18175741D8CCE014B\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: D3C25AE8D08EAF75B84C20077EDC52D6E1660BBD2A992F7D7F65068D59A5CF23\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0xbff1ad5a5511ef3c6fe5683937912f0fa6d34c89\n", + "\ttarget: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\tamount: 12536668\n", + "Gas used: 310,888\n", + "Tx hash: 20C794F3BE27706718511E1980B03169D478367136BE735F93C653B22F71D9F3\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: 07308B777EC6465FF000E15CADF011225B883AE59221306995E1728B506158AE\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x13a6d4fc41ca46afdc996347de596d1ead851e06\n", + "\ttarget: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\tamount: 12460991\n", + "Gas used: 310,824\n", + "Tx hash: 8138FD45E59DED9926C28159F689514362046F540167EFE33EF3C17CDC4EFE0E\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: 0E4AD4261CC7DB39D2693941D8F5123C25370A9DD35160C9968A8C9D2F727719\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Passport Owner Address\n", + "\trecipient: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: cosmos1z55mxwhr9j287hzt60y90mvueyrs3480ladq4q\n", - "\ttarget: Passport Owner Address\n", - "\tamount: 19400000\n" + "\toriginal: 0x14ddef964c20f8168925182da98972c07c087183\n", + "\ttarget: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\tamount: 12385771\n", + "Gas used: 310,915\n", + "Tx hash: 848B2B36E322FEC987C260E5C854EC42B76C5F4C5CCB8EE527C4FFF3F31E50B6\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: 340DB9F6A0470FA611169F1592BE6F2E31338939FA9C3BE3B15F6DDD1EFE375E\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x0f0e5356a63582853dff914466ee60173c88ab27\n", + "\ttarget: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\tamount: 12311005\n", + "Gas used: 310,955\n", + "Tx hash: 862A1EF87296555047A81CEE885529B372564F12E34B06A2D4CB6ED1C4DE9803\n", + "\n", + "Events\n", + "msg json: invalid\n", + "Gas used: 6,489\n", + "Tx hash: 56ADE9D8DB523A84B7A525256B86F241F9E408CA4A2000D425E687B82BAC7E13\n" ] } ], "source": [ "def claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_contract(execute_query=f'''{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{claim_row[network + \"_proof\"]}}}}}''',\n", - " contract_address=gift_contract_address,\n", - " gas=400000,\n", - " display_data=display_data)\n", + " return execute_contract_sdk(\n", + " execute_msg={\"claim\": {\"nickname\": claim_row['nickname'], \"gift_claiming_address\": claim_row[network + \"_address\"], \"gift_amount\": str(claim_row['amount']), \"proof\": claim_row[network + \"_proof\"]}},\n", + " contract_address=gift_contract_address,\n", + " mnemonic=claim_row['cosmos_seed'],\n", + " gas=400000,\n", + " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " claim_ethereum_json = claim(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(claim_ethereum_json)\n", + " claim_ethereum_json = claim(row, display_data=True)\n", + " parse_output.parse_contract_execution_json(claim_ethereum_json)\n", "\n", " claim_cosmos_json = claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(claim_cosmos_json)\n", + " parse_output.parse_contract_execution_json(claim_cosmos_json)\n", " else:\n", " claim_ethereum_json_2 = claim(row)\n", - " parse_contract_execution_json(claim_ethereum_json_2)\n", + " parse_output.parse_contract_execution_json(claim_ethereum_json_2)\n", "\n", " claim_cosmos_json_2 = claim(row, network='cosmos')\n", - " parse_contract_execution_json(claim_cosmos_json_2)" + " parse_output.parse_contract_execution_json(claim_cosmos_json_2)" ], "metadata": { "collapsed": false, @@ -1075,7 +7390,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "c1e8d3469ba442bba241a84750f62498" + "model_id": "610dba4da8594c7a9b63a3dfb4c5c642" } }, "metadata": {}, @@ -1089,78 +7404,84 @@ "Events\n", "\n", "coin received\n", - "\treceiver: Passport Owner Address\n", - "\tamount: 1990000boot\n", + "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tamount: 1290000boot\n", "\n", "coin spent\n", "\tspender: Gift Contract\n", - "\tamount: 1990000boot\n", + "\tamount: 1290000boot\n", "\n", "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Passport Owner Address\n", + "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", "\tsender: Gift Contract\n", - "\tamount: 1990000boot\n", + "\tamount: 1290000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: Passport Owner Address\n", - "\tgift_address: 0x4878aae4c66be69d15c590dac467692337e5b0cf\n", + "\taddress: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tgift_address: 0x53aab6fbd57f81474d5f982b7283db51de3c8317\n", "\tstage: 9\n", - "\tamount: 1990000\n", + "\tamount: 1290000\n", + "Gas used: 148,799\n", + "Tx hash: E1C3B0B2FFFB35A11A144B2A03655F20BBBF52743B978CAEF0D8B9399C25F462\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: Passport Owner Address\n", - "\tamount: 1990000boot\n", + "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tamount: 1290000boot\n", "\n", "coin spent\n", "\tspender: Gift Contract\n", - "\tamount: 1990000boot\n", + "\tamount: 1290000boot\n", "\n", "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Passport Owner Address\n", + "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", "\tsender: Gift Contract\n", - "\tamount: 1990000boot\n", + "\tamount: 1290000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: Passport Owner Address\n", - "\tgift_address: cosmos1aw9qyjhmm8krtggpx728uutegazlq3lw7pl9a3\n", + "\taddress: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\tgift_address: cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn\n", "\tstage: 9\n", - "\tamount: 1990000\n" + "\tamount: 1290000\n", + "Gas used: 148,870\n", + "Tx hash: 6966BA09DC1303EEC73C41D17BF245E141D324A488C2B2D0D87C1E69AAF11444\n" ] } ], "source": [ "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_contract(execute_query=f'''{{\"release\":{{\"gift_address\":\"{claim_row[network + \"_address\"]}\"}}}}''',\n", - " contract_address=gift_contract_address,\n", - " gas=400000,\n", - " display_data=display_data)\n", + " return execute_contract_sdk(\n", + " execute_msg={\"release\": {\"gift_address\": claim_row[network + \"_address\"]}},\n", + " contract_address=gift_contract_address,\n", + " mnemonic=claim_row['cosmos_seed'],\n", + " gas=400000,\n", + " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", " release_ethereum_json = release(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(release_ethereum_json)\n", + " parse_output.parse_contract_execution_json(release_ethereum_json)\n", "\n", " release_cosmos_json = release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(release_cosmos_json)\n", + " parse_output.parse_contract_execution_json(release_cosmos_json)\n", " else:\n", " release(row)\n", - " release(row, network='cosmos')\n" + " release(row, network='cosmos')" ], "metadata": { "collapsed": false, @@ -1188,7 +7509,7 @@ "outputs": [ { "data": { - "text/plain": "50" + "text/plain": "218" }, "execution_count": 20, "metadata": {}, @@ -1198,8 +7519,7 @@ "source": [ "def get_passport_id(bostrom_address: str) -> str:\n", " return query_contract(query=f'''{{\"portid\": {{\"portid\": \"{bostrom_address}\"}}}}''',\n", - " contract_address=passport_contract_address)['data']['portid']\n", - "get_passport_id(WALLET_ADDRESS)" + " contract_address=passport_contract_address)['data']['portid']" ], "metadata": { "collapsed": false, @@ -1210,7 +7530,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "outputs": [ { "data": { @@ -1218,7 +7538,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "e4b1378298c642fd97ca3c7321043e8d" + "model_id": "bf7b886e7ec64cd894f1072bec6acba3" } }, "metadata": {}, @@ -1230,7 +7550,9 @@ "text": [ "\n", "Events\n", - "failed to execute message; message index: 0: dispatch: submessages: dispatch: submessages: your cyberlink already exists\n" + "failed to execute message; message index: 0: Unauthorized: execute wasm contract failed\n", + "Gas used: 136,631\n", + "Tx hash: 62BCE1E432161B2351BFE4F76B001A2C961E10C22FC99F6FBD45FC92D3CD74B9\n" ] } ], @@ -1238,19 +7560,56 @@ "def transfer_passport(claim_row: pd.Series, token_id: str, to_address: str = '', display_data: bool = False):\n", " if to_address == '':\n", " to_address = claim_row['bostrom_address']\n", - " return execute_contract(execute_query=f'''{{\"transfer_nft\":{{\"recipient\":\"{to_address}\", \"token_id\":\"{token_id}\"}}}}''',\n", - " contract_address=passport_contract_address,\n", - " gas=600000,\n", - " display_data=display_data)\n", + " return execute_contract_sdk(\n", + " execute_msg={\"transfer_nft\": {\"recipient\": to_address, \"token_id\": str(token_id)}},\n", + " contract_address=passport_contract_address,\n", + " mnemonic=claim_row['cosmos_seed'],\n", + " gas=500000,\n", + " display_data=display_data)\n", "\n", "\n", - "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", - " if index == 0:\n", - " create_passport_json = transfer_passport(row, token_id=get_passport_id(WALLET_ADDRESS), display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(create_passport_json, row=row)\n", + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 1:\n", + " transfer_passport_json = transfer_passport(\n", + " row, \n", + " token_id=get_passport_id(row['bostrom_address']), \n", + " to_address=WALLET_ADDRESS, \n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " parse_output.parse_contract_execution_json(\n", + " transfer_passport_json, \n", + " row=row)\n", " break\n", " else:\n", - " create_passport_json = transfer_passport(row, token_id=get_passport_id(WALLET_ADDRESS))" + " transfer_passport_json = transfer_passport(\n", + " row, \n", + " token_id=get_passport_id(WALLET_ADDRESS), \n", + " to_address=WALLET_ADDRESS)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 24, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'transfer_passport_json' is not defined", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", + "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_62161/3523452160.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m \u001B[0mparse_output\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mparse_contract_execution_json\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtransfer_passport_json\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mrow\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mrow\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[0;31mNameError\u001B[0m: name 'transfer_passport_json' is not defined" + ] + } + ], + "source": [ + "parse_output.parse_contract_execution_json(transfer_passport_json, row=row)" ], "metadata": { "collapsed": false, @@ -1273,7 +7632,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "outputs": [ { "data": { @@ -1281,7 +7640,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "3be258be03084cb2a6fd061cfcfebed3" + "model_id": "aab2b27687fc48a987f5c3bc7098d05d" } }, "metadata": {}, @@ -1293,33 +7652,9 @@ "text": [ "\n", "Events\n", - "\n", - "cyberlinks\n", - "\tQmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs -> QmRjw7ZB1SN3c7F6K921zfmQdmqAAFGnQjKQWJnhqB2TSH\n", - "\tQmRjw7ZB1SN3c7F6K921zfmQdmqAAFGnQjKQWJnhqB2TSH -> QmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs\n", - "\tneuron: Name Subgraph Contract\n", - "\n", - "\tQmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs -> QmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD\n", - "\tQmX7VAaprn4xonSTt1d51K7Uf71ZfnkJzajgpdZ3HpE4oD -> QmTkBzFu3KPH8VKb1zmGkMzkWey6EkbQnPKLRU43fRhMDs\n", - "\tneuron: Avatar Subgraph Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Name Subgraph Contract\n", - "\texecute contract: Avatar Subgraph Contract\n", - "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Passport Contract\n", - "\treply contract: Passport Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: burn\n", - "\tsender: Passport Owner Address\n", - "\ttoken_id: 50\n" + "failed to execute message; message index: 0: Unauthorized: execute wasm contract failed\n", + "Gas used: 130,402\n", + "Tx hash: 474F39DA3CF33F7328144D8F0C744DC54ED4E17E4500EF75C21D87CF64603A7D\n" ] } ], @@ -1330,10 +7665,10 @@ " gas=400000,\n", " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", - " if index == 0:\n", - " burn_passport_json = burn_passport(row, token_id=get_passport_id(WALLET_ADDRESS), display_data=DISPLAY_TX_EXECUTION)\n", - " parse_contract_execution_json(burn_passport_json, row=row)\n", + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 1:\n", + " burn_passport_json = burn_passport(row, token_id=str(int(get_passport_id(WALLET_ADDRESS)) - 1), display_data=DISPLAY_TX_EXECUTION)\n", + " parse_output.parse_contract_execution_json(burn_passport_json, row=row)\n", " break\n", " else:\n", " create_passport_json = burn_passport(row, token_id=get_passport_id(WALLET_ADDRESS))" @@ -1345,18 +7680,6 @@ } } }, - { - "cell_type": "code", - "execution_count": 22, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, { "cell_type": "markdown", "source": [ @@ -1393,7 +7716,7 @@ "\n", "### Add tests for subgraph contract\n", "#### update_owner\n", - "#### update_executer +" + "#### update_executer +\n" ], "metadata": { "collapsed": false, @@ -1401,18 +7724,6 @@ "name": "#%% md\n" } } - }, - { - "cell_type": "code", - "execution_count": 22, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } } ], "metadata": { From 5ca7d3c95e6b161ed0be9d5bd38f1a0b8ccc2fd4 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Wed, 6 Apr 2022 19:49:16 +0800 Subject: [PATCH 28/69] - update passport contract address - add contract execution by cyber CDK --- .../gift_and_passport_contracts_testing.ipynb | 4435 ++++++++--------- 1 file changed, 2217 insertions(+), 2218 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 88464ca..8365856 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -70,8 +70,8 @@ "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", - "PASSPORT_CODE_ID = str(25)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra'\n", + "PASSPORT_CODE_ID = str(43)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8'\n", "\n", "INIT_GIFT_CONTRACT = True\n", "GIFT_CODE_ID = str(20)\n", @@ -107,7 +107,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "c06ced755ab14babab67d2f418dd4476" + "model_id": "df2c2037e1fb42958c06db48568690fa" } }, "metadata": {}, @@ -115,8 +115,8 @@ }, { "data": { - "text/plain": " amount nickname \\\n0 1000000 john16491805420 \n1 1000000 john16491805421 \n2 1000000 john16491805422 \n3 1000000 john16491805423 \n4 1000000 john16491805424 \n.. ... ... \n995 1000000 john1649180542995 \n996 1000000 john1649180542996 \n997 1000000 john1649180542997 \n998 1000000 john1649180542998 \n999 1000000 john1649180542999 \n\n avatar \\\n0 QmYkvRCFomDU2kTS8tPHyc2dq8zbH5sGX3UkSdNwhcA3KU \n1 QmcgbLatva5ByF9E9PEkvWD8MGFLkn4ysPWEYzmhnBusqN \n2 Qmes2KpFKKyVhMExUx9WYm1XhaXpXsJzT8nngGEZo8THNX \n3 QmTbBu9yNkpyvsFaRTFG2LajAtL6aeR8TxKwmvZaGtonpu \n4 QmNd8GkXwqs2avFgB2vx6anU6PqCPwMBrVaLr5h8py5gdv \n.. ... \n995 QmPPN4uXU5pnXHgv6QeJANmUUQ91pzWSdvwaA9E42mGntU \n996 QmdzN3Cw1tRoi2DrCp27VGCDsJX6awPK8JKoMYQTkLCtGN \n997 QmXrzBrT8hfqXVRST6ELiRRaBgibpbUzXgGaLLxQQog7sF \n998 QmQMDryY34qP53R95fbur1DRz1x9pguZkj1bkKzdPF1T3X \n999 QmXjxfQm5FvkoGPHRSd7G7k2G2SWUkS2jZAsk9XwzHN4xL \n\n ethereum_address \\\n0 0x53aab6fbd57f81474d5f982b7283db51de3c8317 \n1 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6 \n2 0x00ef128fe6552bbdbaa9ccd799348cf0bfc09004 \n3 0xbbe13e3406d7eed71c67cffb687459f3b217bf9f \n4 0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d \n.. ... \n995 0x1e1824ada074f0afdca15a6c57f30b5f028707bb \n996 0xcf800ad16bf6144d60651b87dca581c78572ef1f \n997 0x042b7342c7438babe46ac89a3d2329f07fad4df6 \n998 0x967e13eb434842b6040666b44ee6aa47db2d35d0 \n999 0xa92f2a2d27a1f6329c15bdada24c86ac2f3dd6c9 \n\n ethereum_private_key \\\n0 0x5d9bb0a41022bc64517176c2b7683eb13db0cc3099ff... \n1 0x103392bdb81d67f69722608de6a33d01c4bcac72f4f8... \n2 0xbc057c174aa9f5a7ce6cd8970c5b85381e6bf05553fb... \n3 0xc53fbb9e5a0383a7d11f34248ab507c6749e5433a533... \n4 0x8f34e2dac8046e1fb55d130a522c7eba2ec884271241... \n.. ... \n995 0xae23a16ea4e551a50213ff14106551e025772c663236... \n996 0xf7cd685f09310132680449af21d83770628b2c05c985... \n997 0x09022387bd76729fe16396ad409144e36ef25f537849... \n998 0x76f158ee3e107d8ad9dfb496d0b24a7307feaf02db83... \n999 0xa017fccc7e3acfae651e2cde3e36a1b041b28e0d0fd6... \n\n bostrom_address \\\n0 bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 \n1 bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f \n2 bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3 \n3 bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh \n4 bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v \n.. ... \n995 bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu \n996 bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw \n997 bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm \n998 bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3 \n999 bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98 \n\n cosmos_address \\\n0 cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn \n1 cosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2tw \n2 cosmos1j7zq5gs74hlx0v0wlkfueuz2agdnm0jdx8rvzk \n3 cosmos183y9le3eqqy058fjkk2l23f54gxv2vkymmn87s \n4 cosmos1c22rcy7lq55qrcllvyxy0d4dm8we7h3uu9j2yt \n.. ... \n995 cosmos14x6c0nt3l7e4xxvufapmdpch8gq6ysepdt2k7m \n996 cosmos18605553ld5nvw5yvf37n20asz5uy62xa9n4hcf \n997 cosmos1ywr569ke6tgpwc03t36uz7f73aweg6u6g7v9xu \n998 cosmos1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghghn7lfk \n999 cosmos1cccky3u8au0qvqt2d3z4kj74wuzfaknluvwlmq \n\n cosmos_seed \\\n0 exit cash extra kiss night bacon input tackle ... \n1 brown vacuum craft mask puzzle option subway p... \n2 pool loop myth tonight submit library refuse e... \n3 initial police glance human okay pave tornado ... \n4 excess choose sweet fluid borrow crunch unfair... \n.. ... \n995 select clap panic beauty leave youth glory riv... \n996 push extend egg lobster country rug drastic im... \n997 cinnamon feed option congress rate gap two exi... \n998 crawl melody pledge hard fit day welcome mater... \n999 review movie tiger view destroy ticket electri... \n\n message \\\n0 bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5... \n1 bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f... \n2 bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3... \n3 bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh... \n4 bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v... \n.. ... \n995 bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu... \n996 bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw... \n997 bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm... \n998 bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3... \n999 bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98... \n\n ethereum_message_signature \\\n0 0x659812efcc33bd31bb6dd313305b701a9e964ffe4819... \n1 0x02ba7cd56909d60fa871286bddea9b803d737dff9e70... \n2 0x28877399a194b0254e59cc51afb115d9607a6e13a266... \n3 0x78c51751be88294f022551bb8c46fb5bdda8cabd6cac... \n4 0xcb1a4b6eed38a4d1cdd2ca93f0d621d98db04de82dbc... \n.. ... \n995 0x1993f68d904904bd4630966e6d18a7ecbdbcb03cd7bc... \n996 0x272bb707e76d72427aeb1ab01cd68f46da004f98c6c3... \n997 0x6a57fae828f456f96436933034e15d1be2e8701aec04... \n998 0x80cc26369b9567c8acd019d6971571fb6f889f133a1a... \n999 0x39379c5c591c9d8c32af050e178eeeb85c781c78ac2d... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A1gm6WiIDTYeIyt9QSSGcauYKb35OCCfy... \n1 {'pub_key': 'AtX2v1wR/Je2l4sRLHbsA3WbK5s0dtKDW... \n2 {'pub_key': 'AxPpSNqt0t1PuN+hsE8YGusfpjbKfShFu... \n3 {'pub_key': 'AuRQu3Pd0lH0wkQZBQtKanE02zIZZT1yA... \n4 {'pub_key': 'AlqmKMZ7WV49o9daIYFl286RDKRCxQ7Cf... \n.. ... \n995 {'pub_key': 'AiMAqhMz1czTJN634ySX8Z2jHRYFytTMC... \n996 {'pub_key': 'A5Ng/mcdI0YN5X4iqsA8LHugEHP1kz1o5... \n997 {'pub_key': 'AlNHCI/i0TVn1waAAu4j6yDTzv12lOaxF... \n998 {'pub_key': 'Arpf2KMNOVP8xBdRj6w2usT+1G01JgM94... \n999 {'pub_key': 'A6GXpZfq4qKFIjDHM5Tha5MFkVyriciVa... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQTFnbTZXaUlEVFllSXl0OVFTU0djYX... \n1 eyJwdWJfa2V5IjoiQXRYMnYxd1IvSmUybDRzUkxIYnNBM1... \n2 eyJwdWJfa2V5IjoiQXhQcFNOcXQwdDFQdU4raHNFOFlHdX... \n3 eyJwdWJfa2V5IjoiQXVSUXUzUGQwbEgwd2tRWkJRdEthbk... \n4 eyJwdWJfa2V5IjoiQWxxbUtNWjdXVjQ5bzlkYUlZRmwyOD... \n.. ... \n995 eyJwdWJfa2V5IjoiQWlNQXFoTXoxY3pUSk42MzR5U1g4Wj... \n996 eyJwdWJfa2V5IjoiQTVOZy9tY2RJMFlONVg0aXFzQThMSH... \n997 eyJwdWJfa2V5IjoiQWxOSENJL2kwVFZuMXdhQUF1NGo2eU... \n998 eyJwdWJfa2V5IjoiQXJwZjJLTU5PVlA4eEJkUmo2dzJ1c1... \n999 eyJwdWJfa2V5IjoiQTZHWHBaZnE0cUtGSWpESE01VGhhNU... \n\n[1000 rows x 12 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16491805420QmYkvRCFomDU2kTS8tPHyc2dq8zbH5sGX3UkSdNwhcA3KU0x53aab6fbd57f81474d5f982b7283db51de3c83170x5d9bb0a41022bc64517176c2b7683eb13db0cc3099ff...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjnexit cash extra kiss night bacon input tackle ...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5...0x659812efcc33bd31bb6dd313305b701a9e964ffe4819...{'pub_key': 'A1gm6WiIDTYeIyt9QSSGcauYKb35OCCfy...eyJwdWJfa2V5IjoiQTFnbTZXaUlEVFllSXl0OVFTU0djYX...
11000000john16491805421QmcgbLatva5ByF9E9PEkvWD8MGFLkn4ysPWEYzmhnBusqN0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d60x103392bdb81d67f69722608de6a33d01c4bcac72f4f8...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4fcosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2twbrown vacuum craft mask puzzle option subway p...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f...0x02ba7cd56909d60fa871286bddea9b803d737dff9e70...{'pub_key': 'AtX2v1wR/Je2l4sRLHbsA3WbK5s0dtKDW...eyJwdWJfa2V5IjoiQXRYMnYxd1IvSmUybDRzUkxIYnNBM1...
21000000john16491805422Qmes2KpFKKyVhMExUx9WYm1XhaXpXsJzT8nngGEZo8THNX0x00ef128fe6552bbdbaa9ccd799348cf0bfc090040xbc057c174aa9f5a7ce6cd8970c5b85381e6bf05553fb...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3cosmos1j7zq5gs74hlx0v0wlkfueuz2agdnm0jdx8rvzkpool loop myth tonight submit library refuse e...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3...0x28877399a194b0254e59cc51afb115d9607a6e13a266...{'pub_key': 'AxPpSNqt0t1PuN+hsE8YGusfpjbKfShFu...eyJwdWJfa2V5IjoiQXhQcFNOcXQwdDFQdU4raHNFOFlHdX...
31000000john16491805423QmTbBu9yNkpyvsFaRTFG2LajAtL6aeR8TxKwmvZaGtonpu0xbbe13e3406d7eed71c67cffb687459f3b217bf9f0xc53fbb9e5a0383a7d11f34248ab507c6749e5433a533...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qhcosmos183y9le3eqqy058fjkk2l23f54gxv2vkymmn87sinitial police glance human okay pave tornado ...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh...0x78c51751be88294f022551bb8c46fb5bdda8cabd6cac...{'pub_key': 'AuRQu3Pd0lH0wkQZBQtKanE02zIZZT1yA...eyJwdWJfa2V5IjoiQXVSUXUzUGQwbEgwd2tRWkJRdEthbk...
41000000john16491805424QmNd8GkXwqs2avFgB2vx6anU6PqCPwMBrVaLr5h8py5gdv0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d0x8f34e2dac8046e1fb55d130a522c7eba2ec884271241...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6vcosmos1c22rcy7lq55qrcllvyxy0d4dm8we7h3uu9j2ytexcess choose sweet fluid borrow crunch unfair...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v...0xcb1a4b6eed38a4d1cdd2ca93f0d621d98db04de82dbc...{'pub_key': 'AlqmKMZ7WV49o9daIYFl286RDKRCxQ7Cf...eyJwdWJfa2V5IjoiQWxxbUtNWjdXVjQ5bzlkYUlZRmwyOD...
.......................................
9951000000john1649180542995QmPPN4uXU5pnXHgv6QeJANmUUQ91pzWSdvwaA9E42mGntU0x1e1824ada074f0afdca15a6c57f30b5f028707bb0xae23a16ea4e551a50213ff14106551e025772c663236...bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qucosmos14x6c0nt3l7e4xxvufapmdpch8gq6ysepdt2k7mselect clap panic beauty leave youth glory riv...bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu...0x1993f68d904904bd4630966e6d18a7ecbdbcb03cd7bc...{'pub_key': 'AiMAqhMz1czTJN634ySX8Z2jHRYFytTMC...eyJwdWJfa2V5IjoiQWlNQXFoTXoxY3pUSk42MzR5U1g4Wj...
9961000000john1649180542996QmdzN3Cw1tRoi2DrCp27VGCDsJX6awPK8JKoMYQTkLCtGN0xcf800ad16bf6144d60651b87dca581c78572ef1f0xf7cd685f09310132680449af21d83770628b2c05c985...bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxwcosmos18605553ld5nvw5yvf37n20asz5uy62xa9n4hcfpush extend egg lobster country rug drastic im...bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw...0x272bb707e76d72427aeb1ab01cd68f46da004f98c6c3...{'pub_key': 'A5Ng/mcdI0YN5X4iqsA8LHugEHP1kz1o5...eyJwdWJfa2V5IjoiQTVOZy9tY2RJMFlONVg0aXFzQThMSH...
9971000000john1649180542997QmXrzBrT8hfqXVRST6ELiRRaBgibpbUzXgGaLLxQQog7sF0x042b7342c7438babe46ac89a3d2329f07fad4df60x09022387bd76729fe16396ad409144e36ef25f537849...bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcmcosmos1ywr569ke6tgpwc03t36uz7f73aweg6u6g7v9xucinnamon feed option congress rate gap two exi...bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm...0x6a57fae828f456f96436933034e15d1be2e8701aec04...{'pub_key': 'AlNHCI/i0TVn1waAAu4j6yDTzv12lOaxF...eyJwdWJfa2V5IjoiQWxOSENJL2kwVFZuMXdhQUF1NGo2eU...
9981000000john1649180542998QmQMDryY34qP53R95fbur1DRz1x9pguZkj1bkKzdPF1T3X0x967e13eb434842b6040666b44ee6aa47db2d35d00x76f158ee3e107d8ad9dfb496d0b24a7307feaf02db83...bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3cosmos1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghghn7lfkcrawl melody pledge hard fit day welcome mater...bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3...0x80cc26369b9567c8acd019d6971571fb6f889f133a1a...{'pub_key': 'Arpf2KMNOVP8xBdRj6w2usT+1G01JgM94...eyJwdWJfa2V5IjoiQXJwZjJLTU5PVlA4eEJkUmo2dzJ1c1...
9991000000john1649180542999QmXjxfQm5FvkoGPHRSd7G7k2G2SWUkS2jZAsk9XwzHN4xL0xa92f2a2d27a1f6329c15bdada24c86ac2f3dd6c90xa017fccc7e3acfae651e2cde3e36a1b041b28e0d0fd6...bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98cosmos1cccky3u8au0qvqt2d3z4kj74wuzfaknluvwlmqreview movie tiger view destroy ticket electri...bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98...0x39379c5c591c9d8c32af050e178eeeb85c781c78ac2d...{'pub_key': 'A6GXpZfq4qKFIjDHM5Tha5MFkVyriciVa...eyJwdWJfa2V5IjoiQTZHWHBaZnE0cUtGSWpESE01VGhhNU...
\n

1000 rows × 12 columns

\n
" + "text/plain": " amount nickname \\\n0 1000000 john16492448010 \n1 1000000 john16492448011 \n2 1000000 john16492448012 \n3 1000000 john16492448013 \n4 1000000 john16492448014 \n.. ... ... \n995 1000000 john1649244801995 \n996 1000000 john1649244801996 \n997 1000000 john1649244801997 \n998 1000000 john1649244801998 \n999 1000000 john1649244801999 \n\n avatar \\\n0 QmWJabGXjQzQGBaufL4G52uWJ6pVXk6JAdSJ9FaP2er4HQ \n1 QmVd9z3xpVuteLHfGxwyuqZ59RbqHJvo9rTnMmJydm2KFH \n2 QmNP5sKxtM4CSGf7kTiWofVRnaM1BLypz1Bzp938CaELQe \n3 QmcgdRsZ9zhbwWwzk6YvjMPRPvAAPS1bHtCNyXcA8AWwNc \n4 QmZPLhT4qBiSHndYTLoW3uRyBWZ9RJqBUEceJDFju5FZKD \n.. ... \n995 QmdTu7ixrtsM6gCHony3L3YiMM3ZAyrerHNBF2BmH2c6sd \n996 QmbQfexR2AymywJtvPHNDXnv2sDzZPU2s7uNykigGY1NMZ \n997 Qmao6HPcDmMZz8uRgjPummgNbvud2KkNLAvgtZ9xW6sNry \n998 QmbXgpNnAWoM6bwW3p3ByZgDfyRd13HZ8Rcpqz57crvXSm \n999 QmULWL493BM4AdAgc3c2rcsLGCDZV81u87SCJYGkvdvkFD \n\n ethereum_address \\\n0 0x9652c5b6b5fbb66725d04a9c60910bddeffea626 \n1 0xc054139731e52960f8074be8a5e95f3fcd721cf3 \n2 0x28ad7d9904c8b3e114251b273e7d5ca5a875110c \n3 0x3bdac6c42a44eb2945089ce04c2ae76d421b8e32 \n4 0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a \n.. ... \n995 0xa796c56bf6351abb62536e8f1a71d10a8ba265cf \n996 0x7d5c21ebcfaf008cfe7ba8228665d8478a47adee \n997 0xa92d07ae7a4edc72bbba0eeb8bccdb816ad8ae4c \n998 0xd260b6e1ace04748313760719bdecc21fb82ea0b \n999 0x662ddb861fdbd085da590d74bf0d4e12c52b8dc5 \n\n ethereum_private_key \\\n0 0xc8a81ae383de21ab9222b3a7c36d4851a481371e314b... \n1 0xd569412597b83e8cc22d2d5afda4ca5c72e45e44f8a9... \n2 0x201c6d3ad75b666634d4f6775719ee6bff005428d8d5... \n3 0x7b34ba8f8da648fd458cb472e219cac67aeab9528c82... \n4 0x232603ff11610671a4c9ab8a3268ffc13caba4eb714b... \n.. ... \n995 0xc176d2d0321c7b29c88e7dfaea7d8031b38ce09f5d36... \n996 0xd5d950b9d60dfcc801c98a8411434344423800e2243e... \n997 0xe5293951e6301d3e83fc3eb364f0e1e8dc1772705c82... \n998 0x87cb01173e33bf19c0296560f67d91b32be5107f381d... \n999 0x3e88c9104a651fc6330da0a195a2b54e4d832eddc0ac... \n\n bostrom_address \\\n0 bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 \n1 bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj \n2 bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu \n3 bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav \n4 bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3 \n.. ... \n995 bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850 \n996 bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf \n997 bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49 \n998 bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8 \n999 bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n \n\n cosmos_address \\\n0 cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz \n1 cosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4 \n2 cosmos19wakfjwwy2q2a4tt040zwlfje63hhgymy3vujm \n3 cosmos17nvgh8e4628962yd08zdygpg77g06qvf0v60rt \n4 cosmos19xfk4fypjdvh7klus3sqs6wjvv0frw8uaps48k \n.. ... \n995 cosmos100n4qt5rd3jefhl5ezrcxlu4uf8hd34kc8d52g \n996 cosmos1qewddun7a48s8985jux04d4w3xacum37csvwww \n997 cosmos1rucwkkqrzc4xglgqr3xwzxy887jxp6at7dwttz \n998 cosmos15tuur8x82hnkz727l59mzjdn0u75z3szmz0d4q \n999 cosmos15lvk37hzej3cdga9r8sp7x3rpas9p3v0ax4ty5 \n\n cosmos_seed \\\n0 know welcome original south crane number blast... \n1 swear jealous fix wait duck gossip amazing loy... \n2 security ladder shop brush sauce edge category... \n3 horse file tissue valid tomorrow liar genius c... \n4 spider mushroom page length point tenant plug ... \n.. ... \n995 lumber chuckle scrap quantum clay ordinary dic... \n996 eye pair cry tent warfare abuse drop arena ste... \n997 finish stool kit skin acquire topic fitness pr... \n998 gate other decorate scissors boss glad empty g... \n999 resist wheat soon health spin scissors outside... \n\n message \\\n0 bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49... \n1 bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj... \n2 bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu... \n3 bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav... \n4 bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3... \n.. ... \n995 bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850... \n996 bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf... \n997 bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49... \n998 bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8... \n999 bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n... \n\n ethereum_message_signature \\\n0 0xd4761ed5a2aaaf39b1129b488d5d674b395f8d43b494... \n1 0x08c64cbb5f56c4a68f310fcd76d0d9580546c74800de... \n2 0x8b9f2830d4eb5142c14f0fd894a0f6b2ed0d912adae0... \n3 0xb03719a1aff6edb9a1d65d9873c32bec9ed9301a20fc... \n4 0x72b967a3bd50e7a7f3540caf4e91d3342ac578b7df06... \n.. ... \n995 0x6a2657437f37009f112e1774ab29f350a47b665c86a0... \n996 0x8fca83c4c01fd63fa29d38206b4a2a0f421314185f54... \n997 0x3f3faa62336a713597198adbf269af535ef95448491b... \n998 0x8348c8d95e5814b18aa07be65dec1ff38ade605f9df2... \n999 0xd0d8df25df882cff482aa61847b54137a0ff7016708b... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Ak2zZhFmb277JrYppue8USwsUAxu7RTK9... \n1 {'pub_key': 'Av+Omf/jShJAbKSzmeLoXMpfkCPOO23Ok... \n2 {'pub_key': 'A50DR3BbqdA7GRRIe3p+whxcgy6Z7lYzU... \n3 {'pub_key': 'AhxaSBthlXKR9s6G5vWlAMotKdSR3ftR2... \n4 {'pub_key': 'AxUpfJBdo9SaxS06HZ/Ll8mkSsttxfhCe... \n.. ... \n995 {'pub_key': 'Ak72+BszxQHYtM+lE3skz9Qr+/yktGHWl... \n996 {'pub_key': 'AgR6I7cau7/qGeuQsUxfd0RiKoWYT3lxQ... \n997 {'pub_key': 'AqzKba3tYSRcTVwO2LVQf9F46WB0EekGk... \n998 {'pub_key': 'A79SefrWL+fEioxIkBS4DPr76CAKmMMm9... \n999 {'pub_key': 'AyKMkUxXK9+rJIE5Tatls7d90d97XPOTp... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQWsyelpoRm1iMjc3SnJZcHB1ZThVU3... \n1 eyJwdWJfa2V5IjoiQXYrT21mL2pTaEpBYktTem1lTG9YTX... \n2 eyJwdWJfa2V5IjoiQTUwRFIzQmJxZEE3R1JSSWUzcCt3aH... \n3 eyJwdWJfa2V5IjoiQWh4YVNCdGhsWEtSOXM2RzV2V2xBTW... \n4 eyJwdWJfa2V5IjoiQXhVcGZKQmRvOVNheFMwNkhaL0xsOG... \n.. ... \n995 eyJwdWJfa2V5IjoiQWs3MitCc3p4UUhZdE0rbEUzc2t6OV... \n996 eyJwdWJfa2V5IjoiQWdSNkk3Y2F1Ny9xR2V1UXNVeGZkMF... \n997 eyJwdWJfa2V5IjoiQXF6S2JhM3RZU1JjVFZ3TzJMVlFmOU... \n998 eyJwdWJfa2V5IjoiQTc5U2VmcldMK2ZFaW94SWtCUzREUH... \n999 eyJwdWJfa2V5IjoiQXlLTWtVeFhLOStySklFNVRhdGxzN2... \n\n[1000 rows x 12 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16492448010QmWJabGXjQzQGBaufL4G52uWJ6pVXk6JAdSJ9FaP2er4HQ0x9652c5b6b5fbb66725d04a9c60910bddeffea6260xc8a81ae383de21ab9222b3a7c36d4851a481371e314b...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtzknow welcome original south crane number blast...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49...0xd4761ed5a2aaaf39b1129b488d5d674b395f8d43b494...{'pub_key': 'Ak2zZhFmb277JrYppue8USwsUAxu7RTK9...eyJwdWJfa2V5IjoiQWsyelpoRm1iMjc3SnJZcHB1ZThVU3...
11000000john16492448011QmVd9z3xpVuteLHfGxwyuqZ59RbqHJvo9rTnMmJydm2KFH0xc054139731e52960f8074be8a5e95f3fcd721cf30xd569412597b83e8cc22d2d5afda4ca5c72e45e44f8a9...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zjcosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4swear jealous fix wait duck gossip amazing loy...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj...0x08c64cbb5f56c4a68f310fcd76d0d9580546c74800de...{'pub_key': 'Av+Omf/jShJAbKSzmeLoXMpfkCPOO23Ok...eyJwdWJfa2V5IjoiQXYrT21mL2pTaEpBYktTem1lTG9YTX...
21000000john16492448012QmNP5sKxtM4CSGf7kTiWofVRnaM1BLypz1Bzp938CaELQe0x28ad7d9904c8b3e114251b273e7d5ca5a875110c0x201c6d3ad75b666634d4f6775719ee6bff005428d8d5...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vucosmos19wakfjwwy2q2a4tt040zwlfje63hhgymy3vujmsecurity ladder shop brush sauce edge category...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu...0x8b9f2830d4eb5142c14f0fd894a0f6b2ed0d912adae0...{'pub_key': 'A50DR3BbqdA7GRRIe3p+whxcgy6Z7lYzU...eyJwdWJfa2V5IjoiQTUwRFIzQmJxZEE3R1JSSWUzcCt3aH...
31000000john16492448013QmcgdRsZ9zhbwWwzk6YvjMPRPvAAPS1bHtCNyXcA8AWwNc0x3bdac6c42a44eb2945089ce04c2ae76d421b8e320x7b34ba8f8da648fd458cb472e219cac67aeab9528c82...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuavcosmos17nvgh8e4628962yd08zdygpg77g06qvf0v60rthorse file tissue valid tomorrow liar genius c...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav...0xb03719a1aff6edb9a1d65d9873c32bec9ed9301a20fc...{'pub_key': 'AhxaSBthlXKR9s6G5vWlAMotKdSR3ftR2...eyJwdWJfa2V5IjoiQWh4YVNCdGhsWEtSOXM2RzV2V2xBTW...
41000000john16492448014QmZPLhT4qBiSHndYTLoW3uRyBWZ9RJqBUEceJDFju5FZKD0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a0x232603ff11610671a4c9ab8a3268ffc13caba4eb714b...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3cosmos19xfk4fypjdvh7klus3sqs6wjvv0frw8uaps48kspider mushroom page length point tenant plug ...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3...0x72b967a3bd50e7a7f3540caf4e91d3342ac578b7df06...{'pub_key': 'AxUpfJBdo9SaxS06HZ/Ll8mkSsttxfhCe...eyJwdWJfa2V5IjoiQXhVcGZKQmRvOVNheFMwNkhaL0xsOG...
.......................................
9951000000john1649244801995QmdTu7ixrtsM6gCHony3L3YiMM3ZAyrerHNBF2BmH2c6sd0xa796c56bf6351abb62536e8f1a71d10a8ba265cf0xc176d2d0321c7b29c88e7dfaea7d8031b38ce09f5d36...bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850cosmos100n4qt5rd3jefhl5ezrcxlu4uf8hd34kc8d52glumber chuckle scrap quantum clay ordinary dic...bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850...0x6a2657437f37009f112e1774ab29f350a47b665c86a0...{'pub_key': 'Ak72+BszxQHYtM+lE3skz9Qr+/yktGHWl...eyJwdWJfa2V5IjoiQWs3MitCc3p4UUhZdE0rbEUzc2t6OV...
9961000000john1649244801996QmbQfexR2AymywJtvPHNDXnv2sDzZPU2s7uNykigGY1NMZ0x7d5c21ebcfaf008cfe7ba8228665d8478a47adee0xd5d950b9d60dfcc801c98a8411434344423800e2243e...bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasfcosmos1qewddun7a48s8985jux04d4w3xacum37csvwwweye pair cry tent warfare abuse drop arena ste...bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf...0x8fca83c4c01fd63fa29d38206b4a2a0f421314185f54...{'pub_key': 'AgR6I7cau7/qGeuQsUxfd0RiKoWYT3lxQ...eyJwdWJfa2V5IjoiQWdSNkk3Y2F1Ny9xR2V1UXNVeGZkMF...
9971000000john1649244801997Qmao6HPcDmMZz8uRgjPummgNbvud2KkNLAvgtZ9xW6sNry0xa92d07ae7a4edc72bbba0eeb8bccdb816ad8ae4c0xe5293951e6301d3e83fc3eb364f0e1e8dc1772705c82...bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49cosmos1rucwkkqrzc4xglgqr3xwzxy887jxp6at7dwttzfinish stool kit skin acquire topic fitness pr...bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49...0x3f3faa62336a713597198adbf269af535ef95448491b...{'pub_key': 'AqzKba3tYSRcTVwO2LVQf9F46WB0EekGk...eyJwdWJfa2V5IjoiQXF6S2JhM3RZU1JjVFZ3TzJMVlFmOU...
9981000000john1649244801998QmbXgpNnAWoM6bwW3p3ByZgDfyRd13HZ8Rcpqz57crvXSm0xd260b6e1ace04748313760719bdecc21fb82ea0b0x87cb01173e33bf19c0296560f67d91b32be5107f381d...bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8cosmos15tuur8x82hnkz727l59mzjdn0u75z3szmz0d4qgate other decorate scissors boss glad empty g...bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8...0x8348c8d95e5814b18aa07be65dec1ff38ade605f9df2...{'pub_key': 'A79SefrWL+fEioxIkBS4DPr76CAKmMMm9...eyJwdWJfa2V5IjoiQTc5U2VmcldMK2ZFaW94SWtCUzREUH...
9991000000john1649244801999QmULWL493BM4AdAgc3c2rcsLGCDZV81u87SCJYGkvdvkFD0x662ddb861fdbd085da590d74bf0d4e12c52b8dc50x3e88c9104a651fc6330da0a195a2b54e4d832eddc0ac...bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6ncosmos15lvk37hzej3cdga9r8sp7x3rpas9p3v0ax4ty5resist wheat soon health spin scissors outside...bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n...0xd0d8df25df882cff482aa61847b54137a0ff7016708b...{'pub_key': 'AyKMkUxXK9+rJIE5Tatls7d90d97XPOTp...eyJwdWJfa2V5IjoiQXlLTWtVeFhLOStySklFNVRhdGxzN2...
\n

1000 rows × 12 columns

\n
" }, "execution_count": 2, "metadata": {}, @@ -218,11 +218,11 @@ "text": [ "yarn run v1.22.17\n", "$ ts-node index.ts --input root_testing_source_1000_addresses.json --output proof_testing_1000_addresses.json\n", - "Merkle root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "Merkle root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", "Number of addresses in the Merkle tree: 1999\n", - "Done in 4.27s.\n", + "Done in 3.64s.\n", "\n", - "Merkle root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "Merkle root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", "Number of addresses in the Merkle tree: 1999\n" ] } @@ -257,9 +257,9 @@ "{('root_testing_source_1000_addresses.json', 'temp/proofs_0.json', 0, 1001)}\n", "yarn run v1.22.17\n", "$ ts-node index.ts --input root_testing_source_1000_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 1001\n", - "Merkle root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "Merkle root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", "Number of addresses in the Merkle tree: 1001\n", - "Done in 3.03s.\n", + "Done in 2.79s.\n", "\n" ] } @@ -295,8 +295,8 @@ "outputs": [ { "data": { - "text/plain": " address amount \\\n0 0x53aab6fbd57f81474d5f982b7283db51de3c8317 1000000 \n1 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6 1000000 \n2 0x00ef128fe6552bbdbaa9ccd799348cf0bfc09004 1000000 \n3 0xbbe13e3406d7eed71c67cffb687459f3b217bf9f 1000000 \n4 0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d 1000000 \n... ... ... \n996 0xcf800ad16bf6144d60651b87dca581c78572ef1f 1000000 \n997 0x042b7342c7438babe46ac89a3d2329f07fad4df6 1000000 \n998 0x967e13eb434842b6040666b44ee6aa47db2d35d0 1000000 \n999 0xa92f2a2d27a1f6329c15bdada24c86ac2f3dd6c9 1000000 \n1000 cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn 1000000 \n\n proof \n0 [161e04d67252fe71120c2e00d55501f8c22a95564d5d8... \n1 [6a387858cf1b24bb77c557395634dd684547064aa4984... \n2 [cad95c432671e2767c87836f2971bb3634e055153e69b... \n3 [961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d... \n4 [d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d... \n... ... \n996 [a1959cdf7524769b9385e53ce9efdbe1989a15847483d... \n997 [a3eceb3255a10e3aa743b716545651e1b08678264fa29... \n998 [2a5b28037d80215e4574abf38c871afbf1c4c607221f1... \n999 [51390b99be7fc69c938e543dbcf2d0a3538da10624ee7... \n1000 [d27462aa80375ce17211fc423e757fafa63a68d4c3cfc... \n\n[1001 rows x 3 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00x53aab6fbd57f81474d5f982b7283db51de3c83171000000[161e04d67252fe71120c2e00d55501f8c22a95564d5d8...
10xde48fb7fcd78f33ebdef4956fb79e02bc70c97d61000000[6a387858cf1b24bb77c557395634dd684547064aa4984...
20x00ef128fe6552bbdbaa9ccd799348cf0bfc090041000000[cad95c432671e2767c87836f2971bb3634e055153e69b...
30xbbe13e3406d7eed71c67cffb687459f3b217bf9f1000000[961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d...
40xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d1000000[d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d...
............
9960xcf800ad16bf6144d60651b87dca581c78572ef1f1000000[a1959cdf7524769b9385e53ce9efdbe1989a15847483d...
9970x042b7342c7438babe46ac89a3d2329f07fad4df61000000[a3eceb3255a10e3aa743b716545651e1b08678264fa29...
9980x967e13eb434842b6040666b44ee6aa47db2d35d01000000[2a5b28037d80215e4574abf38c871afbf1c4c607221f1...
9990xa92f2a2d27a1f6329c15bdada24c86ac2f3dd6c91000000[51390b99be7fc69c938e543dbcf2d0a3538da10624ee7...
1000cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn1000000[d27462aa80375ce17211fc423e757fafa63a68d4c3cfc...
\n

1001 rows × 3 columns

\n
" + "text/plain": " address amount \\\n0 0x9652c5b6b5fbb66725d04a9c60910bddeffea626 1000000 \n1 0xc054139731e52960f8074be8a5e95f3fcd721cf3 1000000 \n2 0x28ad7d9904c8b3e114251b273e7d5ca5a875110c 1000000 \n3 0x3bdac6c42a44eb2945089ce04c2ae76d421b8e32 1000000 \n4 0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a 1000000 \n... ... ... \n996 0x7d5c21ebcfaf008cfe7ba8228665d8478a47adee 1000000 \n997 0xa92d07ae7a4edc72bbba0eeb8bccdb816ad8ae4c 1000000 \n998 0xd260b6e1ace04748313760719bdecc21fb82ea0b 1000000 \n999 0x662ddb861fdbd085da590d74bf0d4e12c52b8dc5 1000000 \n1000 cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz 1000000 \n\n proof \n0 [452b463358c489b9e0189b016b310080b9e9fbcd6beff... \n1 [6bb58e973986346c388792576715f282c70420036cefa... \n2 [1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4... \n3 [9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366... \n4 [c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4... \n... ... \n996 [36d2307a53fe7b424779d2cb3009cb505c718aa56d8ad... \n997 [973c9930745e262272ceb092fb2785c7a007b12abd4e4... \n998 [75565685ca4d8ee386ffb7eba95d1494b9533c4c6e947... \n999 [e73331ae9932fd23b621cf9bc834db5109aeba05e8aca... \n1000 [b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09... \n\n[1001 rows x 3 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00x9652c5b6b5fbb66725d04a9c60910bddeffea6261000000[452b463358c489b9e0189b016b310080b9e9fbcd6beff...
10xc054139731e52960f8074be8a5e95f3fcd721cf31000000[6bb58e973986346c388792576715f282c70420036cefa...
20x28ad7d9904c8b3e114251b273e7d5ca5a875110c1000000[1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4...
30x3bdac6c42a44eb2945089ce04c2ae76d421b8e321000000[9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366...
40xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a1000000[c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4...
............
9960x7d5c21ebcfaf008cfe7ba8228665d8478a47adee1000000[36d2307a53fe7b424779d2cb3009cb505c718aa56d8ad...
9970xa92d07ae7a4edc72bbba0eeb8bccdb816ad8ae4c1000000[973c9930745e262272ceb092fb2785c7a007b12abd4e4...
9980xd260b6e1ace04748313760719bdecc21fb82ea0b1000000[75565685ca4d8ee386ffb7eba95d1494b9533c4c6e947...
9990x662ddb861fdbd085da590d74bf0d4e12c52b8dc51000000[e73331ae9932fd23b621cf9bc834db5109aeba05e8aca...
1000cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz1000000[b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09...
\n

1001 rows × 3 columns

\n
" }, "execution_count": 6, "metadata": {}, @@ -327,8 +327,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16491805420 QmYkvRCFomDU2kTS8tPHyc2dq8zbH5sGX3UkSdNwhcA3KU \n1 1000000 john16491805421 QmcgbLatva5ByF9E9PEkvWD8MGFLkn4ysPWEYzmhnBusqN \n2 1000000 john16491805422 Qmes2KpFKKyVhMExUx9WYm1XhaXpXsJzT8nngGEZo8THNX \n3 1000000 john16491805423 QmTbBu9yNkpyvsFaRTFG2LajAtL6aeR8TxKwmvZaGtonpu \n4 1000000 john16491805424 QmNd8GkXwqs2avFgB2vx6anU6PqCPwMBrVaLr5h8py5gdv \n\n ethereum_address \\\n0 0x53aab6fbd57f81474d5f982b7283db51de3c8317 \n1 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6 \n2 0x00ef128fe6552bbdbaa9ccd799348cf0bfc09004 \n3 0xbbe13e3406d7eed71c67cffb687459f3b217bf9f \n4 0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d \n\n ethereum_private_key \\\n0 0x5d9bb0a41022bc64517176c2b7683eb13db0cc3099ff... \n1 0x103392bdb81d67f69722608de6a33d01c4bcac72f4f8... \n2 0xbc057c174aa9f5a7ce6cd8970c5b85381e6bf05553fb... \n3 0xc53fbb9e5a0383a7d11f34248ab507c6749e5433a533... \n4 0x8f34e2dac8046e1fb55d130a522c7eba2ec884271241... \n\n bostrom_address \\\n0 bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 \n1 bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f \n2 bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3 \n3 bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh \n4 bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v \n\n cosmos_address \\\n0 cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn \n1 cosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2tw \n2 cosmos1j7zq5gs74hlx0v0wlkfueuz2agdnm0jdx8rvzk \n3 cosmos183y9le3eqqy058fjkk2l23f54gxv2vkymmn87s \n4 cosmos1c22rcy7lq55qrcllvyxy0d4dm8we7h3uu9j2yt \n\n cosmos_seed \\\n0 exit cash extra kiss night bacon input tackle ... \n1 brown vacuum craft mask puzzle option subway p... \n2 pool loop myth tonight submit library refuse e... \n3 initial police glance human okay pave tornado ... \n4 excess choose sweet fluid borrow crunch unfair... \n\n message \\\n0 bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5... \n1 bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f... \n2 bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3... \n3 bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh... \n4 bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v... \n\n ethereum_message_signature \\\n0 0x659812efcc33bd31bb6dd313305b701a9e964ffe4819... \n1 0x02ba7cd56909d60fa871286bddea9b803d737dff9e70... \n2 0x28877399a194b0254e59cc51afb115d9607a6e13a266... \n3 0x78c51751be88294f022551bb8c46fb5bdda8cabd6cac... \n4 0xcb1a4b6eed38a4d1cdd2ca93f0d621d98db04de82dbc... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A1gm6WiIDTYeIyt9QSSGcauYKb35OCCfy... \n1 {'pub_key': 'AtX2v1wR/Je2l4sRLHbsA3WbK5s0dtKDW... \n2 {'pub_key': 'AxPpSNqt0t1PuN+hsE8YGusfpjbKfShFu... \n3 {'pub_key': 'AuRQu3Pd0lH0wkQZBQtKanE02zIZZT1yA... \n4 {'pub_key': 'AlqmKMZ7WV49o9daIYFl286RDKRCxQ7Cf... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTFnbTZXaUlEVFllSXl0OVFTU0djYX... \n1 eyJwdWJfa2V5IjoiQXRYMnYxd1IvSmUybDRzUkxIYnNBM1... \n2 eyJwdWJfa2V5IjoiQXhQcFNOcXQwdDFQdU4raHNFOFlHdX... \n3 eyJwdWJfa2V5IjoiQXVSUXUzUGQwbEgwd2tRWkJRdEthbk... \n4 eyJwdWJfa2V5IjoiQWxxbUtNWjdXVjQ5bzlkYUlZRmwyOD... \n\n ethereum_proof \\\n0 [161e04d67252fe71120c2e00d55501f8c22a95564d5d8... \n1 [6a387858cf1b24bb77c557395634dd684547064aa4984... \n2 [cad95c432671e2767c87836f2971bb3634e055153e69b... \n3 [961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d... \n4 [d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d... \n\n cosmos_proof \n0 [d27462aa80375ce17211fc423e757fafa63a68d4c3cfc... \n1 NaN \n2 NaN \n3 NaN \n4 NaN ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16491805420QmYkvRCFomDU2kTS8tPHyc2dq8zbH5sGX3UkSdNwhcA3KU0x53aab6fbd57f81474d5f982b7283db51de3c83170x5d9bb0a41022bc64517176c2b7683eb13db0cc3099ff...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjnexit cash extra kiss night bacon input tackle ...bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5...0x659812efcc33bd31bb6dd313305b701a9e964ffe4819...{'pub_key': 'A1gm6WiIDTYeIyt9QSSGcauYKb35OCCfy...eyJwdWJfa2V5IjoiQTFnbTZXaUlEVFllSXl0OVFTU0djYX...[161e04d67252fe71120c2e00d55501f8c22a95564d5d8...[d27462aa80375ce17211fc423e757fafa63a68d4c3cfc...
11000000john16491805421QmcgbLatva5ByF9E9PEkvWD8MGFLkn4ysPWEYzmhnBusqN0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d60x103392bdb81d67f69722608de6a33d01c4bcac72f4f8...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4fcosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2twbrown vacuum craft mask puzzle option subway p...bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f...0x02ba7cd56909d60fa871286bddea9b803d737dff9e70...{'pub_key': 'AtX2v1wR/Je2l4sRLHbsA3WbK5s0dtKDW...eyJwdWJfa2V5IjoiQXRYMnYxd1IvSmUybDRzUkxIYnNBM1...[6a387858cf1b24bb77c557395634dd684547064aa4984...NaN
21000000john16491805422Qmes2KpFKKyVhMExUx9WYm1XhaXpXsJzT8nngGEZo8THNX0x00ef128fe6552bbdbaa9ccd799348cf0bfc090040xbc057c174aa9f5a7ce6cd8970c5b85381e6bf05553fb...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3cosmos1j7zq5gs74hlx0v0wlkfueuz2agdnm0jdx8rvzkpool loop myth tonight submit library refuse e...bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3...0x28877399a194b0254e59cc51afb115d9607a6e13a266...{'pub_key': 'AxPpSNqt0t1PuN+hsE8YGusfpjbKfShFu...eyJwdWJfa2V5IjoiQXhQcFNOcXQwdDFQdU4raHNFOFlHdX...[cad95c432671e2767c87836f2971bb3634e055153e69b...NaN
31000000john16491805423QmTbBu9yNkpyvsFaRTFG2LajAtL6aeR8TxKwmvZaGtonpu0xbbe13e3406d7eed71c67cffb687459f3b217bf9f0xc53fbb9e5a0383a7d11f34248ab507c6749e5433a533...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qhcosmos183y9le3eqqy058fjkk2l23f54gxv2vkymmn87sinitial police glance human okay pave tornado ...bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh...0x78c51751be88294f022551bb8c46fb5bdda8cabd6cac...{'pub_key': 'AuRQu3Pd0lH0wkQZBQtKanE02zIZZT1yA...eyJwdWJfa2V5IjoiQXVSUXUzUGQwbEgwd2tRWkJRdEthbk...[961a5da54f2c4ec9b3e2e29297f2d8cd6c7161503cb9d...NaN
41000000john16491805424QmNd8GkXwqs2avFgB2vx6anU6PqCPwMBrVaLr5h8py5gdv0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d0x8f34e2dac8046e1fb55d130a522c7eba2ec884271241...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6vcosmos1c22rcy7lq55qrcllvyxy0d4dm8we7h3uu9j2ytexcess choose sweet fluid borrow crunch unfair...bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v...0xcb1a4b6eed38a4d1cdd2ca93f0d621d98db04de82dbc...{'pub_key': 'AlqmKMZ7WV49o9daIYFl286RDKRCxQ7Cf...eyJwdWJfa2V5IjoiQWxxbUtNWjdXVjQ5bzlkYUlZRmwyOD...[d4cad2b1e32ae59d7c96d7be79bd8acfd27804c87661d...NaN
\n
" + "text/plain": " amount nickname avatar \\\n0 1000000 john16492448010 QmWJabGXjQzQGBaufL4G52uWJ6pVXk6JAdSJ9FaP2er4HQ \n1 1000000 john16492448011 QmVd9z3xpVuteLHfGxwyuqZ59RbqHJvo9rTnMmJydm2KFH \n2 1000000 john16492448012 QmNP5sKxtM4CSGf7kTiWofVRnaM1BLypz1Bzp938CaELQe \n3 1000000 john16492448013 QmcgdRsZ9zhbwWwzk6YvjMPRPvAAPS1bHtCNyXcA8AWwNc \n4 1000000 john16492448014 QmZPLhT4qBiSHndYTLoW3uRyBWZ9RJqBUEceJDFju5FZKD \n\n ethereum_address \\\n0 0x9652c5b6b5fbb66725d04a9c60910bddeffea626 \n1 0xc054139731e52960f8074be8a5e95f3fcd721cf3 \n2 0x28ad7d9904c8b3e114251b273e7d5ca5a875110c \n3 0x3bdac6c42a44eb2945089ce04c2ae76d421b8e32 \n4 0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a \n\n ethereum_private_key \\\n0 0xc8a81ae383de21ab9222b3a7c36d4851a481371e314b... \n1 0xd569412597b83e8cc22d2d5afda4ca5c72e45e44f8a9... \n2 0x201c6d3ad75b666634d4f6775719ee6bff005428d8d5... \n3 0x7b34ba8f8da648fd458cb472e219cac67aeab9528c82... \n4 0x232603ff11610671a4c9ab8a3268ffc13caba4eb714b... \n\n bostrom_address \\\n0 bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 \n1 bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj \n2 bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu \n3 bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav \n4 bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3 \n\n cosmos_address \\\n0 cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz \n1 cosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4 \n2 cosmos19wakfjwwy2q2a4tt040zwlfje63hhgymy3vujm \n3 cosmos17nvgh8e4628962yd08zdygpg77g06qvf0v60rt \n4 cosmos19xfk4fypjdvh7klus3sqs6wjvv0frw8uaps48k \n\n cosmos_seed \\\n0 know welcome original south crane number blast... \n1 swear jealous fix wait duck gossip amazing loy... \n2 security ladder shop brush sauce edge category... \n3 horse file tissue valid tomorrow liar genius c... \n4 spider mushroom page length point tenant plug ... \n\n message \\\n0 bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49... \n1 bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj... \n2 bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu... \n3 bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav... \n4 bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3... \n\n ethereum_message_signature \\\n0 0xd4761ed5a2aaaf39b1129b488d5d674b395f8d43b494... \n1 0x08c64cbb5f56c4a68f310fcd76d0d9580546c74800de... \n2 0x8b9f2830d4eb5142c14f0fd894a0f6b2ed0d912adae0... \n3 0xb03719a1aff6edb9a1d65d9873c32bec9ed9301a20fc... \n4 0x72b967a3bd50e7a7f3540caf4e91d3342ac578b7df06... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Ak2zZhFmb277JrYppue8USwsUAxu7RTK9... \n1 {'pub_key': 'Av+Omf/jShJAbKSzmeLoXMpfkCPOO23Ok... \n2 {'pub_key': 'A50DR3BbqdA7GRRIe3p+whxcgy6Z7lYzU... \n3 {'pub_key': 'AhxaSBthlXKR9s6G5vWlAMotKdSR3ftR2... \n4 {'pub_key': 'AxUpfJBdo9SaxS06HZ/Ll8mkSsttxfhCe... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQWsyelpoRm1iMjc3SnJZcHB1ZThVU3... \n1 eyJwdWJfa2V5IjoiQXYrT21mL2pTaEpBYktTem1lTG9YTX... \n2 eyJwdWJfa2V5IjoiQTUwRFIzQmJxZEE3R1JSSWUzcCt3aH... \n3 eyJwdWJfa2V5IjoiQWh4YVNCdGhsWEtSOXM2RzV2V2xBTW... \n4 eyJwdWJfa2V5IjoiQXhVcGZKQmRvOVNheFMwNkhaL0xsOG... \n\n ethereum_proof \\\n0 [452b463358c489b9e0189b016b310080b9e9fbcd6beff... \n1 [6bb58e973986346c388792576715f282c70420036cefa... \n2 [1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4... \n3 [9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366... \n4 [c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4... \n\n cosmos_proof \n0 [b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09... \n1 NaN \n2 NaN \n3 NaN \n4 NaN ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16492448010QmWJabGXjQzQGBaufL4G52uWJ6pVXk6JAdSJ9FaP2er4HQ0x9652c5b6b5fbb66725d04a9c60910bddeffea6260xc8a81ae383de21ab9222b3a7c36d4851a481371e314b...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtzknow welcome original south crane number blast...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49...0xd4761ed5a2aaaf39b1129b488d5d674b395f8d43b494...{'pub_key': 'Ak2zZhFmb277JrYppue8USwsUAxu7RTK9...eyJwdWJfa2V5IjoiQWsyelpoRm1iMjc3SnJZcHB1ZThVU3...[452b463358c489b9e0189b016b310080b9e9fbcd6beff...[b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09...
11000000john16492448011QmVd9z3xpVuteLHfGxwyuqZ59RbqHJvo9rTnMmJydm2KFH0xc054139731e52960f8074be8a5e95f3fcd721cf30xd569412597b83e8cc22d2d5afda4ca5c72e45e44f8a9...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zjcosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4swear jealous fix wait duck gossip amazing loy...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj...0x08c64cbb5f56c4a68f310fcd76d0d9580546c74800de...{'pub_key': 'Av+Omf/jShJAbKSzmeLoXMpfkCPOO23Ok...eyJwdWJfa2V5IjoiQXYrT21mL2pTaEpBYktTem1lTG9YTX...[6bb58e973986346c388792576715f282c70420036cefa...NaN
21000000john16492448012QmNP5sKxtM4CSGf7kTiWofVRnaM1BLypz1Bzp938CaELQe0x28ad7d9904c8b3e114251b273e7d5ca5a875110c0x201c6d3ad75b666634d4f6775719ee6bff005428d8d5...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vucosmos19wakfjwwy2q2a4tt040zwlfje63hhgymy3vujmsecurity ladder shop brush sauce edge category...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu...0x8b9f2830d4eb5142c14f0fd894a0f6b2ed0d912adae0...{'pub_key': 'A50DR3BbqdA7GRRIe3p+whxcgy6Z7lYzU...eyJwdWJfa2V5IjoiQTUwRFIzQmJxZEE3R1JSSWUzcCt3aH...[1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4...NaN
31000000john16492448013QmcgdRsZ9zhbwWwzk6YvjMPRPvAAPS1bHtCNyXcA8AWwNc0x3bdac6c42a44eb2945089ce04c2ae76d421b8e320x7b34ba8f8da648fd458cb472e219cac67aeab9528c82...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuavcosmos17nvgh8e4628962yd08zdygpg77g06qvf0v60rthorse file tissue valid tomorrow liar genius c...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav...0xb03719a1aff6edb9a1d65d9873c32bec9ed9301a20fc...{'pub_key': 'AhxaSBthlXKR9s6G5vWlAMotKdSR3ftR2...eyJwdWJfa2V5IjoiQWh4YVNCdGhsWEtSOXM2RzV2V2xBTW...[9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366...NaN
41000000john16492448014QmZPLhT4qBiSHndYTLoW3uRyBWZ9RJqBUEceJDFju5FZKD0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a0x232603ff11610671a4c9ab8a3268ffc13caba4eb714b...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3cosmos19xfk4fypjdvh7klus3sqs6wjvv0frw8uaps48kspider mushroom page length point tenant plug ...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3...0x72b967a3bd50e7a7f3540caf4e91d3342ac578b7df06...{'pub_key': 'AxUpfJBdo9SaxS06HZ/Ll8mkSsttxfhCe...eyJwdWJfa2V5IjoiQXhVcGZKQmRvOVNheFMwNkhaL0xsOG...[c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4...NaN
\n
" }, "execution_count": 7, "metadata": {}, @@ -438,7 +438,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Passport contract address: bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\n" + "Passport contract address: bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\n" ] } ], @@ -515,7 +515,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8\n" + "Gift contract address: bostrom1g3pdg6xp89ehqlha8tshtsem4trgqcg4qd9qxfmc6u8g6plj7ntq32x2ey\n" ] } ], @@ -612,9 +612,9 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: 4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638\n", + "\tmerkle_root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", "Gas used: 117,294\n", - "Tx hash: E9BC5972D6FE9142342E86B36B8A8034E17B21667446DEED24BC18EFC4E38299\n" + "Tx hash: E3CB0B2B0008DB86095BE8E5C3A05FA9E277AF2326C3D0D47BD2CC6024697F0F\n" ] } ], @@ -652,8 +652,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8\n", - "{'data': {'merkle_root': '4beb38300c23f5b1834b36a5a79f0e2a61827388077d4d44e9bb88bc6cb47638'}}\n" + "Gift contract bostrom1g3pdg6xp89ehqlha8tshtsem4trgqcg4qd9qxfmc6u8g6plj7ntq32x2ey\n", + "{'data': {'merkle_root': 'b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860'}}\n" ] } ], @@ -703,2005 +703,2005 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 1boot\n", - "\treceiver: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\treceiver: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\treceiver: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", "\tamount: 1boot\n", - "\treceiver: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\treceiver: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\treceiver: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\treceiver: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\treceiver: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\treceiver: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\treceiver: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\treceiver: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zlsmu65zf3hfzhwp2nkugf39f8jrpa28l2cga9\n", + "\treceiver: bostrom1pkmdt3jga70afwx8u05quc0qkzuudr8lxm6asd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x9gypmwn7r53rkkrnp9szwn56t3um8ydjdpx7q\n", + "\treceiver: bostrom1pgvgd7lszh0mm4vzhrwud4h7sfsfzpgyz7lj6k\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rq03g02qswr9lqzwhv2jnaz9vg88a86pt3y02f\n", + "\treceiver: bostrom1jwtwne35zczy9wt0n4srw46yfe3ur5z7uzd0zk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yqe4x3znsuqjqs0tkzcj6f69tryw49mttmnkq8\n", + "\treceiver: bostrom1gh0yf9tngc7gmveh0q7clf73qvqwrqn6axymvf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1khw2pg8ppv2twaz35nj7gsf766vx9uq36nyhgq\n", + "\treceiver: bostrom1jczu2lqc9tn3tx9tjts8dqqgpzq7agdta7w8j2\n", "\tamount: 1boot\n", - "\treceiver: bostrom15kms2d4urmwadnljpjqzmwum8vwtx3yxxxuh9k\n", + "\treceiver: bostrom150ewsdjjzv3lf89ws24j36grtuc8rqexa0n76x\n", "\tamount: 1boot\n", - "\treceiver: bostrom19r7aeff0r5xnatt6v07swa2pny7c0uucsgn0q5\n", + "\treceiver: bostrom1aj6swpj9kzhqqzadypgy8efcztrxcrfk3087s8\n", "\tamount: 1boot\n", - "\treceiver: bostrom18a2mlj8kq9ny003da5lsc275yz04ttzzjjhrmq\n", + "\treceiver: bostrom1gynv9zuvcx77v58jdefv9lve7r39qc57wlq0gh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lgl7p6s0ndg7n5jedqjgmxh2udwtta4sh7rtgk\n", + "\treceiver: bostrom1a9z6x2w2m98d2f8p7402zu2wa5pgy884x24ezm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yewqaleqj38qpltr2ddvvh7melq0kw0gk24tz7\n", + "\treceiver: bostrom1r68k2jsqxwnd67qcyvz0tusjzgd02eusrhqwz2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1js4s4wn9c4lzuu5eqkcupf43lad9j4d2tq56f7\n", + "\treceiver: bostrom10xu9l88v6asa5hx5dta3npuwch3ru424lqazyq\n", "\tamount: 1boot\n", - "\treceiver: bostrom14uz6ezvc4hzhj0wd9g68ulgsp8uxyky4p49xcu\n", + "\treceiver: bostrom1nwu7t3zkr6lmdv8p8h678pjkpj3tasdttehdvj\n", "\tamount: 1boot\n", - "\treceiver: bostrom14qc4u4hpqjqegr0fy3crw6eg88sf0ra9vvmt5z\n", + "\treceiver: bostrom1783mzr7qg4l4xvheesmv9nkesz6mcn72d7lhru\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pm5wp6ytgvnv369r90dk7rd5cstdensqeyj3qe\n", + "\treceiver: bostrom1873t7da09taumkd95etmvsq650hk78sj392pyn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tsf2f9hqj2jkhy06qyxjf26nyf0nwr7tc38ap8\n", + "\treceiver: bostrom19ryhk9692hterukzpq7efcvkns7ccua4kcf9hw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tlhlzkj8x0u89qxthmjx307gkpqqa8c2xdslcv\n", + "\treceiver: bostrom1p6sd3ru9u73ulm7luc3thwl53n4fupg8yvyqkr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1v9xr20dscvczhtq23xskzlhkkk607he5mdxvzy\n", + "\treceiver: bostrom1xxz0jfxswpqtg60va8l6wgu2zsyg237cke02tz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ejxcyakmgtrcx5ve5c8zt4k409rlr4s69y6aek\n", + "\treceiver: bostrom1k88adk3enw85smyumcr9u24y5zpxdap4znwngq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c6x4n952dtdanmfhpgmgqyzp0qdp4d47rkvpk0\n", + "\treceiver: bostrom15f6rqmc5w6jurfrk7xvr3gmqmc8zgl6929wju0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sa3j9n54ath0xmcn5nfv03xv6slkkxff8zhpra\n", + "\treceiver: bostrom1fqs05m3rhtpr2526p9qfz6fgaayp0gmuycfx5v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kwx9vqlzpr64ha6s00m4zn938krs3et5le2qtw\n", + "\treceiver: bostrom17r05hh26uht0rxajhu2txtxejx2ga3nl5jlfhh\n", "\tamount: 1boot\n", - "\treceiver: bostrom103lgm6eq8kxlujwl7pqzsma0l89cw5h504u4k0\n", + "\treceiver: bostrom19q3kyga6wydfcgvhynxemzr9ajjqcjgg9nzyfk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1slqyxc9ss6s36ew9w289lg047fnmv0zegdfg0l\n", + "\treceiver: bostrom10mt6mw8p5pll6h2yspjaqdq9y3js0pgy4gn43p\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mvk58tufhdh7z8we73n4uf5fkafwnq4yvzg6g6\n", + "\treceiver: bostrom1gdcxhvap7gl8xyg8zs77ee03edjslfq4xlnf6x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hhxzpy9ym2f9g4k00p3kqu50ze067r9k7pxufg\n", + "\treceiver: bostrom18yz235pp777rvr2wv62qlqmd2zmpu4a5uzj9k4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r878ufyqaja70en4ft9lcz3rhxadu37xv2c057\n", + "\treceiver: bostrom1gghry9skawq9s69ptrd6dcgeykzgwxa2lvpzj8\n", "\tamount: 1boot\n", - "\treceiver: bostrom153rkd4vu656e5lv3g2mzt2rqfsha3c7hct4fye\n", + "\treceiver: bostrom1j5wp8d30zt5gn7c9qe8j7enexg2wsuuqwqc8gu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1se4wsnmp6lar8afdnnsxdvkrcfnkf73hpl7whk\n", + "\treceiver: bostrom1u09l3za8dxvuxs93d6lvd785vyxdwzdkdr56xl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1t0784zaayvpe2qpm6yt3k2skkrtal7dlme6k4f\n", + "\treceiver: bostrom1lqvs6yu9t0fgkffaa6pcpkclwrhpestuqdxyce\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vqamvjh9u5a2u2ksuxtg2xzew8k4hjthzggmf7\n", + "\treceiver: bostrom17kuen92pt3j32yl0xjseeystwqvxlakaxnmhs9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ekh0xkhef3cv9tu6fj0chjgq7sulrdefruw6kx\n", + "\treceiver: bostrom13wh7h9wdpn5m6lveqp7f9y6jl8kkrn5arz88au\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jjjz67ue9nzl6mazw86n2jfsqcsljuvnr97ar7\n", + "\treceiver: bostrom14e7x66gtngtcxe73g6tvdy84wefzwwnhsvcsl8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dhjl6anmvv3vuh6zyaf86v3p3sf0deamw9ssjc\n", + "\treceiver: bostrom17sqyk6vgtv9e98qhte3gq2psj9ewte3ehvvx3z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1aehnyppzk06wytk02pzvkmd4cd5htv5s06wpss\n", + "\treceiver: bostrom1radx6ajpyh35mymxxsl75alqm9fktxrrthxpur\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pd3acx8lttynhghm0thgshg7wxrv4yt6hjmnfe\n", + "\treceiver: bostrom1wh8j3s8gzlcxk8ejzgh7uvq03kelu7zaar25ek\n", "\tamount: 1boot\n", - "\treceiver: bostrom126se6s2ft4vwkv5slnuq4l347ms4el9pjvyyfp\n", + "\treceiver: bostrom1csfcj4ykz26aycexwua252gpymtsjrcwxufyk6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1em5ap0st5u9dhagngm4np2g36g6m69xle5xtu3\n", + "\treceiver: bostrom16dxnwpg72wszf0u0llzazsu08vulg7atmh2pmz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fdumyl6lne5gd02ked6xp5jy4g0fmnsk22cr6s\n", + "\treceiver: bostrom1w4d5nvpnyudrz9mg3a8yserjq2r9nmepvrjh4p\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lcenkqpdp3dmsffmd8xez7apm3we8ky7vefdfa\n", + "\treceiver: bostrom1dn7sdu9upnq4u89j9xpd6jnlsj9pkawzd0w4ql\n", "\tamount: 1boot\n", - "\treceiver: bostrom1y80d3t59yztu3uj67ak0qwu39m8x7ka0g0rsg2\n", + "\treceiver: bostrom1xyzdxaydpv6gekfktge69383r3qx4t32mvlw5z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tweka9vefsp0rau8htjk45uukn324ua4rtmg7p\n", + "\treceiver: bostrom19wexkplyvatfz6fyevlkptnq3s2deap987684w\n", "\tamount: 1boot\n", - "\treceiver: bostrom188q6rk80h9dhvyqdsvwhyqe6afl4cq4gv35l5v\n", + "\treceiver: bostrom10w75az8kcnt0zw8zcaa4sh9ygdhghpydr4rszv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sh0dam8jdl7p5thdjgf29sne7jyy5rfaduqdjx\n", + "\treceiver: bostrom1put45u0k0qjecr0234tmleysapw0xtfedwwsz9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wp8ylq4klv0w7d6h5u049mnk5w3h7n6a545wng\n", + "\treceiver: bostrom14usfh7dtfk35fymrrzh4m0wm6adcml8dtdnvgr\n", "\tamount: 1boot\n", - "\treceiver: bostrom19v8520q39mr26m0g843870kuj8nq39l7y33eeh\n", + "\treceiver: bostrom13ej63hl3ud85vs0lrcj89umyjj23rrhuhvzdux\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vksek6w76sz7we3s7ag9ea7dtcp58gusn49gl3\n", + "\treceiver: bostrom1zhur3ey3w8c80xdtfgqc6h2jxujpav4lrfwf9h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nvr537t5qmg25jjdfzg26tpzqrvn548ccs7m6t\n", + "\treceiver: bostrom1kvtc2sqy4qls6h884z5uxjht65ltyuqfccd0ua\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vfqa8pc4psdk0rqr6v49mch9vgann0dtwncv3t\n", + "\treceiver: bostrom1vkmmw9z5nr7eflknqgapssmj33uuxtpj5fatuj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h7eyrpqv56e2ja34r6v7ufl7akj2u8lffya7wa\n", + "\treceiver: bostrom1pkey7e4cluj0834vvxskmrvjqq4qf7rkdm3kpp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qh5n7txscgh8mfdsdjv9dfrctrpn8rne37l37e\n", + "\treceiver: bostrom1n7tult5ktrm59l6jfchjpfj6xdcyglv73slam8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xjfpvqeckum8f5mq68k33g3fw4sa0tw9jevnek\n", + "\treceiver: bostrom1a0zkk7kkrqazh3ssgz548dhlh53jt6e2czvwxk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xun2mrzvecfxztsu6ygtwrsff34xltn5g2ckup\n", + "\treceiver: bostrom1uk3fcslrzygpmusqz5yx0fymwyf5862u3gutsp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lstp05wp7ey62cm6eqpled0qsskg3t883js5uq\n", + "\treceiver: bostrom13d4gqy047q4mw8dvq53pffup8ayujlmktfwysm\n", "\tamount: 1boot\n", - "\treceiver: bostrom132fm6704p6gtmgatuf27658j5v4yn096e00srj\n", + "\treceiver: bostrom1vpjq60s62ke3rntcks5l4jcxht3an6d840mwjh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mg2xktvjeueqxuhnqw4wc5ttsqv8xzfnwpptwp\n", + "\treceiver: bostrom1s54k099qxe22mnxnal8et572um5ne7f75zyapy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tvazs99r4p4uhyy2dj2q4xp54dcjsdtv0gwvdv\n", + "\treceiver: bostrom17clpjxe7pgx22w3r65apch5k75rpxv6y709emy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sl5yxfy36qt896z54nyn5nr8rkk2exz4cflhpr\n", + "\treceiver: bostrom1vk9ec4z82yc2njsyh6hxmlsptwwal7a75j9tz8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zfqj8lpuj4h6cnf6fg6lnch7f8d7jal7ler4nk\n", + "\treceiver: bostrom1g437fxncnap2dlg7yxydag4a3wuwxsgmkyyhv2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tn67440wmtnxhzcchfwupy3a786v4s33p6jglr\n", + "\treceiver: bostrom1xl8fu730cmlvnvugp5xvaqma0gtpv4nzactffw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tcuvs2ryzmpkgl5u7cqax2cx3r0fsavpkmc2z0\n", + "\treceiver: bostrom1wysr237l8lsdcemerlyhps9pq7y0k4yqyupckl\n", "\tamount: 1boot\n", - "\treceiver: bostrom16t9akqwgtwfhvc90ltctg72jap4p6w3k6qx2qn\n", + "\treceiver: bostrom10mfqvzjt8sr57vrpt0zfqf0lqya0rdkqjj5j74\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w0mpyfm9kfslquvwnlt9edu32x00j3gyv8v0kj\n", + "\treceiver: bostrom18aplapdfnjxkg02dm869yfycsjzl5cqr6swqx6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fmcanu5q9z2m56uj72xux9av2ntwfdm54nkhm3\n", + "\treceiver: bostrom1zmvwylddsgqyvllcsetq5m409l5a3vspms5wdz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ytzz8gd2x75ecsnz083n3408hlm8pfjjr4crkm\n", + "\treceiver: bostrom1r6rj7gapqct2g5jdqhjgg5ersn6jcmkmrq477r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tlehwsd0paf87a0gzvhnxdf88fes92ndfc2d3d\n", + "\treceiver: bostrom1j6z2w4alnq06n6jn5kc9rxkc7avm88pu2g7fys\n", "\tamount: 1boot\n", - "\treceiver: bostrom19vzlkp7udu92ykha76nkm88rsy0r7p5krjt5yd\n", + "\treceiver: bostrom16mvylptyn8jcepe96g220wrnezv05j4egk3cup\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dxarkqm8xajtte2jd8hfxk7j8905gydwal9s7x\n", + "\treceiver: bostrom1kjcqcdmzrht8qmhhj8ethnnmg5fxq6v3htm082\n", "\tamount: 1boot\n", - "\treceiver: bostrom1krvh3dk4aa2fwhz38zr82vdsx8d5ygprk8vxwy\n", + "\treceiver: bostrom1xuk4h9tj0uu4h3t7ykkr020zlzvv34j7ngdaq4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wdcuhcpuswzvwdn27fhvmw45m7qe7kgpsu9cgj\n", + "\treceiver: bostrom1u2nhevtfwl7fxjxdp85frk5a06nrh5764xrhns\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sym0t6t0fejcamztrzwm3dgqkzl7mqezr57ge5\n", + "\treceiver: bostrom1wcuwxftlr3rtf9thzrxu0wahq3d3frjc2jau07\n", "\tamount: 1boot\n", - "\treceiver: bostrom10ueazd5c6qm7a8tpx8a308mx3e4pyv89j7ymk5\n", + "\treceiver: bostrom13rjj5lehf2yfm4vpeh598xsuuf9hadl5n4a0ed\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jxsuppsey455zpu2y2z97pa86qrl4k7gs2sfqy\n", + "\treceiver: bostrom1sxs0m05m8twvgl3sf9y8pm6np4w0kmr7emc80w\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a0lm43fef7vg2dxx69s7xappjlnwavtlskawj0\n", + "\treceiver: bostrom1s99u8qq6u3trxcyq8uw7g4fh5jkjkdxge0r36a\n", "\tamount: 1boot\n", - "\treceiver: bostrom18cl0ty4v9rdqerneferk048e70qd28cps0wk9m\n", + "\treceiver: bostrom1t2am49htxga7evx0dgm0lzfxhlhmqwnncggrx7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1394m5r6a42qrzg6eukaaq52t4kmwh274efvj0t\n", + "\treceiver: bostrom1mld677e80den86sqp7ye3u5ju72uklz9sx5cvf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gdy07av5tueu55sayfqltddjummqf70fhfccgf\n", + "\treceiver: bostrom1tkxrcw3uy5asfgwpftnfd6w4qn7scpsjjnzdfj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c5aecuyv9wf574kxmuc2h44sah2cf0xnjr6hx9\n", + "\treceiver: bostrom1mtgxv0d66xnwq7uszp3a9fkw6rfcden3v78ulr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1js972uhs4ydpjge6x4k9d9hfzac38x8zme5qyc\n", + "\treceiver: bostrom1tepjmq8nfjg0l2f8t0vaeagpjwxt0g6dlupxlm\n", "\tamount: 1boot\n", - "\treceiver: bostrom17dz34w52nwn6xdeatagdd9f6uf7tj0purs8qad\n", + "\treceiver: bostrom1uk8zdllpaxyamg26amhgexc5qtja5pvav7kg0y\n", "\tamount: 1boot\n", - "\treceiver: bostrom13d4085jaxuy5grr6h0hrzx9rzuuwe6ac6pdft5\n", + "\treceiver: bostrom1qfwzwgu44pnq34gw2ry9hpnr9rnt4clkza8wwe\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r2t0qe6ut3q3mtumsx78e3z7v9anjx79dncdw3\n", + "\treceiver: bostrom12ck36hwt0xv4qeg0rqjeykwkfuvz8uscrnq96p\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vva7fuyddhr8rfl53993l77nt7tye7urwn7n28\n", + "\treceiver: bostrom1tma6emracch0s4gdhtffa5alsaarpnc6h820fl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qlkvuc4g7gwswsnjgucl0kqu6u478agyke9gqn\n", + "\treceiver: bostrom1z9aay4l4pgtnujdcjsxd9lnrtskqhnt07unl76\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cujrvgjhmvz9yrh7qgcm7y5dhpw4g3j2yn7dvn\n", + "\treceiver: bostrom1pcwdkcsje4ghchhuejuat92sg8vq2ucxy9arsa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n3h3zykntm7et075gghpqhkxa3nzjqekslwpc7\n", + "\treceiver: bostrom1z9r94hx0dsfrkapp8r5etazk2spwstzd8fq6us\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vv2dffvvyewu3vddr5t3f8fcd5gxdcx35h6r4t\n", + "\treceiver: bostrom1yn9c02mmf4nudxck97dh77a0aqa2k5lfazg4uk\n", "\tamount: 1boot\n", - "\treceiver: bostrom185p0ynw7vug845qed0muv2xrzksfdkr80hw0mn\n", + "\treceiver: bostrom1hq93p4sz8ewmuu9wcnrurn9w8ythsyhmxxudqc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1p4v4rysht75hcparzlrckhyqv8rv9qj5cpzw3x\n", + "\treceiver: bostrom15rdm2u9v69nw4d08f2qqq700z0jxqulfqckuxj\n", "\tamount: 1boot\n", - "\treceiver: bostrom170mhk7kh5xwt55pk3u6vtzfq5z9yuqj6sufama\n", + "\treceiver: bostrom1uq7yve8eywnawqhtw0csf8rd95arhc9mqkdwvd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gqvg2akzzyf942jtks0946ugakhf34adr7yjxl\n", + "\treceiver: bostrom1x8q9gcpaduqlm43upqg2ns2eah9nstzxsrzh9w\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mu7swnaf4j4dqzsxhaey678w82zje04nj50fem\n", + "\treceiver: bostrom1gcjk4ydxjw8x3c36she4luggqpjkywhjh8ncs5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lv4pj88sda6nqezv5whglefwqzpdwfa3wvj29v\n", + "\treceiver: bostrom16wxqeclpd5lzm3cpt7kh3anhpet8v6jcl6qtyw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ma3d47rv8ul9hu2yygpxu3qa34wrwvhd4zl43f\n", + "\treceiver: bostrom1zxd0t6tlp4ryrav26wsg3yzxfn7uqmz52qsvt7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g824sjlynd63ckx207768cmn7nv5dv7qxv89nx\n", + "\treceiver: bostrom178d2relx58yu9gumdm5hudepujykzd9zkvdj4r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1492knevw5pe6429vjz32w6e4zl693a7e8vr0v3\n", + "\treceiver: bostrom1etvj9n5pgptde9werj2cxwp4ry9weer4f5cyrp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wwlmpyat4p2mejg4nja78ruj6l0v6eh4n88xxt\n", + "\treceiver: bostrom1jn34hsajz2jwzzsh4af4lce3hyted8elahukp5\n", "\tamount: 1boot\n", - "\treceiver: bostrom10awphjarm4j7du2cdm7zrhyw07hpc53x03lmwj\n", + "\treceiver: bostrom1eemjzdddu5n7gwydh77zr7whmylg80j2v03z7p\n", "\tamount: 1boot\n", - "\treceiver: bostrom107fe0djy7j9ty557c3cvw69d8x7zej8gq706qd\n", + "\treceiver: bostrom1xf8xfawzpquulwp0f6z0kfj3fss4ytnffrvlvs\n", "\tamount: 1boot\n", - "\treceiver: bostrom1y3ymxalgm6rueg5kh76k4f46ank69zu9htlyv0\n", + "\treceiver: bostrom1ua7gnmcusw3aju0hhajen4dsgardgtx5as2ult\n", "\tamount: 1boot\n", - "\treceiver: bostrom17sv5nk50l7y73dpx2546ulgx4wlk42tz498lh2\n", + "\treceiver: bostrom15fajgtvmj9h98983uhskszx9p6x5h0855cgugs\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d6n3qjx5zuu0960sxfz8w4gfg76cspuzzdfttx\n", + "\treceiver: bostrom1pvmfxq9wq2425xa8zxncv5rrhm086q8c66ta9t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tsa9s0xdmz2d9r0w4wgg6r04qcmlmqmxcceyt8\n", + "\treceiver: bostrom1r3cpd2c2hhv5qh9hqzs4mntxgrzskpy425kqu0\n", "\tamount: 1boot\n", - "\treceiver: bostrom17x95r6vzgw6dkva8stcqcdpjjvpugma64h5and\n", + "\treceiver: bostrom1gjq4fgmxdcy80aj0w7whrrnmle8me2aetnelua\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q3cngvp0sz9g9gvk5kw4h2g397s65r38sm0xft\n", + "\treceiver: bostrom10nug4mawjhulqazac2u4fxzqmnjmputwslvj9v\n", "\tamount: 1boot\n", - "\treceiver: bostrom15m0925vue58qvqwq2tkxkymmlq83ccp83k9r86\n", + "\treceiver: bostrom1mngmkfhs5z2vz69dc3vzwykce75k027wmcgdyf\n", "\tamount: 1boot\n", - "\treceiver: bostrom184xhu6v2293490x52v6sqw8n3a7y0vkhm7q3qz\n", + "\treceiver: bostrom1jeljmyn972scjc0ua5s2pghve6sv34mzsyydg0\n", "\tamount: 1boot\n", - "\treceiver: bostrom15yxdc6c3fdgsqa2dytqmkr6d08jyceasd2h8pj\n", + "\treceiver: bostrom1dqjy0cehwsp7xkmlc7vdug4z2dcjmwe5994vxc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x20j0yt53ztf2pyp0wgc6evh279zandnqmluu7\n", + "\treceiver: bostrom1ctgdt08qjj7ye8z70gaacu7rncd0wy4yfl3qw3\n", "\tamount: 1boot\n", - "\treceiver: bostrom13yfmxyc3kaklmtvd5h757gne0xgrp7xw3d4vt6\n", + "\treceiver: bostrom1yt3hn5x92qmy7jdneuwxnl25d9vsrpppc3n2pl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pje9sayev749mskveyc3mwm555uk59zu83kwgq\n", + "\treceiver: bostrom1znfv4scakeamzeuttjt0c5v62p2evr8hs75p6g\n", "\tamount: 1boot\n", - "\treceiver: bostrom108parfftwtmqzuu4udvgggr6jrexy97dgrvv42\n", + "\treceiver: bostrom10grawwzrfte0vwvkz68f846l2apwjf4gxmdd38\n", "\tamount: 1boot\n", - "\treceiver: bostrom12k8usz27j2rz3yd9d4zpw9r42jygucmpfvsps5\n", + "\treceiver: bostrom19q0vq4x6fyjt3gw0h0znwyy7m85zgdjtvn5j2g\n", "\tamount: 1boot\n", - "\treceiver: bostrom1v9rw3t2c5qh5plt03ddfhqxxjaaf9khwqzrg32\n", + "\treceiver: bostrom178q2xldeaq7qc9d9x7v6hp3l6jv02m98m4wsmq\n", "\tamount: 1boot\n", - "\treceiver: bostrom174ywlwkr0g2dkx7ntsczm8cy2ucjx6euxszszf\n", + "\treceiver: bostrom1sz5sl9zhqf6gu4juenvksprgd66jyxfw06s2n8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1aymg26a33wc0ugt9cgrpytlyxwxrz5wm0ad0cl\n", + "\treceiver: bostrom1uvwgpml6y59cgdhuj9jep4k793zt75nj73n9qd\n", "\tamount: 1boot\n", - "\treceiver: bostrom134u2w9famknhc969f7zp9wlp7zs5d34c8ufece\n", + "\treceiver: bostrom1q5lcx6rj2249qar8wz44fvwz7qzc8cr9jdvfd0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sqp2c72knm0wgjtz6r3edadvs7emewzl57zqnc\n", + "\treceiver: bostrom12uttyfrk644ev3svycpdmgt72mwf3rvre4n2nr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u2mwkjslftrw6kqvkpn39zd4s67shzj9jx8gw6\n", + "\treceiver: bostrom1m2xpnh3ra257w4p3dqdpxuk5xnz7lp3jqguwgp\n", "\tamount: 1boot\n", - "\treceiver: bostrom12dyx59tjfacu6dgv52n9ufy48htye737xpqlxa\n", + "\treceiver: bostrom1lk7rwnw8w7tcm9g77764t45t8l0tfxg92t2p9j\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lqpprsd4q46e2c05jlv9r3uvl29tnw8ntdx2fz\n", + "\treceiver: bostrom12y6zds7tx9fyj0296el07ndww7asqygcfsjnvk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mkfs5ne9pl37g9r6r56qx0ze0x2wkfu66pszd9\n", + "\treceiver: bostrom1xt2ku408tqcml35fnkc96p32zgsdsk0ahn967r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lpxr4fy4hjmfkeqlq2mgfa6tv24kkd0savqy0e\n", + "\treceiver: bostrom1d0kwgl96ak0xwmzlltsmvyxcm2ls74ktww34u8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w5q5jyusg7msv8j74ajm48e67nmm42nmpuuc20\n", + "\treceiver: bostrom1gumd3adaejgnzzzft8cqex5juq5zy2jq4tvdtl\n", "\tamount: 1boot\n", - "\treceiver: bostrom16dhc4ay0wl99ynzruvhnyvqmed6jsrzcnhvwc7\n", + "\treceiver: bostrom1d7lknng2whr2ygg9lplwcz7ghnwzd948gf3yhq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w9cu2h2s38q2hehr09ulxcsg042vy8cw55qk6p\n", + "\treceiver: bostrom18nmdxyflht3w9fax6kx5u0k87r4thy27606s0v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rd0lxxstuc6q54qhtn6dgdyqfjrrmz2qq3jhx8\n", + "\treceiver: bostrom1nthl03dc9nywkl3t8gf8m5gegme4dnj0ve47gy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tjah0yxy0hz7ln6ckfktmewur5kpwuse6wa6cp\n", + "\treceiver: bostrom1an69dy8fcynu2jf6svrxhhnv3ng0hqjamwrmma\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a5qxpkycl306jnf3dd0xnt2szlf66s286mdqcf\n", + "\treceiver: bostrom1zlejqn3q67x82s7q9r3nt699h5qe3klazvlqtd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a0jgs4ujtt9v6ak2vl4ns7ezy7etev2jh0swyd\n", + "\treceiver: bostrom1cj03t2qpcr369l0makk92k57jp0fr0ehpkq6qa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q2q45yv8829xa2mm377spmawn4lvau9rhev658\n", + "\treceiver: bostrom1vclngs2032h503mr5njxwszus4kujnm2a5hy2w\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ew32852a2ndyl5qscaqv28556u8m59ha6svgz5\n", + "\treceiver: bostrom18tpr568w0yznet39namnvr6gkd52js0hapc5x9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uqzf4x63drkmv4vsyuk0ghcxlmn3ju7fgmrs2x\n", + "\treceiver: bostrom1dn0tuap6p4up8zq9rrxl2hxaagztqdf6296qrt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1j565parn3n9atp5m0rp00kc86k3zuryndpekge\n", + "\treceiver: bostrom1rn8t4xfhr7r46rvkfgr38ds735ctveqpqrgkzq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g882nurun76dphzvmgfpa45c8u2qfhapqsg8c9\n", + "\treceiver: bostrom127eagjfpaveagazclqj6qd40h5ffxfu2suwxme\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jt56aud8xu959f0vp6q6sk4rzuvwlvrx29mn8p\n", + "\treceiver: bostrom1twuk357xcxwj0tqh0r8ja282ff936rcen5gyqr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k97pykvyg9m35ud2ej6aszxqzvka3t4fuacuuc\n", + "\treceiver: bostrom1szqqzafdl7m34ua0j7drt6pwr84g9pqksqjrc5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1584sjvepxayfpwe0zrytua6d5f4tgwfunhfdk6\n", + "\treceiver: bostrom1wsh8gu3z75l8wy43num2puegyu84sdy20pj4my\n", "\tamount: 1boot\n", - "\treceiver: bostrom1svgf7ktp2u9ssn9qp3qtr8rtkmd3ukjvjk6af0\n", + "\treceiver: bostrom1mwlc8ahly7kw5wpmvrc7x597ut844xar7yp39l\n", "\tamount: 1boot\n", - "\treceiver: bostrom1quwhw9ltgy2t6wrep6gfx4xv8fp6ymcj8g59n2\n", + "\treceiver: bostrom1xmctcwx3n2arrrrue8gzlsfs0a7myqnhsw5222\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hxl9z70ncvjuvaa4e2afgpv58c5x4qfcnf7rtt\n", + "\treceiver: bostrom1wmk2hmav3wea4rhe6tfuecqdk09d9mu9gkksj7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ghy9u0unj7emt6xqtvy59e6xew2lgt43pglrnl\n", + "\treceiver: bostrom1g2lmhj9jyqwsrjvpyuknsjfp7xlajwp64nk9u4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mv0ay6ynzzgfuzgu77jvdc2fywwtg9n7p8stdd\n", + "\treceiver: bostrom17hngm9snw5wptllhwcxtnnr3s5s7mvy7htyvzk\n", "\tamount: 1boot\n", - "\treceiver: bostrom10n52qexzxwxhmy5ehp2n8pd0l2fzsz6le9rv9z\n", + "\treceiver: bostrom1w9r7vvhkepxgmju2m5tfnwdnf99xdztr8ak2g9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lmkqt5mm5jwawqu3e0jw4cj27jkvp4mny5rplk\n", + "\treceiver: bostrom1eqdlcksfz353mj4m73nvd3amr3cg3n4pkumz95\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eavqyjvy89y6qcsp05te8fw87qsf877xd8y55g\n", + "\treceiver: bostrom1a73432ykufe8h2vwjrqr0dfkxhdurs4hxxfk9q\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lutjmvnm7ra6z4h7xcq3mrfexsjy8dymaznhx4\n", + "\treceiver: bostrom1ve7n538nmswptdwmhfemxy09ex45h7ey8hkey6\n", "\tamount: 1boot\n", - "\treceiver: bostrom185vk82quust6p8ulafmz9yupemlsem346asdat\n", + "\treceiver: bostrom17ccefdz0qjca0qm6znvcqus6sye25lswpqd20p\n", "\tamount: 1boot\n", - "\treceiver: bostrom18qtgz0de9q72uz2m7n9r8xc9anc9zk4vzgdh5v\n", + "\treceiver: bostrom12wzpn0ymfwlpcx3k42qw504sn8cjcrhj8ew8vp\n", "\tamount: 1boot\n", - "\treceiver: bostrom12lkwph2w79ls9tefjjj27l7w70hvvecp8pzcra\n", + "\treceiver: bostrom1sx4r5w7trrehymfann37dwcr58guw5y0yhdx6v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fxz2esr50d4e9ctnn5mh7px8lnt9vt7exhudt7\n", + "\treceiver: bostrom1qr0nkr4095xfzd9adhyus2gf09ju8y9vgj6kkt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gga3uqn2jks5wrvl6z4ucc4hjeuecgsfresg4k\n", + "\treceiver: bostrom1x7t83pny5vj2pp0assal8mmem9mnzdt9xdtsh9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fnxcx00vuuc5xdwm2fzrm7n4xmuvalvah79wsu\n", + "\treceiver: bostrom1fn4p8gessrg55vspaxy7ydf48du0s62zxh7y2n\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gtncjd9cs4cgpjwq7g7lm2kw9l3eqn4yhu7xq4\n", + "\treceiver: bostrom1yfngh9fc0wjcstcpsl7wchzmnhws6n3jpjxyk7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pz8gn0dz62t63s8tex3t7n5cyexsvgqf5vm3nj\n", + "\treceiver: bostrom1nvwvw7qhvxef40p8ymy8tmj6w033z7qzlcvqam\n", "\tamount: 1boot\n", - "\treceiver: bostrom136l24v2zdpj6wmy5zqctutp78n39f8lgvumhg4\n", + "\treceiver: bostrom13u7fdv93pz69ve4huakftnuknwaeaxvczkx20e\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fsm7qwvpvw4hcl8zmqda2d62mewd6spyv8grmn\n", + "\treceiver: bostrom13uejqe2sqr3daecmm8vyhwmntjlzhfye007wf4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dpv69xe9mxeflalm576uantdkpnqhvngut9770\n", + "\treceiver: bostrom1swffxhtd5q9qd5dtl4qgld5lg45lnvnm5ul6az\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xrcjgv3ujep9tp0md5nq0u5899c9cugxu8skew\n", + "\treceiver: bostrom188fzwzfrpxatqlyz4ascmuxph7n84x3rqqmw56\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rqw0ls2r3hxxgf4yx8sks8ly8g7r3s6975zlcr\n", + "\treceiver: bostrom1uh7nkhz67nlpt8r6xrw82mlpy52v4zjdeywynd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kkwk6vuwzpznh049p2z0dkatwzrrnr9flym8la\n", + "\treceiver: bostrom133nw2rfwhd4jk8rkzl7haha794qfcuezcddr04\n", "\tamount: 1boot\n", - "\treceiver: bostrom13ewmrehjs8r2n7cvdc7vqd5jgyuz6j06pyyvzd\n", + "\treceiver: bostrom1r854fy2zm9x4njf7dw3n6sc4ghhcgj3c50qdml\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w67ns9p2qumpjs70p7wmyvwxqzzmgztt6f9w9r\n", + "\treceiver: bostrom1lkhqcvettfmt8vqwv086s6q7llu0at4el2j05t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gclw8ua87tuja65rwkmk8nh5j75kpc4x6nz828\n", + "\treceiver: bostrom1urp5xjm3s3ujuap5ffe3wlry99y9zvhu0t6eg7\n", "\tamount: 1boot\n", - "\treceiver: bostrom10cqukq7f9w3yxd4cj2r7cndujqd595ayxlvrjw\n", + "\treceiver: bostrom1fcxk5ez2au8dunkkq4r53kmv0np60mf7xtpzdu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xm7txmvp4qh57sgtv5fpvqdxupfl3a0hcrlfph\n", + "\treceiver: bostrom18htxk7d5vc7fwmek4lqm8qfdfgpf4u0p5s55rx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k0cvy4pd9tf6q44pvmdkt6edpntgetl5mfsft4\n", + "\treceiver: bostrom1j39fp37rqgu4fvxd82fhsdxjpe7r6ekzgqj6jx\n", "\tamount: 1boot\n", - "\treceiver: bostrom17rrlhac054zrzzpczmfcmrxfc9d85ak6yze9rd\n", + "\treceiver: bostrom1p3f6rdtj4zdux962qwzvqmlclmhj9xd42h0ed3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d5mlccnw4hs0w880yey9lda6926axfe46tlk4v\n", + "\treceiver: bostrom1g7x9gccv0zsg5mqup8m7hm40zul6ft03lgylnc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fwsckpml8e4369p00ha38jjel0e3jaz2v3nh0t\n", + "\treceiver: bostrom1eqcn7gu0secln6klc5qdxp02svj65vj3cl3365\n", "\tamount: 1boot\n", - "\treceiver: bostrom17xmpl8h0625twaplrgvvpx6tne3pu35jrj0ahy\n", + "\treceiver: bostrom1pje66rjuy8mjyyqnkrvzjc9lrvax0cjwtpf0vq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qvgguzy047hm3kjm5xe72y896ngk6nnp5geggt\n", + "\treceiver: bostrom1cnck3ud4fh9dg25p9wtjhprnq3p0ptuf5fpp8j\n", "\tamount: 1boot\n", - "\treceiver: bostrom15s8ds65edq4x4gyetdjs44rhkzwa0dhpeacd09\n", + "\treceiver: bostrom1xr2uuj3vwu8q4745gfpj2wjc5yvvmhqgssh7r3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h8gj9ekjreyk694vysseawncxsa8paucu72yt5\n", + "\treceiver: bostrom12mkgdlfc42th7nlg6a7lpjj4q3fwj05gghmdv2\n", "\tamount: 1boot\n", - "\treceiver: bostrom108ljh53y3gp9xvh95zlsxh9xszumsmdy0d70x8\n", + "\treceiver: bostrom1uesmlkz0eks8jgjkmqj4czkltxvyhhfezgpzum\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jrwsmefykjcw5cgqxckwtaejsukfdfue0rn58d\n", + "\treceiver: bostrom1t7gl7u2hlq2cy3urau75xn6auglay5h8hsx5rw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g90jgg2dd5xl04raq5kpch78hesxk3q4psa2sl\n", + "\treceiver: bostrom1x272jlajgnwxngvm5ld46u52gmylvxjy66shpu\n", "\tamount: 1boot\n", - "\treceiver: bostrom17nlmcaz9dpzaqtmnkhl6cf8sdw5sycppz8ap44\n", + "\treceiver: bostrom1z0hwdug06j8ssmc9pvhj96578q8xhvxw7qff5v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1j4uzuqq0vh3cnljns96p5w5cs42v86yxv8jsqk\n", + "\treceiver: bostrom1aftuzmwn3957w6u893ap34gp86jd4tkyes5ved\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x3h550wrfckwkxadl54hzj8h3ds8c3dfad08fj\n", + "\treceiver: bostrom1yq64tcpxxe3egzay46yupa0h8q3eakpaqwnxvn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rgdv32r2xneamu9m7yeh3asf74dlfkwg3xu2zq\n", + "\treceiver: bostrom1d3cwhcvmgmvd7jq72eyxfvmcgvjd0xm2ruzkss\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ze334rpdfp8wkw6zvanh68f7ppump5lx3mwqan\n", + "\treceiver: bostrom12lnefgszfugjrd75hqy399fn73smdhn6qvmkd9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1takkg7qg8vpugqat0ym38xhgxmcttt9a59j545\n", + "\treceiver: bostrom19rdue54zz89ry8wyjavns3tj49sdglljsxc7fn\n", "\tamount: 1boot\n", - "\treceiver: bostrom134h5wa84vuvpz7awpa9wmjqemjzd2xusu3hlp3\n", + "\treceiver: bostrom1y3sleqy5ml4fxmnj2egw5z569ryjspu2wz495q\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qq7nhklvddqm7xtulw57aqejkqcrt6ypucxmta\n", + "\treceiver: bostrom1dhggqcmsw4clk94hy95wksc9kghth76uk26fmv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fdgxymcyqyzhx6rhdqyazl2rtdlk0p6x9tj3n7\n", + "\treceiver: bostrom1l3dgy77sfzfu3dk2ttjy92dzhjx95yvh47anpz\n", "\tamount: 1boot\n", - "\treceiver: bostrom19ec4g2gdmvawu76lxuzp3394aqk0w8kn9mww0k\n", + "\treceiver: bostrom1rfe33s9ap9r7dqgqt2x7vuz9jgm4zx74zeqtrm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wnez4n2nd0q4cc5nf5xr6zgtj0svs0rv7v6tv5\n", + "\treceiver: bostrom18p56x0qf0sx6w5keghkk7f8ra7tv536qzrht6z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1apya9stgvhuuy42uu5d0es7p8ds8fwfs0ws4wp\n", + "\treceiver: bostrom1gguq0x89pyq24u0ydvlduuvz3xvlnmhzldy659\n", "\tamount: 1boot\n", - "\treceiver: bostrom1f38q7wpnrfp3k4r204vrg7c2wp29au9eaj6z7g\n", + "\treceiver: bostrom1s5smwjhumxs36jfy6j9x3yetlffdeep8x79cg2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qpr7xrrlcyxr8v3l3fr770gvn9aka4fra009dj\n", + "\treceiver: bostrom1fpa57plps3g9stymcdx97xr89aygltumld5xex\n", "\tamount: 1boot\n", - "\treceiver: bostrom100urkx0z8wz69suxkje03zkfdxl3h8algj3aa6\n", + "\treceiver: bostrom13pd9jz8ct3u0e7fq6q79yxfy0f56pzm2uz6s3m\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lpfngd0ja00c9nv0zn78zcz5syqs9hctyt4w2w\n", + "\treceiver: bostrom1gmrq5cy383wp5mu93q8xrjqu8mtlc7z4l85n8n\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tpl0d6328zf2nfv7ptdcg2wqm3r5d9ps9ljz89\n", + "\treceiver: bostrom19yp2lq9ju0hy3lrxfu9d9zpdfz77j7dhg53usr\n", "\tamount: 1boot\n", - "\treceiver: bostrom134p6h04ekdcfnn6txma3ytkp5hgqvz5wamkp75\n", + "\treceiver: bostrom17zded2302qwsqf6q0en6azdmmqg5mfmmy7a5t7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lur9ml6wze46xmpq2tylxrd29r42297he3wqpl\n", + "\treceiver: bostrom1t6z8uane2kgflcdl0ye6mnj5w9w0ylvm5jettn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yste86hpc23rw9jhnluzv6zppsryvfhku3yh6q\n", + "\treceiver: bostrom1ja7p7zw5ucpt4x5k7e55wwhtr4m35y340273dm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d3w6qe7m4v8hrqdcgs2vf7r3jzmngazt0dy82g\n", + "\treceiver: bostrom1vcp5hcz7tlc784c9xaf7y8gggdpuryyt9zc7fa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1v2xsd3mrrsx7jz2ktcfzkm9f7lppgf9l4krnq8\n", + "\treceiver: bostrom1pf6r3cprm6p5a0f9xeg6y7037jy3rwu9c7u9tj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sgucgk84gc4q07gfl2m2ajrx0d3arq48xa3s6v\n", + "\treceiver: bostrom1alf4qqmfkn0wksxkzpx2pkh9qdrev0f7a2ysfs\n", "\tamount: 1boot\n", - "\treceiver: bostrom1640mwez3a96wqhrds0urad4j3t56fttffrg93m\n", + "\treceiver: bostrom1cgzheqra70ar7npfm53atczrr8ym2ga4hxkcps\n", "\tamount: 1boot\n", - "\treceiver: bostrom139vr8j3q2mxa98ljvguu32hk379j8409w05ry2\n", + "\treceiver: bostrom1qkgf4u7g86uwfwsfdlfgxwsjywqxjze9yvdaww\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mx2rj8vj9cz3dwutl866e7gsynhnthzdywr3h7\n", + "\treceiver: bostrom1zmeem69s8et3mv3p48rq66l69jr3gxwwc7c4lu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fdypy5kxf4waa5xqpxtghzedhmj9vkah4xhpxl\n", + "\treceiver: bostrom1tt99hwuuunp60agve9drfwac8wzgapsa840gyp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uuv4etxm9xtjapdc3s2pgg4fhsu6nzjdyvmydl\n", + "\treceiver: bostrom10mqmg0uzh63qv5df93ld6e554lvarwte0sj9mj\n", "\tamount: 1boot\n", - "\treceiver: bostrom18tck3y7qjrlx8rveptk03vj3tavt2edgn92fu3\n", + "\treceiver: bostrom1r82zdseaeyw92fq89p5c9nv9eqk6y993s0ucvm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r6pq8zn9au2tzzld7tzeueaheqlav8jp24zk00\n", + "\treceiver: bostrom1060q6um76nuh3pvp4r6cdxajhw7nd53emmymze\n", "\tamount: 1boot\n", - "\treceiver: bostrom1aysks96klvjx8sjhgg095ygl2daserf2u3g98r\n", + "\treceiver: bostrom18djqgvy9n50p5pwe9s0zg068mrkck70m3gktlk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h9c0dfvsx6vcs2a32apt886pdku3q78cw7wje6\n", + "\treceiver: bostrom1l7e3xvjzfefqyy800rh80w93hjnd46j50sr0ye\n", "\tamount: 1boot\n", - "\treceiver: bostrom18f8rldxw20dhv32k5355nfhd60xsx9xcvfl7hx\n", + "\treceiver: bostrom1npsv7hym66ea0ql2k08yqp70399dyva49xa7y9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ytjx4mapa8uffwwshqlyr4g3qe83z2zmz2wt94\n", + "\treceiver: bostrom1hym58vzss8f88uvey95h2gdrpwj7553djcyc0g\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xhm3x3rassdzk0cm6f5m793pzs6d3876r3947s\n", + "\treceiver: bostrom13mlgzr0zx7gw8q488xhjevxm0460jtmrpg9u8v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qp22u988azgyvygaksmznk2c4xe5hgfkxtaeh8\n", + "\treceiver: bostrom12kypg82h4earh6m8w74w7hj3ud9euym6etu6e5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ga9gjwthqp3l6ngmgujz6xt85f7mj2hzll789m\n", + "\treceiver: bostrom1gud2acwe0zpr5860gkvwgsnp25n0l2z8z229pd\n", "\tamount: 1boot\n", - "\treceiver: bostrom16eu9km9g2ukn3kng3t05gyw77m0s388t3ldmw5\n", + "\treceiver: bostrom1zhw0c7urhu57qgvl2atcxk7ew43c073jhgjnt3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1trajx0zz607n6ynvzdf47l3t63t7wt02kknljm\n", + "\treceiver: bostrom1qq86n5l93a4djs6ma5pyw9jx4r8f9pfff4m9gy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h3em7ptasyuha4qx4nemmrunztd2ck4l8spjlk\n", + "\treceiver: bostrom1ugmkvwlr0g02rajj6tnk0p7emm8nj0mzsk9eea\n", "\tamount: 1boot\n", - "\treceiver: bostrom1htdwg0u9f64348n62epugv7fqfyusqwnj6q5wn\n", + "\treceiver: bostrom1gz6gfrmn0tus8rk4ujl9stuz65zhry7nkny6ut\n", "\tamount: 1boot\n", - "\treceiver: bostrom1l3ruv6lvgy7jjtwdvprmfdagqjtgqtwkkdlnzw\n", + "\treceiver: bostrom1u53ph73y9nn5hh0pyh3p7qsqdpq98jjg23kzs0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vzmqrfsj3gutpgsecc64xjlxhz0j5rhdck2e88\n", + "\treceiver: bostrom1hyztum65jaqtkdlsxdzckh23m7y7z0gqyu8ku2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qydzgts5a45ldyvn0673v9qvsll33vn6hnddsj\n", + "\treceiver: bostrom1xqyxmwcwnaw0w66s9y5x44y72kk9x7x2cc0wsg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rm374xl90r0dvcvffvvza7dlk24h5fl4k032d5\n", + "\treceiver: bostrom18uafcqkdcvnmel7879zw7a78w7kyl32g554kz2\n", "\tamount: 1boot\n", - "\treceiver: bostrom19zh05hwequkj52gru8t86apkpdgkxpl79utawt\n", + "\treceiver: bostrom1m0zs865m2yysmdw85e4dt3zw3csl4sstq9txpu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jvkduc9yly8uc9vpdhelalsh7ywh8p3yngnp0t\n", + "\treceiver: bostrom13p3nrzrj5p3tk7ajuq9qdrt43kkcahm6ahzhfp\n", "\tamount: 1boot\n", - "\treceiver: bostrom19js0y4h5wr4z37fyn9lk745ugs0eurrdxq7v2m\n", + "\treceiver: bostrom1c0uvnxgyace6ddz9sr6rf7e22yykfwef9mtu5p\n", "\tamount: 1boot\n", - "\treceiver: bostrom14jvu7j7p55cgwq0h66g6ezercfh635mpql79t4\n", + "\treceiver: bostrom1eva5gh8fzrwz2eqg3wss4alpufhzhr2e5tfmfl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x8j4x8hk52rxyx8plvvd3ckpknft2g3p0al7n3\n", + "\treceiver: bostrom1ejkq9fdx6rx7fgt0rh2g6cgfvf2ulecsgwm2mh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rcluzdwgpv0mj9l2047jhfcrn25ym388pt75l5\n", + "\treceiver: bostrom1ch7rf9zy09hslfrequf3w4kc454lxmljlx52cf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d0c8r5x4ufdxncjp409dt6s6zedt9fpvf0phhg\n", + "\treceiver: bostrom1c88x33q8rjkpftg2dzhze5l9t28szvqktdzlf3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k6jpv340pxju49et0kt8yx9x32sywx7v4n27qy\n", + "\treceiver: bostrom1g8f67c2vpc0q45gwfw3jjjqt9u5zcz5xl3r4wf\n", "\tamount: 1boot\n", - "\treceiver: bostrom15ed9cevn2dejsehpjax6xd5fz2qnjy9l0msz3v\n", + "\treceiver: bostrom1g32ljhw2z4r5rkwlfsywuyvdtc45d7m0r3g4vf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1p3jj8tfx42pvh35gxd2z586004x6mz4glsx7c5\n", + "\treceiver: bostrom1qcv209sdclc0qhlp0gmrv5l8pq89gxzzume68a\n", "\tamount: 1boot\n", - "\treceiver: bostrom1trtghaanrlllzf360f4lz4a6yaj7p87c5c0g7k\n", + "\treceiver: bostrom1269n2apd3jszu5sc7xwnlk3quj2nka32a8qtmp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qk5wfu4j3sgcn4k559gl6xk5jakmwhmum7rqjn\n", + "\treceiver: bostrom1aqqyj7hadf7z8f56uc2dh27v4v5uryecwru6l8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rn746ppd8wetnpuydhfr2m7a7vsncfsxm7mrqw\n", + "\treceiver: bostrom17z5efk2d87uk5c6qz4x8v7xasng2wu6lvw58w6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ukssxlx7uphpgadjst7d4u4nt833n85sujfrwz\n", + "\treceiver: bostrom14wcz3qqglc3xtms3rknn5gxjuemjfaktcd40yv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wzee6yu5l832qsxqmfkelwddq7555alf2ye0sd\n", + "\treceiver: bostrom1knmfjgmuz4l98mkvuqa2hm037wvejc6c940ntn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nd5f3g5au3sxv9vesgvntjcwl9rhhdhrrg4smm\n", + "\treceiver: bostrom1w27rqy9sf4e2flf6z6husn63mmlhqujl7t6x8a\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kds6g6jnun386j4u2fxlykq6q9lu430kfs8w8t\n", + "\treceiver: bostrom14xyqvg3779euwwwkst84aaywsxsmggqxf5kpss\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pctzjgpqsmky4tda74huul22u66kjme3wjg9v7\n", + "\treceiver: bostrom1f9xprxme98s2xxewhf6ync7g26ndw8t7lgs7kl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ufpyj8d8enjvcxlwsxdfmfaqgflwdxcy0p7wjw\n", + "\treceiver: bostrom1udjt769paju5ruagt78jp2r0enmspcqflfh5hd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k8nn5ffskduazuy3d3jw4vkseqdc846q3r0tsp\n", + "\treceiver: bostrom1vyrkdvnelxzyd0u23mjw7l0uph9lzy67z973et\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w65sjppjel3k43fpdftgk06ly9kd566ygd2ksm\n", + "\treceiver: bostrom1ctkx4qa2vs62fx4d8h39rmd9q0dysjvzzwhk04\n", "\tamount: 1boot\n", - "\treceiver: bostrom14plh27mz7fwj2rkg3h5jy924rv67mcnanvk9xk\n", + "\treceiver: bostrom1kvxp92nyhwy922zrr5rchk5rru4sdt6m35h4z2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1474ks28fvyea4qx9v87r9tevvqj50ye093nezf\n", + "\treceiver: bostrom17evzl0d9a5px90yls6dq2ekpz0a43vp8jlegzv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nqkg99cakqsh7xsutsldnpx8ktdr894z2up2d6\n", + "\treceiver: bostrom1hqle74egja0zwaanga63rq6s2hk4sgjl5alw3h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k0c4u3d8qtmzgrlt98tkqlddlsfje756yf2qgw\n", + "\treceiver: bostrom15ajcv8n9k5wz7h3u48pacwq8j58r2rvr3vl33f\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g0324f6a9yfd3h92pa9f8870gwkeekquknr0fj\n", + "\treceiver: bostrom14wu29nr5vp5q2zrl2ygnerhs3hp866a4cacux4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wuq47y984j6kyupflxvx3xkdrcwqr70chgk0dq\n", + "\treceiver: bostrom174q2p9ehm4ydntk7rhy77hs2kueg3mwnt20h5t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rrwwhee3zyus60e0mr5r76ap4yaknaskk93upc\n", + "\treceiver: bostrom199eyjlnj2wgwelpx8egh3quwt9s0vqfp4qgx7h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1e46hy0mxmvd7pt5m7rekkka33gz7lsa7t509yt\n", + "\treceiver: bostrom1ashgtf3lsf2nfcp9x725ck9v8ctk022a7789kl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vdw7577265sjhc9tf76dexg0vjqe2hwqwmfx77\n", + "\treceiver: bostrom1fp4a7n3q5s2ql0zj309udkr0myhry3qyxyhty3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r3xjazpfgz7dfsghlyxlqxnx6lzkvtz49ude6l\n", + "\treceiver: bostrom1wfqh5e9lykt04mssdgjax2lhd0pagel6ds49jx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uyj5y856xq5f5sekcmm9xdrj30f2j6cvrkp7e8\n", + "\treceiver: bostrom16kjvyw8gpprpenrz4upqch54u698q7zalw84p0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1negurdr4eukfukmf4p26uyw62uly2dyx5d9jcd\n", + "\treceiver: bostrom19mduln93h8myzugt6xs3zhgr29nltpa9cqnmqv\n", "\tamount: 1boot\n", - "\treceiver: bostrom10v3zm6sqeqtmm4w9cpc0ms9rk2r4gfghz6ydx5\n", + "\treceiver: bostrom1za0wrpysy4wkvqskekjv4g5ftxze8c8tnsmlvp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1crjanjdlfwunuf758j2qnp0c2ylm9jenm24xq0\n", + "\treceiver: bostrom1hmxaqwzlcz5qhgfdcm07c0dwuxtwvwm86mkgdp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u8epgelfklzvzhyv9umps0gna2k68lsmh7zf22\n", + "\treceiver: bostrom1uue7ltd325ct7k7yck9pz8pykhref4a4lne3aj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1p9l0e9unkextwflrm5l996gvmvs8wlph9xryp6\n", + "\treceiver: bostrom1m44n26mha4t6tt2t6yqgdh4que855awltxeahv\n", "\tamount: 1boot\n", - "\treceiver: bostrom15dvge7l2lcyhdxtprncmwm2874fyd2739pfgxe\n", + "\treceiver: bostrom1jv0rkxr3xmftfacgsqy560c8e4mkv5hnmqgdns\n", "\tamount: 1boot\n", - "\treceiver: bostrom18xn0gq59p5dnjh73rjay2usvfgsdna6724tqhn\n", + "\treceiver: bostrom1pxzdgep63pqq6s7qzy6z26qyh24kk7ya45smp5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xsn7uufhgks3eragre8qx9lyk9gtw8t6k9mauy\n", + "\treceiver: bostrom1waeapql09dkfn7y3p7y8r0hsn9jqpzgrqcqhsa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kjugtqyv5myp6p6sm0nvxc5cta0y78084t5k76\n", + "\treceiver: bostrom14z3j5xjff5w0mhdt9cjp5yf576ne4tahpyfn5d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nhrspqdl8u80c8c0tdccxl57v4ch3fyxez92z6\n", + "\treceiver: bostrom15uafgasmjxa086lmgxhf3789k8enezwsv2hny3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m8aywf5kfydnwdc2w0wk8xygt27xmstgucfmnj\n", + "\treceiver: bostrom1l7q8ygdxdyslnna760xkylxmuju7apu4efdk4g\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mf7zpdnu72tpm5q2z4em4qmrclwpq2w8r6c967\n", + "\treceiver: bostrom1gueaqpa9fvhyw5js3ml78p338gwexs2szmkgxq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1axk4pn349fyvumukyeuue7mp57846x5n85jzn2\n", + "\treceiver: bostrom1dlxpryc64ljy8ycnqed6tusv23vvzer4qtgwg9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cr9ssxvtt0p6tlumf69qnp3p8er2yu2tfdav9n\n", + "\treceiver: bostrom15yz3frzr9896jfqscvgrpr525e2fte259a79cm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xy5dy28f9hxlg2m0es0j5ceatnwgfac9edfzwq\n", + "\treceiver: bostrom1znj847urese9nv696zj8zhxxnshas9jjxgepnz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vjc34h3hld2l7tahyveavwhu34gtnrxjwplknk\n", + "\treceiver: bostrom1c79sdr62gqw0c5vl6cm0wmw6nds4sfuuvdcej4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xnshuer3n282hlxams553ggeh3rtggqlwm6jlh\n", + "\treceiver: bostrom1a7weglfpt2m098qyhvtd9ud5uxqsq49cax6ml3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1med4scf5g3g58cefa0lg4elc7ynwspwjcnpymw\n", + "\treceiver: bostrom12p0k8wte2wczpp9zt637ml6vkhu9tj8j0kca6d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kazrlwxh6np5jl7zl7hp6900f50cw72l8vdjea\n", + "\treceiver: bostrom1z7yw842j9k7t2lsmguvck0unmja3kex30uaauk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sxvl6rvgr4elvtntttd69vt2c849yx90tzu5aq\n", + "\treceiver: bostrom1kp62twpdjz94dj790cwt47un6trycznxzypase\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fkg3p6gl004xknqeqfx97tyxszzvd442z4n7ye\n", + "\treceiver: bostrom14fj2n8rl8nrmxpvjt8ys4k28eyf595zq4xdwuq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wusfzl84jdzwc5l6y9e20msvlxu08xwejduaxx\n", + "\treceiver: bostrom1xac4h96xgv6rsq9fv5pu3dpu4edrfsgxcvmasl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lc09nrxk7jggv7wh0nlpth2k09s7z0q0vg6j43\n", + "\treceiver: bostrom1dt89326l9qws29pp9way4nk2crn2ag2m36dx5c\n", "\tamount: 1boot\n", - "\treceiver: bostrom18ax4tdnfx565caewe89q7y4pmjhsgw22rv2tk3\n", + "\treceiver: bostrom1gnngg6j26fs9wfalxx98h845s3ffsxzl8yhxyd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nxuenpkulvl5dej5fvew6wk97e3c88yplesa44\n", + "\treceiver: bostrom1wc3wrtwq6pxkv458a6ywpxevxtm4qex3x507r5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zdzwgrcrun7qmllatq4sdk56zkkxn7wzyy9hzw\n", + "\treceiver: bostrom1eesvjw5vgpa4s2d0j4we8lnj72v8yhkv9cczy5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vyjsskq82x439pdwklcyr3kuh72c5xeds6h7ec\n", + "\treceiver: bostrom1ca7j4uyc4hvpmfpdkswka8z5qk8hndc0jtpnpm\n", "\tamount: 1boot\n", - "\treceiver: bostrom18vzzn9dmaxfhxkrlqmnht53k8d38st6yxgyyar\n", + "\treceiver: bostrom1zpqdssdnj99ga2ga4n3g2gpaqurrvapkzsuryh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k8a0lpkjhrc84hqfz0tsljezp5zu6sc72cmwye\n", + "\treceiver: bostrom14unks6k2v2hd3zyssvel4uhfyrm6s3l9h64lzx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vdeln5gzfum6v444mghx52f32dlr50x4jvs40t\n", + "\treceiver: bostrom15pv8nu6d7j4a7ww7mushq0wgcl6rqlstk54hp0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pg3rd9jqhfp3c5fdet467wmysukc9npqrpdf2u\n", + "\treceiver: bostrom1eh00wu9m4ktcmgdgeakcdxh4d7tt7ual43uffz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uudq355065f0esp3x99mffal337674ryna547c\n", + "\treceiver: bostrom1zslykk7d4q6v2586j9z9yhzx0plx5a834x8gr3\n", "\tamount: 1boot\n", - "\treceiver: bostrom13ekked354xjm9e3k6g24vxmvv9g6f3sy7eqs4w\n", + "\treceiver: bostrom1wvk7dzpx2w4l686fv3j0hwdhj2c4mg4ymyet9s\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mfj0qz0fpvgssw2lsh93e8yl96k0mad4qmr92l\n", + "\treceiver: bostrom1c8mg543jekf8w33asfrxdqnm8jhmqlzjuayvlx\n", "\tamount: 1boot\n", - "\treceiver: bostrom12tx5kleezsl390y74a0czsvndku48dvz56nkcy\n", + "\treceiver: bostrom13m8sk82c43gc2fxmmk23k6fny0d2zvhamx6nt2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1f2qs2stcutv7mjrsekgu97ld0mv3yl46z79zf8\n", + "\treceiver: bostrom1dx66n2ly66yeymu7jk9mnlz6tfvnf2zy4daunp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pjgpvk35snhf35gmzktzehss8hzj52sk7v8quu\n", + "\treceiver: bostrom185gvs7lkl6z6uvcfdlr3u6yx8d082dn9z2eqe9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u0mzndr8pcp0ldcyx52pchtc5cheettd40en8k\n", + "\treceiver: bostrom1l32vtc6hs259a6xfwskhxlnr550z9nwera5mpz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wdcytgtdzayqz90y7qycmvpms3xu7sntg32n8m\n", + "\treceiver: bostrom1hmeruspxkw2ptuwy4af9f5xhrt3jj9jxxnskja\n", "\tamount: 1boot\n", - "\treceiver: bostrom1t8xtwsnx87rmcvwvf8fw2jmjm6udaz05r5uvr5\n", + "\treceiver: bostrom1hjpgv89evmjctjhd3mw843g4a3272tayln28jz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1esupkf4gkd387vk47cwhszhqccrkulvl7x5smn\n", + "\treceiver: bostrom1g945f9hy6tzl3e3lkjvx8n5r3tjla6kfrsm9na\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hv5zpmadursxxgr46er893r08h3u74h8ssdqcm\n", + "\treceiver: bostrom157h75vtll6pprzphzssqtzs3mmvtj5u2tf9u57\n", "\tamount: 1boot\n", - "\treceiver: bostrom1red7se690dsyqqttqgu6fukmuedf5ma9xazjfs\n", + "\treceiver: bostrom1knzp0vee2lrujy7smhc6rvfg2572gceh2lgwf6\n", "\tamount: 1boot\n", - "\treceiver: bostrom19nmwgmpl35k6yunq9d6yf2sfd2522fx3rtldq9\n", + "\treceiver: bostrom1lp2yvc6gz03u2kcdtszqceff0eu0vnl6a23ahk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ps2tua3k78kpq29s85np2utqjwpfnfr769k4fj\n", + "\treceiver: bostrom1952hfdkf0ex6q5m3vpaxmezcer665mu909xmvv\n", "\tamount: 1boot\n", - "\treceiver: bostrom132kzv0drasazwmywmjdgwlkxnuaa65f035d828\n", + "\treceiver: bostrom1pq45p2407elzxt7rrdh7zf8pjquh2m2x6k3mq0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lj9c4895pyczdm5ewe824qr73sy706ufvr3u8j\n", + "\treceiver: bostrom1j5ha2l0ewuugp2f9vawy3x2edt3ewmt2pfmn7e\n", "\tamount: 1boot\n", - "\treceiver: bostrom1huj8syflgp4wgrxe2kek99l54mmpjglf3qazhd\n", + "\treceiver: bostrom1cdzwjlexuytfw7hhan6m8tf98f743evxp00dxq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pgx4j7vgfesw5yuczdhm408y5as5kzpzt5pqh4\n", + "\treceiver: bostrom18v4pqyvn49j8qcvlpj3vmw9e6v3845ase542sq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n06qj8xmrd0gjzq5qusy626skmvjvuccurm3pn\n", + "\treceiver: bostrom120rdmwq6hpjhl6d8qz4f0te39ufdqzygv2av6m\n", "\tamount: 1boot\n", - "\treceiver: bostrom13x45389rvzzck2qnlrfsacn3w07d5rxwtln5vk\n", + "\treceiver: bostrom127v584568v3c7fhevum3ppype8acsqmucm2gp6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hhlezq55q0k9jnd8y5mkeqd48p9xf79xkm4sew\n", + "\treceiver: bostrom1z2zs0sx45qvaz59ppdqy3yz4n5k9a39d7jqplt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1adnquteqdxv0n2hyu8hqmm54sa2m7kfqsjvfwn\n", + "\treceiver: bostrom1g6sx0lu4n23ez20c3xwtrpr62hn4utwkvkcpzc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c4nvwse3rpmuas9yqtwaen7cdpqq0qypc4vg0w\n", + "\treceiver: bostrom19umnv32ek63rlyryjnpxegnzn05qy5ayhd75e0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1elp7gt4jcy3nyc77gtkn3s5dl6tv8gsf8j4hsy\n", + "\treceiver: bostrom12cy8zec7kc37d74624y7gf6use79ejyy60ue8u\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zzzesx85ney96p2r4a8yl28hgfagtnlad7x0xu\n", + "\treceiver: bostrom17swgkgvmllw2ngr520n7u2kfe6t5nlxfnc09vj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ef33gccdfefzt4qu549gp2lx62z7tzqw2rk7zh\n", + "\treceiver: bostrom1e9yylynfckzftmjnkyftuxzgx4ap9kdp02az9g\n", "\tamount: 1boot\n", - "\treceiver: bostrom14qufmlqatpag6crnz804sm66zg5asr5n5rquak\n", + "\treceiver: bostrom1fpdgwaqaxncxqjkz3js8mqg43kvj4mecshhlqp\n", "\tamount: 1boot\n", - "\treceiver: bostrom12a5cwxpum4rc8amywdd5799fl7487n6hhnytt6\n", + "\treceiver: bostrom1lfsmp0pre869u4t8t5yqlr8kxv97ed8qg4d874\n", "\tamount: 1boot\n", - "\treceiver: bostrom133z95cvfe6zm95drzcu76cesazpz8cpnnacme5\n", + "\treceiver: bostrom1qt687vprztzl79exp97mu2kd5a5vud2e0p0wqw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ejekgvajj4kah3l2qxeuqsc4ge0g9s9gpspcn7\n", + "\treceiver: bostrom1mtpq6h5qzdn07guyzn7yqcxf9czh5csp2y6aqc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dpc2g89pw0xynnevfnfu3yv2xk74tyv2h0gtjg\n", + "\treceiver: bostrom16tfaxny8xamef04fwttckwpdt5cmr8r27c6vgn\n", "\tamount: 1boot\n", - "\treceiver: bostrom16ut38h04e7wehjh72jck69skd2tzqnt2vf9nf5\n", + "\treceiver: bostrom1u7rwkllwrd5shvced5jmzv056u57j5jsddxu83\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yfefhc6xgyc8dja754xw7k6qquctu9eymzucqd\n", + "\treceiver: bostrom14fhg9xz6m9ckpgzjyf8ea202s4lygvamhrcj54\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ad807pcpjplvssem34m3w333gxkfszkypaywqc\n", + "\treceiver: bostrom1g5n3j3upj7pj0tn63sqsn5qhmf0lj45snatx93\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rp2tc3g43kjmj5k5rmupa5rx33gzpd7jvm54sq\n", + "\treceiver: bostrom1jwfl9lsszatf7j92lq75x05v6a6heuvkg7e299\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dh70nt3he37g6a6ppfru3x3vtlaxzzumzyqfgh\n", + "\treceiver: bostrom19pf27lx79yvkjdtxepjy84eusv0chq4nfc8sue\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vkjpyak5vuxqmh2mkklw0z9cyxdccn8h0g26eu\n", + "\treceiver: bostrom1ednnmm8mzenmcyxzcmzeelknx7yrv74agt0hhn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1l8s9qvrqsvux42wujhpunuxpgc2rvyueyqqh3f\n", + "\treceiver: bostrom175tm4ugaf7texe8av85nehcf3wq9w2a0raeaw6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1l73r60rqh608teuh7ntlm4j8lv5ddt4pujkk5h\n", + "\treceiver: bostrom1yxrvtxd0nufz8k8zh6eu4e9lml666z3vh75e4r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sgtst4rd8zxlrjzt9ep37a9894fy95v9cjcmft\n", + "\treceiver: bostrom10c9vyyess0fptu6l9xn9xlnm4pyrk7smfjsp65\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k3j25up26wjvpuvtdyagp8u82lx4zv6r088ddx\n", + "\treceiver: bostrom1an9dkc54eadpl8zqlhm7hka5tkvn3gjn5e0ul9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1v2jh6vpjfqnnhtmdr2gh6ggmjgj8qeq0z5k73d\n", + "\treceiver: bostrom1t6vldxer7r2zq98xuy3c2ydmxwy7z5tsdf4vdx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zrch7j3jzyzfc4krgk0rt2ysx7mmv9a3ngrf4d\n", + "\treceiver: bostrom1n62fsqa6a7hq99aewgzgwz79cmsh65usau5lr0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ltsge6cj96fz3hq3fthmkkyusrtgraqzgxknn0\n", + "\treceiver: bostrom1p3lg0m0793cfqkny3wfufmfth7jys9r5u3gsym\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lx6nnj049qk3fvappr7602cn46hrhcvrkamxay\n", + "\treceiver: bostrom1dnwrzpcyacv0gfv3za7gmn8psmr20w3khx2xle\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mvm0upuuhys405tuj3yk4emwpd3jp6v66t2ptm\n", + "\treceiver: bostrom14zjqnlndlgl25jglqjvj7kxklgz5gvga8tcxj4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1t27snpyh9lhwkd7v5qgsyv75dnetm9uyde0y67\n", + "\treceiver: bostrom1yz9ls0pu8hc06pjc33v6wj3zym4tc5f8ck2gul\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gpxr2cxsuacvmyj3jdk465gcnt9zrt45med59t\n", + "\treceiver: bostrom15lc6e8anzj3ddtjm7l4szz3fm4ns4ftnq90fgt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1863jyasajs90z58jx3xwyh27t24s7w9zz8wpud\n", + "\treceiver: bostrom15pvr73e7vty5hy597t2zler0xktsds6yprdfqz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m3h9f57wrh7rtfjxvmnj4dj6p2jscph48l0jjq\n", + "\treceiver: bostrom19v6f86y965fsg94xp0qjkm45kuv5twkzs4p545\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ycj9x2lw8dhf7cz8rchhkhnellq2a9ntypjhhu\n", + "\treceiver: bostrom1t7pfrtxqmv7wmtfv8ujls335y63etgu4jdutl9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rcxa3anuy6mntenpdh3kmzgt2ud66axuxv87dp\n", + "\treceiver: bostrom1p2cduzf67f9qqrxx696lf3p8cmazmpretak450\n", "\tamount: 1boot\n", - "\treceiver: bostrom13adtcl0647z34gqaepj0xhfh32vav3fh0l4cvh\n", + "\treceiver: bostrom1ug94hk7nnh709wrf0avrv3d9s05cw95t0na46t\n", "\tamount: 1boot\n", - "\treceiver: bostrom19pjdhdyd5qhm2xdp4z8pm3sqmqfxv3x8cf398u\n", + "\treceiver: bostrom17zu462kjxhsgccur2up8ux7pmafsalf7gf25xx\n", "\tamount: 1boot\n", - "\treceiver: bostrom14yesn3x6ws8z8wg8up70fn5ehluxsuv7prmdvp\n", + "\treceiver: bostrom1ftfjd03ulp5l9e85muswhdrewzr5vs27x93mr0\n", "\tamount: 1boot\n", - "\treceiver: bostrom109m5s2eahdtc003rs7ythl39058kvf6c3wlqac\n", + "\treceiver: bostrom1xn6smucngmns54n6ag99s9ryhn2rrhdfxxy84x\n", "\tamount: 1boot\n", - "\treceiver: bostrom18shkaw6upfar3hy50tjdgn8xcs4qmhwryd8cm0\n", + "\treceiver: bostrom1pw7pmuvezvxzel8e0uaxrydhp9pw6fdl35plp9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zeq3ednsc380cgaty0cady475fxxamunqjr0qx\n", + "\treceiver: bostrom1gqpa7kj63v9pt59qmhpltnapr6s6srarw90wlt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ws8zm5hw9tdg29lekr2wp6aewp5328qqgyuar0\n", + "\treceiver: bostrom1yjqtkpcywghj6555eupyjq4lyqfnm5xu5yv86k\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z42hr083fwqzp7pqvu0th764m2xh7gjthlkpn5\n", + "\treceiver: bostrom10drcuspk0su9nurteuhyhcscad7vp7gfvexde9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gt3rrquajjlfztmmlnvhc0jrrlf6ftuttszjpg\n", + "\treceiver: bostrom1rucrhynpj0kfm0u0zyns2er0639jhj8udzgqpx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lwty2eevdwn0des49xj30y36m0nl4pmxe8e2z7\n", + "\treceiver: bostrom1y8sq6hg6p6aqexh9wgs6r0nk5u6dnu0z5r8q7z\n", "\tamount: 1boot\n", - "\treceiver: bostrom10qkcxexsrvdcwky786gmz47yyl0gnp752qcjgl\n", + "\treceiver: bostrom1rgughu024v2hvu42ezn6gajsdzr2dkemr4m0kz\n", "\tamount: 1boot\n", - "\treceiver: bostrom15kl3huqd3pr3cpnjfaqq5ez6fgettngymw9y7h\n", + "\treceiver: bostrom14kx95r30u4al720t0mp7uywwfpjdmdg2rhdlwq\n", "\tamount: 1boot\n", - "\treceiver: bostrom19n8mwxawxh8kusfhyhqd83h3q6x79rdhp4dnnu\n", + "\treceiver: bostrom13ztrlp285pvjeuvekyudfy7ude8m6pukrrx2lx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cn48cexxfd2sw9pe4nsxa97cg45y6z4zvm5tnd\n", + "\treceiver: bostrom1svh8juxczgz0xd784rwrgugz43hwl89ca6kw8x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lghgf783gv4zpm6qsh4d7wg5jx9c43k0vgvuzq\n", + "\treceiver: bostrom1g2hhdsj9fu6jm85420mlps06qw23lalmz890v7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1e0wcr4rrt747d0f9r0wulv93u7tz6hgpxqg3s9\n", + "\treceiver: bostrom1np7td0w4nu079e2td7u6f3r305cjy3udd538x4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gzl96wh9h7mf9cl3uk64sg28etp7xe3xllrkc8\n", + "\treceiver: bostrom12ar5m7l8tf7s2jwah032um0u35k3eecx6mfar4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1canzzjrahyhfaeexgx9rxu4xlf3sufz52cpkv3\n", + "\treceiver: bostrom1h8paexz097ny3xrw5txa090mvlgtl5x6z403gr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lzn27zl5tpurehdxl4kdzhce8gjgf7h688c562\n", + "\treceiver: bostrom1sgfmetwgv5hus4eh5xyq2t24qhtd94p83r79ar\n", "\tamount: 1boot\n", - "\treceiver: bostrom15xnvrjlfj3kdjy2l6v9g7sqyxjd46vwhrvujsu\n", + "\treceiver: bostrom1pqgp6wnvr7awghqkkna7vemys0tfprpgnelcap\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n2n9dtemhfc4034fcjwdjsu3u407la9mzsv05f\n", + "\treceiver: bostrom1dn87qjuut99j85vj69zrmlx2qv82ghu7yh29vg\n", "\tamount: 1boot\n", - "\treceiver: bostrom10zsr4kyzt9x9rhvv4dhk7mrw0pp7gryckkggt4\n", + "\treceiver: bostrom1zhfxel96cafgme8488ca9ruxu20jwna5ycjeru\n", "\tamount: 1boot\n", - "\treceiver: bostrom15w9fg5gjg22hjwp9k0jezsx4fs90xjfgynt67c\n", + "\treceiver: bostrom1ds987k8l84zzzxvjamypr7hslvet099qx9zjwj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ltnkp70zar32cvucs95r7azddtzsdm3jd9m4kj\n", + "\treceiver: bostrom1yr9gn0jjxe8jddzpg94tejf5f2gclq6yxnyz0r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cmyzcmgqsyqdxn22d4lamgv7xm3nnprzfhsf0t\n", + "\treceiver: bostrom1hjvgp8gae0wmjks29x3as3aw04z2lxu8ya3xc3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sl9tnk2tlvswd2cwcz7qcmks0m5ahxla3gs7t6\n", + "\treceiver: bostrom1wknsu9t7fq9j0hp0u6sh66y8wz50kmn7hkq2mg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mk2e5zkzppkzttpdq9vz4r620gxx6lre732c40\n", + "\treceiver: bostrom1rnp7kvm9uxsy4ymkv208v88w9zlfm6evp3ywgy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ryga6u8vfqc82609geavywlcafak9mmfdq59xt\n", + "\treceiver: bostrom1qt7gd3xmplz54g0jsvlqp8hp5l5e5hsthjnuys\n", "\tamount: 1boot\n", - "\treceiver: bostrom12y4qk7v8xppmjygyqdqk9vlqra82wk3pdqzz6a\n", + "\treceiver: bostrom1lh56g5kuh09amm0gjeq08zkjh4vwrs7umujz2v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rsll65gumqax28nx23g9utglfwv0mkmc9fjmns\n", + "\treceiver: bostrom1twmazns493ltr07j8l2k4vfgj3lzh9yyuzfnds\n", "\tamount: 1boot\n", - "\treceiver: bostrom1l90ux9f2nh6l7j0qcs9cr7d78pnka28h8489rq\n", + "\treceiver: bostrom1ygeg5nwmfpejmp3y2y4xyrlwww7hjz5uvy86pr\n", "\tamount: 1boot\n", - "\treceiver: bostrom13g2khvhft04ma5gr26vm7vjvjqvyvhec2rvhg2\n", + "\treceiver: bostrom1sq9thveegy0mc7e2c2jvmtrd2fxsythrnv0ewt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pvhcayvs8pye5ke86tvmw2yd4s5sftrcvp93j3\n", + "\treceiver: bostrom1nry8yysmr8dsygmtjy4xe97vtytxvvk8v49x5d\n", "\tamount: 1boot\n", - "\treceiver: bostrom12r7ef469emrly5xm2e4qm8agmc4fjzry354265\n", + "\treceiver: bostrom1t99vnf78cfdljnq9f6xu7w6dwt8jud9p5pajtc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1272zwr2gw5phz5md73v24mvl0ars5mppskg95d\n", + "\treceiver: bostrom1ny28ge556m2uz85pr38fg52djrpl2m084vwhn7\n", "\tamount: 1boot\n", - "\treceiver: bostrom17a8j97ppqytuhctf4dkh4mszy2hr5fsy4uwlzp\n", + "\treceiver: bostrom1ehfuvv4v06fytznlhzgqq0z8exmcqmu37tzwvk\n", "\tamount: 1boot\n", - "\treceiver: bostrom16ff8vpqjptj3dcv5zx8zalxp4cskvskc2tywph\n", + "\treceiver: bostrom1j3s5tpjphqzxwt4tpysfk2736vxtdzv4jaxnz0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z8k7y0dmasuppvg842zmy3qjz2cpvt9ersh0zt\n", + "\treceiver: bostrom150ru2n9yge85urj8y327zdenh44hrezlp7g5ga\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qf3677tgxadzz59u3g5v2easav83kx5a06sshh\n", + "\treceiver: bostrom12prdczrehp8kz43k3daypnf6ypkxza5hepjcs3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kvqcf62npl8psayn0zj8u5384g84qpfeqcds9x\n", + "\treceiver: bostrom1d0krs5v8dv53r9q79ah4pfwlv77mu50tvqt2j3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yxp0d5uqky056kt9jewx9wsfhqzzjkww2m5seg\n", + "\treceiver: bostrom1fhc0d4ey0d2h67jgarl9y8sal2e2nq3d4x0um4\n", "\tamount: 1boot\n", - "\treceiver: bostrom10j0ku495ccz5jqtje473etfxp2kzgx5w69jdsd\n", + "\treceiver: bostrom1evyujpmz7452ae0lyjq24de5d6ltgclvv352ec\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lf6jgjee9gc2szmv3eccvtmhus0aczwxu68tr5\n", + "\treceiver: bostrom19vvarrtver9z5zmqzkqug3jj480vhqatd7p20r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yxrkavqllgpauke296q06tdxfgzk0t2pkq3n2m\n", + "\treceiver: bostrom14m2y4s36qdfdf04v6ng5y0x7jg0wtx0vcxgpz4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d2vk45yqt5lwha0xy6vfu4cf7vcyn03nage6ww\n", + "\treceiver: bostrom1dxzxhahtm9rsr5rj9r0rku4lxrpl8xl3lljj83\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mkd9wd4edvye75kn6mxrmfm40pw835epy3ld94\n", + "\treceiver: bostrom159y7efzecfhgyuhzw0f5crjs0gqtuesjfw25dk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1el6lhqvs9peghr28uncqppmre0zx80q43u4ztr\n", + "\treceiver: bostrom166m2zu3l8cgswsa0hfqqq02v4tv677za0d836j\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nk5u4n685wdsut5hsges6whr00fv9jxp6lgvm5\n", + "\treceiver: bostrom1twd2dsq50gzxtgue04lg2t8attth944u9dn6kn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1djunzwycl3ctlqy3x43qket07dqnf20e8pg57t\n", + "\treceiver: bostrom1tc2gmgpd5h8ywpm9tqsgv3q7uuhcy90plv3qzz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tg4e8uk630mjwu7wa6fs0zhnz5ds9w6v5zhtpr\n", + "\treceiver: bostrom1hffavyuxj6vthsxamrlpp8qazlc58rppsxsmu7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n5av3ye4jmv3nzvm5kzykuppny3q5ja9pl9wpc\n", + "\treceiver: bostrom1canhup0kmalham7xqga5tkdjfy86zvlsu9jkr5\n", "\tamount: 1boot\n", - "\treceiver: bostrom19fe2zw8svaj28udaarvk5n4pam6a3ym7232fct\n", + "\treceiver: bostrom1pnkn0p9zzzz673f3hhhgstj3ge2n0pfn29jz5p\n", "\tamount: 1boot\n", - "\treceiver: bostrom148yjsyevtaxaqey3gq6e7uj8qa36zad2y52cq7\n", + "\treceiver: bostrom1q72pueywv7tyr3s8f86gyt4rs9tltssujfw4pc\n", "\tamount: 1boot\n", - "\treceiver: bostrom15nav2cp0wp2rx5xrrum8qcpdjdvg2g8vq9lsda\n", + "\treceiver: bostrom1nlpfcqqrl2rj3xelkhg2m9yn3kpyam7dfej4ce\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pnap9pn2tnrxrjsle5p4446jvq05yg6cx5lyqe\n", + "\treceiver: bostrom1f6q6tsvamvtlc4z5uj3tkscksjzpeh7wsq9w97\n", "\tamount: 1boot\n", - "\treceiver: bostrom17uvtxffr65lwzvq3hfaczx8k5vtp0gh7m94rdw\n", + "\treceiver: bostrom1zfg45x32rqdmmwjcgcnf2m6ahhm3pzng0tpdlp\n", "\tamount: 1boot\n", - "\treceiver: bostrom156jljd0l0lzdmk4ctxh03hk73j2zfeqmftg2c8\n", + "\treceiver: bostrom12u7fg3qzhtrge62j2n7t28z9zvyphh4xha5p3r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1p2hlp4s5wd037k2ydy56rkzu35je5y4vyf3p0u\n", + "\treceiver: bostrom1yy4a8u45tmd66kxqknnghss6aqgfwfpwvfxj9j\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w9u25qtrrk9sdpwlw79t4ezqfxgjcrms0l7dua\n", + "\treceiver: bostrom158selq0q73lhd0fp885d3r9j72jue790matpq6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vgexpyksz0lrfs80mu80rnn2axua024w6ermxv\n", + "\treceiver: bostrom14mj7veqmcjk5dwv98lycjylrg5kdlt49qa4mqv\n", "\tamount: 1boot\n", - "\treceiver: bostrom18xgwweleqtd74esw2k8a7fv4ut5uekswdqeezm\n", + "\treceiver: bostrom1jvjzr0cylkpgs6erxlp3mmw24t9e3c262fzrh6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1knkp24dhxpmtza4gfaugh5hzx7wqdwpcqu3kpx\n", + "\treceiver: bostrom17m6jtjjddj5rjclhzlhauj6pcugqs3gzth9v98\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uym0vjr8u3ulq678u4z6y5rmxpdda99x24a4g0\n", + "\treceiver: bostrom1u4jdlnlhml65n6u65da56as6rps37zkzkhy7y5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yvtud2gd3zycgfdamwcj806rsd2ruxsleru08w\n", + "\treceiver: bostrom14kgg5pz7ky4nf7857ah8cyfq20cqlf7krtf693\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rm3zmg0d9nsqtgpgn3wutp0cthyxjvmr3ld8rz\n", + "\treceiver: bostrom1rzg7wquj3qv9y5u634glzh4c2k4ffhzpd69ehc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jvkkuwf3mqm349gmm7pstted7z38v5tg34yflm\n", + "\treceiver: bostrom1pdy950wgz75yvaktfnp9q5gkd22u3cgvx43ugv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eecc7029t5mg8an8hu4rjcmjmgw6fraqupw8rp\n", + "\treceiver: bostrom12qen0m82h7m59s235gama47qyvftz5uucu8jq9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lnssksz8wu9snewwaqhn30cdqyjw2cgmajhzy8\n", + "\treceiver: bostrom1ysjdg6j8ly8l5tt277znys4kcu2d7k4nrumqc8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z7zsg4l3t70u0l0q27xmj3k9kjm4q70gdantkz\n", + "\treceiver: bostrom1xa75r6rnphwxvk7amzu7mmy8vfvcd5v9fmxt6d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kk2mgq4anvha64zj2v70kfrlkfyg2kka4eer9r\n", + "\treceiver: bostrom1z273fl6zc6vnzedsrxgdr0xj522dvrrmqtjg4d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qyvjcl66jdeqjjglnsuhdlnh2et54597qds923\n", + "\treceiver: bostrom1pvd26vrthjftr9sm4j7yetyr7z8egjlm5ryhxp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yuxd9jhxj2q4qwku5rs9dmc3s7sdcaw9cucrlt\n", + "\treceiver: bostrom1p95594jfmf6mnryp709l5pf42a07ngqdlj46ex\n", "\tamount: 1boot\n", - "\treceiver: bostrom1aql2jdv3z8q704l2t6wtaza094004m2latxjsu\n", + "\treceiver: bostrom1ts52wf87zduvy3hpl0vycznlckptsgrresdckn\n", "\tamount: 1boot\n", - "\treceiver: bostrom18lctkqflqze9se4k9cyqe04jmhhc2mqwarh5sl\n", + "\treceiver: bostrom1eul92v4jgkw6eyzwfe2n25uk3ck8vtnu50lk53\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gv26y3ershdhk80jft742fryxgfxkvw2u7cqkm\n", + "\treceiver: bostrom1sjxztszfn995jupzmazgvy6798hzqgx29x9hvf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gnyjl8p4kju72dzc9e3r3x0z634krxjzclvla8\n", + "\treceiver: bostrom1f4dg6ysvh8zelc5zef9n03xrp4vgdua6c4837w\n", "\tamount: 1boot\n", - "\treceiver: bostrom1e0punakkucg6fs3zfzt7kxa3l9ws2vnmsk7k3g\n", + "\treceiver: bostrom1cdlxl3h8x26py7hrxprg47qe28an40fxa63f5p\n", "\tamount: 1boot\n", - "\treceiver: bostrom152rkzjxxltryazsc7tlc7pkeqshguwhlcjvccz\n", + "\treceiver: bostrom1gr6fpwcrr2lvj5crfs45mjqvql2ad3m24q0e09\n", "\tamount: 1boot\n", - "\treceiver: bostrom10snmcmq5dcjwqt5tx9898e7yw9jqm4q257tewg\n", + "\treceiver: bostrom13tcngp3dwdnsl8xr6qc30644x2edtrj2k456r5\n", "\tamount: 1boot\n", - "\treceiver: bostrom130289ucmemaae94038mvnwkw2u0g8agj4twv0y\n", + "\treceiver: bostrom1yhjw4wdlwwr75gjwvsu2czl52c2lpc9tmd00ht\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ryeer40h5kqamrppaelkl32wd7wqvxcnyzzlxs\n", + "\treceiver: bostrom1dmxe22r72xlhkejvztet6c3eqltqayg7e3hvxf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1t7nlfpu3ul0xu9l0zd2yhwln40jk7q5zhkqu23\n", + "\treceiver: bostrom1axvq0dprx4rkdhutvctsxaxueuuq8s3vvmkklt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rv0ndmcktfpredfzx5sdnpkaw4kv3jf2r8kyy9\n", + "\treceiver: bostrom16f4ykcc2349jmhxwpn8cwrzhfh7yd7c5m5wdet\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wc6fuczajc944fzff5smxmxarscluxv4sjjdre\n", + "\treceiver: bostrom1shf3uxcnknp6j4zsmmhhmgy6hyehedcazsdd69\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hy8923lntzzlffzqxwljc98xht2hjx5k9608ag\n", + "\treceiver: bostrom1yrwqwwrvfrv5j2dkj3v2mzugeer4h8clm6y99c\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xwc4pcrye5kfawl5h8x7c8srz7znyhctqapgnr\n", + "\treceiver: bostrom14fjynvm50z9p6aew4awhskzwf9t8c0ssskregt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1whv7hwdvg04mrcwwef6zqvgj55d3hrwmqqvdll\n", + "\treceiver: bostrom1q093ejn82ddptmapsmjgunypdgxecvlh4vpz89\n", "\tamount: 1boot\n", - "\treceiver: bostrom196arr37vdpkegs36sst0wapeu09x2jrwsqf6nl\n", + "\treceiver: bostrom1sxkcrjvw2w5rmgzt7z7dvhzncf988cur2kvak3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rndq2483s5xj8gucrc9wxpu553xcsdgqrartc7\n", + "\treceiver: bostrom1avjhcv8ess8qqykkwf4s4a7f0qawev52selj5e\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rvl83armem27ldzyqtr0975v26xtvf6h79zxqu\n", + "\treceiver: bostrom13egac8u9ma6hftyu9dkgsl22n9ukhqn2xx62az\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k5sv92m2p4e25gth774v6tzd5z9z732samlp9q\n", + "\treceiver: bostrom1a4h7tjytue2zzv27ntjax3syfcsuszy96j3r0g\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qyt0p8z3u9ax5mv6ugpka0fqhat62z2gk2kq7z\n", + "\treceiver: bostrom1qw3z3q36gm9m9f6zef9g6s5qqtgw2gdkzw5tqs\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c772gprpha0c0mn3kjnakm5s0t5xz0ql3lnkyw\n", + "\treceiver: bostrom1lfv9uhwpl72v22j3ejfcjng5rdtfnsudsxs6jv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jtqh20wypfl20axxs8fmm7wfp3tsfqr443qhgm\n", + "\treceiver: bostrom1s306rczf4l70r2uf7nq047ukp7vdkwvssn92t4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wrc86l5mwruxpn3jd0axp4aa2g67794vtvckyn\n", + "\treceiver: bostrom1ry4zsklvhtp5efdv79dlyazhddzr3ug90g4puq\n", "\tamount: 1boot\n", - "\treceiver: bostrom10878qvjnmx8877k79xmwnnwehznj5gccxkw4nu\n", + "\treceiver: bostrom19rsfq6j725wm8amtu67w9sfagjahhpujtqauy7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xkpvlq2epd5myd0jjgghqaz65kdjngpdjmtgms\n", + "\treceiver: bostrom1tu6z20gmfdeglepskuv63x6wy8wl3ulcrqnzja\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eegfsvusxll6qzkmpq432ql6l7a4kmaxys4md3\n", + "\treceiver: bostrom1gvu3zxfkmt0ws4usuync65cllzeuztlmrl423f\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ymja7x5ma6c5kzylq7mwnlrq4k90nqueau85qf\n", + "\treceiver: bostrom1vyl6zk985kgnvzm9dlwuyyxc7t92ksz7c2p9tv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rmaxxl8f9cz2v3855gxrgv7vcjha6rgwft3q0d\n", + "\treceiver: bostrom18uuvddn7t8z9lhqprjy9h56yvzunu3ckpkm6se\n", "\tamount: 1boot\n", - "\treceiver: bostrom1exergrwjnsc59pjylq5nq5l8gxva54530v057f\n", + "\treceiver: bostrom1krewlvfhem24gkh3l4rc2u5gwvq9aej6gq7gnx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gdyvn0r7h2g87dr47uywjqr2ls5ac0yhpp7u84\n", + "\treceiver: bostrom1gfpfa4540rsn9g78nqm65x5gmpw847k5677yrp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1av965mr6s99cmjh64dxaq6zjjklu5qzg00e8pc\n", + "\treceiver: bostrom1sucs2ush5tl9c4puu0thls2k3yxpymrx4kxqd7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1slx2cuzkrndjkryv5hmjer37zedkkl4ly54p6y\n", + "\treceiver: bostrom1f2xjvversu4rjrynvdwqp4khfk4rrhlf9jn8h8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qw0nxhken97l2gcnzufachp075722k8mlvqffm\n", + "\treceiver: bostrom1p5skesv5anlf9t8s7wpncrrqptp9lucsdp9gpn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d957e45r6787r7gl94hj88wzdszfcpz802hnyf\n", + "\treceiver: bostrom17haqmcetw8lkgughyzwu5tghpmdsu3vsh8ktr8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wrz9dv5vmt85kr6gqts4zpnxpmmsrd3ggg7q00\n", + "\treceiver: bostrom1wy7034f8r0eyw94sx8zpann0akqw0wu5yqxxyw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1263htm4usq57gaqgyv87mucxhwer6sjk9hfmus\n", + "\treceiver: bostrom1zvcflys92w5ej9xyqmg2aeappy3y9pyc8mj5t9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x9gnuqfs5fwz3wjssphv5vx3djnhlvvxmvym5m\n", + "\treceiver: bostrom1fpehl9sp0tfv5uancnqnwewp5tw3h0csd09pu3\n", "\tamount: 1boot\n", - "\treceiver: bostrom16cn6v5q0zxkw37tqv0nug3sxdl2t3ejyy6x53v\n", + "\treceiver: bostrom1yzdg66fzggcergjdzfd8tzpu8402uw40gzw279\n", "\tamount: 1boot\n", - "\treceiver: bostrom15hu4ss4dkwcy2yvw7z08la0s0j2gl7u0d2j459\n", + "\treceiver: bostrom1rytzpkvvz5ckd38kjym2n7u6n3g49sxcms6ynn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pxxqjtc9vmlepja5v4l32649qnnsnmtg4pzxgf\n", + "\treceiver: bostrom1av2p2srnv45hxxeas53cxpgvwlrr8a6s36sc37\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n8tluw3cthfdued39qar32ut8m9rcp2fvcrtnr\n", + "\treceiver: bostrom1h9ffud74t45v39ddgh74ttqtehqu6g949lgjvk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ra8yxpyw4acp0tvmz090z6agmgtk5y5mp5630f\n", + "\treceiver: bostrom1zkf8ed8hav0940aerg0xv54fe8k8dj0tg2czj2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zz9et7c7n0r5ga72972zvnnu2lj44m3ss9a69j\n", + "\treceiver: bostrom17q3lqzt5xy5j24w8yjfpehpaeqdjfe3m80t75j\n", "\tamount: 1boot\n", - "\treceiver: bostrom13klcwndzccfplnww4shw6jwftmautl00wh9jae\n", + "\treceiver: bostrom1zznlyhc7lqernh852dnr6qe20uu2rjls9q3lux\n", "\tamount: 1boot\n", - "\treceiver: bostrom183yhqdvqmvzmguvzqghvj8lxf2aajyta2wppr3\n", + "\treceiver: bostrom1nu9apajpl0fqtqmga3xqvmlk9gcp76tq3m9lcy\n", "\tamount: 1boot\n", - "\treceiver: bostrom17tsf38fy353ak3lz5ta2faewswefru296t784v\n", + "\treceiver: bostrom1lqt92em8zgeyngghut9azkacynk4dh6mcljefk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d2nxh2sv3p5sy2097shzrdwvjwsultmax49zah\n", + "\treceiver: bostrom1688qrcrjx4jvjm6clw4p2q4yvxc05acf69v5ph\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xsh0z6f2qcjm8s79e7nhvpman6enacgw4uqrqh\n", + "\treceiver: bostrom13yex0p4l58ey3ute4rugjevarcaftvt0a45wn8\n", "\tamount: 1boot\n", - "\treceiver: bostrom13zvvt0zurjx9e0cw4gjwhhhx96zqg37m4k4nrv\n", + "\treceiver: bostrom1q265aphtfc7tweh55txxczjczqd34v8ukvw0tc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pjpvc4nfjmwkfd7t05f408hr8y98nt4k6zjfag\n", + "\treceiver: bostrom19jtd23actawgfjtxdd9xavhmrpvfeq96l62k2w\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fpumhtym2yy0f8guted6hvxuqxslyuleyu4vyf\n", + "\treceiver: bostrom1y440w8rk086fklu05d75nvxz68qf64qft3t4u6\n", "\tamount: 1boot\n", - "\treceiver: bostrom19ngkcyj60yx942zgsnm3ezywpk4jgak698hpet\n", + "\treceiver: bostrom1tnzggzkqnjrnjqn9zg466rreak0lujyjtuxwn7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yjygzl72eengtatw5tlglpgxw6jnmdkzsnle4j\n", + "\treceiver: bostrom1dduhtfu2yjqedermnzxrwun6wf8spyn9phs242\n", "\tamount: 1boot\n", - "\treceiver: bostrom14m00xy5zg864fjy9w88demrd3y5lvdnefpyvhg\n", + "\treceiver: bostrom12kvu3hfcypnm0lvjzlltq8gmh86x3r5q944487\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w4drvlekq4g65nwlf3v6w2p4umpxkvrk34y4g2\n", + "\treceiver: bostrom15urnqr8gmzrzs6jm332u23r22njgrzetcsmmah\n", "\tamount: 1boot\n", - "\treceiver: bostrom13yv7g6nvy8lpjetpwtt8rtqmhzwn9t7wc7aczw\n", + "\treceiver: bostrom175afp3wthtxglxfc26qxlksfr22268qyqjx2y8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d36gkttdrlwse06fzqye46udx4s05e2up7a38a\n", + "\treceiver: bostrom1jqrrhffpa223mwtl70n62g33sjr778jnu3ta2t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eat3lmkfd30am2zwzsanacuy80dluqjma02jy9\n", + "\treceiver: bostrom1hr7wdv8k26qnv37gujphhx3xxxwk5kxtfxyqpw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rvjtyz7xmrjk5csltdg7fwx5ew9pyxg6rtnxud\n", + "\treceiver: bostrom1w3yukty9h752t4sa2dxvnld2339e6nrkvhcgk0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ee2drzj2x0ukhxfvxexd0pkv4vel5j48f7z04a\n", + "\treceiver: bostrom1sffxvpf7jmjjrqc8mzr4zcv5n4ulmu2k46d8pl\n", "\tamount: 1boot\n", - "\treceiver: bostrom17tx89xcyqhvkvael3hssvy8w7plwsdn8vpw40g\n", + "\treceiver: bostrom10fhh4qmfc42dpq7fem04pqh2a9q354n285jtw4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nyy9grysw7zr37jcqqvq59mand2ufe29de4rxk\n", + "\treceiver: bostrom1ef2wjuwlllf54q0q2v3drvky6kyn59x858nxs0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1l4cxtgxrahlxrnau5npu4yhnfyrnmdg5jrxjta\n", + "\treceiver: bostrom1kvvwvkfywplfpdkxqkajva0q9w6lw9w6t4kgwy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ascat57j3z4utyy3jjr6d7nkm9kz4wq53e2s3a\n", + "\treceiver: bostrom14uu7tmtd2cnm4vlg2hdz6ymz6vggagkg2led4r\n", "\tamount: 1boot\n", - "\treceiver: bostrom13c80ka49qsg0lsm7zsv6uq3mt9ncaj6cznmcee\n", + "\treceiver: bostrom1s88j6gcnydvq8l8t0dr2mrgnhll47pedun8zf6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pmtwzzsemwsr5nnwgegxa7452r9w9mmz9l5vxx\n", + "\treceiver: bostrom17lgqcqhr3jtjx7244yxa44cja8a7vwepewh98y\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pfvph3helrq9nkhmt8jr7n76yw7ym3v7g8rw5r\n", + "\treceiver: bostrom1em7vxfvhp5aeqa3xsr367thkqt3md4r5p45ul0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1t6fejvlnfxezqu3k7e5wtls63760fcrr4l8hlm\n", + "\treceiver: bostrom18tyyxsqekxc40y9qducfuglsfufq2vuhmgtx3h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wmfnfa3dckue8rzectj3mwvn4tu8f4ksy0uz49\n", + "\treceiver: bostrom1uvvc5x2rwttfcpnxle43y9vvvm0gy62scwedal\n", "\tamount: 1boot\n", - "\treceiver: bostrom153shdlxkckq4rqzzvy7dv98sdkuvvjj0uk8xer\n", + "\treceiver: bostrom1jfcxjz7qfnpddcs6890ad65cnyv3yrexrnehr9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qqlgcpp8vtrmwf2h26r6vwladsqlyp0e3z355q\n", + "\treceiver: bostrom1jxkjtag2afqv60ce7a57r88lqt9gml5eaxy2mn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1png54rm48dslkqcpshlt5hlyk6ltg4jhynasuq\n", + "\treceiver: bostrom1eg5ur9mhtzwgca2ewzf4dturg568h95hn3pplu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1j7jtuvzvmr4ny7ptepk7kfzxyarph5wmgdsrtl\n", + "\treceiver: bostrom1m3qguyakr0zdztt7jnhrw3vekgx3vmh3ukxyaa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jdelca68u68nzh2vvcmz0d4wgrlxt6j800uf6h\n", + "\treceiver: bostrom109rx5wc09drz6mgyrsmg4478jwcgersf6f6g4r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kcfxzezjswl59lrvuh8ue5erp0lc8z6g4hzuw9\n", + "\treceiver: bostrom1wwq8ry72zgjk07w3s2lf7eudwan5j5mv276fjf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xjme8f7j48lqe92kf7zr4n5lety0nysy22v86t\n", + "\treceiver: bostrom1mdge8e9hkyge9gzyjxmhrqsryprx7nspgtstwd\n", "\tamount: 1boot\n", - "\treceiver: bostrom17pz3k0j896c3uk4u2f0s38m52atl80fxw76lh4\n", + "\treceiver: bostrom1upytuk9llk5j79kqpddmhujjfuxq7ldgevt4gz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yzkts87l5pavkpgu8pufaexkqsflnll427ruvq\n", + "\treceiver: bostrom1xqrkffqdxht23946uvewg4smf6nqnkmd7pvqn4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r9vljtq3elx4rcuy7j2t7u2k3y80gnrmty6vw9\n", + "\treceiver: bostrom10tl26fsefa5kpngnrv9uqlj7u0c56twkyzuetr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h7q4ga3pvkzwjq4t33wnsel6ufq5490ymkpcqf\n", + "\treceiver: bostrom1danfj64ed8pexp58pau0tl0mgxksdq6w8saw59\n", "\tamount: 1boot\n", - "\treceiver: bostrom1y9w8asyqfrdh2a6444q2setcyf5rjupj7fgfqm\n", + "\treceiver: bostrom1stgue49navx5apt8rwl8nzpl5e46qz87myp8fu\n", "\tamount: 1boot\n", - "\treceiver: bostrom14rrrzyfapqxcjkkde43v8euecalwcsqgjr2wj8\n", + "\treceiver: bostrom1nq98p5msulv3n42k46du6pudjv8jhsynn85dfd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q5ccszy2ah3kr4duagz3fcexpxhreuanwf7y0x\n", + "\treceiver: bostrom1k64h88qrev7dyt4mz8wesc064unrsxqrcvagkj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1p48v93pt6x3v55q8tmc6m0zz89x4mv8zrkw0ke\n", + "\treceiver: bostrom1ysm3x3h7vnzulqmpf3llt6lvweg3jyjl7fca69\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ncddg6ug3z9nurnvxs68yes7jpkkdf64r0gxw9\n", + "\treceiver: bostrom128547p5nc9wl24n372s9nuznyat5pmdfey3mmm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cqrr48fuh7a0lvfkvpt64ew8qtyf6wdp3p3sa4\n", + "\treceiver: bostrom15hfatjmfn4pszwds763qcxs47rf6dxnrw7uzkk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tp2r22hgtjaddj58ru6nqq3aa2jdv9ulglw7ps\n", + "\treceiver: bostrom1fqhzscfn88ez6a8w9p974m0y7tkaelel0kpp9t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ffyxtwy5auxheqa4zsf355ccpk9mxgt5384lrx\n", + "\treceiver: bostrom1yztvd4yv5lqp5hp974efndjs6sncsfjesd8xxd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gvtm8jmja2p986qc3zdpl283n8rxz5ajx308ry\n", + "\treceiver: bostrom1ndt979njhcmp79qx8vpsuymuwncwaz6kedxszh\n", "\tamount: 1boot\n", - "\treceiver: bostrom17f6j0cpkpsu4kq4u3309xayngjc5jwpjw6cqfg\n", + "\treceiver: bostrom12jqcascyg2j5fasu4u2wlc5uazkc00xnt3fuph\n", "\tamount: 1boot\n", - "\treceiver: bostrom17vwh3hamtymwk7wfzfah425sjhwgndy9x24z5c\n", + "\treceiver: bostrom173jnz8suu3zy4dul5yfwe92nk6lwh9jxjqnvll\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xs6j4c2ty4ewdxs6wmuw38z74hgxnq6xq5s2gn\n", + "\treceiver: bostrom1j2je70ls73rw0ztyz9yc5590gw4e43a9zvhy4e\n", "\tamount: 1boot\n", - "\treceiver: bostrom13fkzzn589ylsml8sggefzn6sfhxtspxgg8jxaa\n", + "\treceiver: bostrom1gpzc9tz07k9rugerlzfnr08yx08095tzzqvcmr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rs5ma0lf343n0d2wdpt42v3wqnenrd6cdxkhxf\n", + "\treceiver: bostrom1r29tlqfctx99c7msv3fy96l7u6k6qkmlrczpc6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x4dpwdk82pzcg5n6phav47slfcymv4a5f5vyll\n", + "\treceiver: bostrom1xngf7h58l3szha03vpmanzhaxpnyxwy3rrypyq\n", "\tamount: 1boot\n", - "\treceiver: bostrom17zv64shm4lwdlqnmx53yjv90ywv8eutvrahvld\n", + "\treceiver: bostrom1kxf9xwksy5qxjwzu4pus0n3xmtp6458e6yk754\n", "\tamount: 1boot\n", - "\treceiver: bostrom17flwgp3d9apaaf7q8tn4pylv73v5glv5clkz0v\n", + "\treceiver: bostrom1hlcr6x4g6vel2tmw0y6lyd4j3dgxqpykx2zx99\n", "\tamount: 1boot\n", - "\treceiver: bostrom12gn059recljdtxl4rlvn7873r0687qvwcd563p\n", + "\treceiver: bostrom1psfj2tyxdhy83r77ywnxwvgld2xjh3tg9kj2qd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1caw8zz782598l8t8gwqwk33cnsz3caqltun63t\n", + "\treceiver: bostrom1umml2zvzt8vpsak6nkr5dlvj0jv2rcxsy9z5rr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1p4q9avu6gnm7vdpjhe24zglufxg8enenmsy4jv\n", + "\treceiver: bostrom145zv4x4va2kq89qmz9pxtxm27vg6lxkjsggymt\n", "\tamount: 1boot\n", - "\treceiver: bostrom145836y7hja9cncgs46spy6xzefvl87h6gh0tmz\n", + "\treceiver: bostrom1ayvsly07neqd6kd69arzcrqesnxvhggs0aueyf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yel27hz29t99fcc9zt20a6he6qfx74hrap68x6\n", + "\treceiver: bostrom189jmn5q9rhy30uj82fjv7mfmcq9437lenec2sx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zwzuwp2pd737jk4deptsfv6l04r02av43ymgem\n", + "\treceiver: bostrom1thrd7pwa670ekpydnwtqdfztq2yyv487vrdwg7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dvnskpwrurfl7zhnhv6z8dp4pwv7yjwqrr9r9x\n", + "\treceiver: bostrom164zzf0fnwyrqtddz8vmv5vg9krcq95g9qvv6pq\n", "\tamount: 1boot\n", - "\treceiver: bostrom124ghrls84red03cxkqddw0r8r9gdwaml22ee8j\n", + "\treceiver: bostrom15kd8mawqqy2xc5ccqn6tt92cqg60fu5uwmq2p3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vy6re6hce6jm393j3srg67dvefzeaxck94frr8\n", + "\treceiver: bostrom1uejtuq3xjtyg5yn94u2v4flpu35rqj8zxkczyq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1he4q77h7xmrp06uusdy8ml3tyh9s4v896t7c7q\n", + "\treceiver: bostrom1vgdu874958lvk9kns7dczjzynq557n4swplf3t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1atmwph4vdk35npt4kagup64ntppe4puwcus2kh\n", + "\treceiver: bostrom13zchywzrve3adnlu4j25p6gjpk0p7uwstx40xf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mhc863res2rp9wxmedffr8gqyqqj08v0l67nvm\n", + "\treceiver: bostrom1nydqmp4rf76suxcf00w9akyjq6l63qv9mhggpa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x598fcfkucz8wwak6yg7mxvmpan4rjp7h7ewyq\n", + "\treceiver: bostrom1ku6uru53qm32xvdnje9k9g40klf7w7rkuqmd80\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qx63pxw5qzc0t92rtakr6ljyg9ge9vz4cnrsgz\n", + "\treceiver: bostrom1rfgz5numwafwycvaf2nar7s9etfqjtampy2sfr\n", "\tamount: 1boot\n", - "\treceiver: bostrom19xlqckcfejgqpvrhtmjgctt08s0p3l7xv3aaww\n", + "\treceiver: bostrom1qv7lsur9pg6clvzjj0dm0pyufxwe305u5legvw\n", "\tamount: 1boot\n", - "\treceiver: bostrom168ls65gxjl29pwuyyx3gced4njymv3vdfre5nn\n", + "\treceiver: bostrom1q4zth8k2f4y3kxs64xlqdu6jedrjxsnj0m3jwt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rkfqct4ter3sf2yxxx5suhkgzy4nqwgkuhezx8\n", + "\treceiver: bostrom19aet33cr8j8rnk9nzcxzx9w4czyry4gh7w3ct6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g7n376gyl2a0jlmlmjsla9ntq0a94rg075m25h\n", + "\treceiver: bostrom1zs65q24dsf04wjjrajs4qtz5ggvv79y0styzej\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ulthpdsy8urseckn307vtgrln6l6p5tysmu37t\n", + "\treceiver: bostrom1rr2dqjr4gzwl35z7r34fn9t2ys7aa3lmza898e\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yzwzqjs9g4rwv3qguf2ml8gsj5x9qgywqxdkx6\n", + "\treceiver: bostrom1nnn4gky6eavt2ldhf2c9g7gk6ya0d6e3p5v57p\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jgetn5srmpjpj5q9n8gru3unhn48w2sv98qlka\n", + "\treceiver: bostrom1s8q6apcl9tr6285vh982x2enfw4zquf29ggvq6\n", "\tamount: 1boot\n", - "\treceiver: bostrom18jmx20hum6xj08crz9pnmuh83lyf60he03chha\n", + "\treceiver: bostrom1g2mu5s7r9j3g8lzgr4luzdnzzyghh7fyhwjtfc\n", "\tamount: 1boot\n", - "\treceiver: bostrom13y9ld8qkhvwas0cyn3p8pf5uutl4dr99lxafun\n", + "\treceiver: bostrom1et5y4vt0y6hnf5vffj5v0xl3k2z9gydd7tnxuh\n", "\tamount: 1boot\n", - "\treceiver: bostrom15ksh3m2zznc9xqvfnsctzkh6sxx7lp4jst9sfw\n", + "\treceiver: bostrom17y080jk3uu5hpx6rgx7z5lk6nd5qdpdn4mzrs3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ldwhwkchu3detzr0c8krz3a5x67wgmh5hpldh0\n", + "\treceiver: bostrom1tzltfjtmczagn8x2pe9q5m9ezzlkz2ep3dhxuz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1aj4n8fzd3t6zeev3gk9fw02sth0jslsqkly7dl\n", + "\treceiver: bostrom14gh7k5aptk3mjjaxaapwme4laqx7ggxjqfvn7j\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h58ae2yurf7ud5ks3p9v27qc823nm3agj3d7dh\n", + "\treceiver: bostrom1xqlz2270yglyjqnpdeusff5a29ekczg0xcdw63\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yzhymlt448me2qnacd6069gjay9hudflkexulu\n", + "\treceiver: bostrom1jethewm6e3elgwa76cgx79ar78mgy2dk5s6a7r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rv6nc70ute7l7ae6xrrfw3cfudxhkkclkjlzgm\n", + "\treceiver: bostrom1j59389n9kff0w4nps709qh92r7lsakjm9xck3u\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n7px7k4aeyv72kymw4h2r9hnet5f6rvv96w50p\n", + "\treceiver: bostrom13lkk338d5m3n8tkwer2r33cakaykrn7z8ryn2x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gg5p9r6gqyxx2cfaalytmt34ke8cs95k97u60y\n", + "\treceiver: bostrom19ms2y94azy86e4z0wcnrsx00635490tp6azzmh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1suh8jh3scj9q57ryelutzm2mk4x2ph2uarcej7\n", + "\treceiver: bostrom1qynu8e696ulvpen9fcttj8r6ht9s9gg4gl82hc\n", "\tamount: 1boot\n", - "\treceiver: bostrom15u3tsczecjfyk8c9xwalx976h3anvw6url4d0a\n", + "\treceiver: bostrom1ll0afd6zdchggfwa6lzt3mjfjq3qasrvgtrzq8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ph7zufdg9j69ys3sjv6y6wt57aaktn84pstdfg\n", + "\treceiver: bostrom1przlvk8clmcp4cc87uzc5xr94gyykelka5mnvg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k3dgc96l9frv60wc228exfph0647zpdrq8pnut\n", + "\treceiver: bostrom1em72tcnysqceypur446yd5628n9amjmntf25me\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fp4frdj8ghsxddx3l9v3vpfgut7ja8f67s4dmt\n", + "\treceiver: bostrom1c32vh8wgxhq59utlxq98ehcll8wrlwr6aajp5t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mfmzyy8a6kp2yp0d7h9xeq4swlmp599c8yw8gf\n", + "\treceiver: bostrom14xfewd3fza4uvu5u9z2d4qjvrwghlzp4sdgkz4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nwm3m9ralaudmtsum6utrfj8gz8z22ews9mme4\n", + "\treceiver: bostrom10xph29xxpa8ruud338mj3a8z2lfc8dxpqr7npg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u5zqu60sc66vwzv96f5v7cexz93ejj87wztl6r\n", + "\treceiver: bostrom1rlvh6mjfux4mpvd6g0hmw70yr6dvthu4y30a8j\n", "\tamount: 1boot\n", - "\treceiver: bostrom18u53mr0vp0pp674jdl3x6exdv3knn2pt20mnsu\n", + "\treceiver: bostrom14j67e030cfrv2kxah9znd6nt4ufpru22wj8ctf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1586nk9mpr5nzvnkehra8jsutvpen8pqau7f7re\n", + "\treceiver: bostrom1g8dx5jt0uwvauegwkslg9rmvq4sj7tcgr6jskg\n", "\tamount: 1boot\n", - "\treceiver: bostrom10wundhk9hrq46lj6dky3fkghnnr6jn4efkxjyx\n", + "\treceiver: bostrom1hs7zvnk52fdtzdukzrm0wva4f7grcc8wrhuh35\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hvzyvpfjdtwwzpqhu7mskct2utxqd4t7r7dqu8\n", + "\treceiver: bostrom149nln3f7dul23usefemz6cy4pme5074cncmew9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ghtn8pu4w6zp9upmj6p5c4epg2442ltgrtxysg\n", + "\treceiver: bostrom1gxkze6g28glmhedc8dvnjwp3z4z7p22h2seyty\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rtfpahnnv0n7q5ke46vsr9dkrrrymvmcqutty6\n", + "\treceiver: bostrom1petsfu5yley9txgp7mss34tgxrddh89q6wrzy7\n", "\tamount: 1boot\n", - "\treceiver: bostrom19lek9havtt8cgmmjfxh2kqmexy2tvul3msdtag\n", + "\treceiver: bostrom1w05avl5wx00ssttv0vqafehf6ms38zvn38c7mn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wvh7ay5xxtc4a0k9t5rk5z5svk0kdsh0zcrs8p\n", + "\treceiver: bostrom1tnx9uxsdwmhzkr045evm4lxpwvwgzn4mjf0ty8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a9ynmx23rk7wxvya2r5flrm7x3ygdmlecfjg4k\n", + "\treceiver: bostrom199fayskkn44y48hn6mcs0lw2zjvuns7njxu0xx\n", "\tamount: 1boot\n", - "\treceiver: bostrom19yd4vl3fyre0zuyxqe0s73ljs6j07l2f6ytw55\n", + "\treceiver: bostrom1tm5zxzrm69wu7y2zetqcedhnftulypkq4vd2wm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d7dlcx0rk8ta8u7dqh5ev4unkg9wvj5wwdhrrc\n", + "\treceiver: bostrom1daxqqcn3m7r69wjp6xu7zk8s8z3hlm795nez4a\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jqt0537ezrmyc86avjl4pnrtmtze25xj2smjgh\n", + "\treceiver: bostrom1g5r887a5pt8nx0ylhyxlcx3weae5dqgr84whzn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c6w6k242c3vnu52sqffungud6l4prlskv039pa\n", + "\treceiver: bostrom1vqgqafc2tlayvw2xmnsd7540sevtgr2kvpxedx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jngp0enkeq6my9j5qltkz7r2gad23uthhqmxeh\n", + "\treceiver: bostrom1ulkl6uhk6zjv7kslcge2a5gr4lr78znyycrkun\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kttv6q2swxqglzfle0f8dugu28evdramef7dpj\n", + "\treceiver: bostrom1nptkrzsak4u8c0gld8p8pg3xdlkhkpu4n7r08x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pdk7qqmrkrfq2fn2k7740fy9culyp874qlx4h6\n", + "\treceiver: bostrom1w6zrcfds5z0pcwugzwf83ytg95h6n4r34q86yl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jqz98wyv6zahnjnyq8yyvqnhsc54y8wt7ytjtm\n", + "\treceiver: bostrom1nt47a5w5at8pxmwzshzlpgmw2yxpae65rnyuf6\n", "\tamount: 1boot\n", - "\treceiver: bostrom16exzpafaghdhdxvz2hmkvv3clzu9my9jr38tv7\n", + "\treceiver: bostrom16sftmwfuv6nedvcessekhmyhunf66zp6dqfj07\n", "\tamount: 1boot\n", - "\treceiver: bostrom1afaeqe33dh6errx5mjkgjq0zxkd26j43nsze9p\n", + "\treceiver: bostrom1epft88z4kd5ru720rma6grgu8efgm7fhzj78g9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1aqfuzvmrr3aaacq5j85ckj3d8pcr5v6lynny5j\n", + "\treceiver: bostrom184xjz8vshq425ycck9nnq83nessnsax7gku2uu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q0rkaf9es0m6l4a706a5kzpla8ydmjamp08eg5\n", + "\treceiver: bostrom1ujtul80utrp6ns26wegxmh8d2g3yts2y94ve5y\n", "\tamount: 1boot\n", - "\treceiver: bostrom1de753cdsqrfzt6xaj9l49tq0hftg777fgjau3j\n", + "\treceiver: bostrom103rewrzpp4x5h376muqvnrf5hguazj9pr5lcz4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ttgrdeql2c4rfp438tdhxlsn0fctrkr5yj93jp\n", + "\treceiver: bostrom10088lgy06aqh2h069ta3lteya82sfa6a57q0vl\n", "\tamount: 1boot\n", - "\treceiver: bostrom10kqyvgu9nmavledpxz0dyl6xngffazacej435s\n", + "\treceiver: bostrom1sgdwuh454hj65wc3j2uvfea05uxcl0s52fcxqs\n", "\tamount: 1boot\n", - "\treceiver: bostrom106r5hg0vgl7r0qw9qwjy4xkhwmfq99tqv3g2fr\n", + "\treceiver: bostrom1z4qjwwll0lny909trmvfz39nlr33jg0uqgvlv2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hjtx9m6574knhuagvqq693rjrm9hekypmkx3zw\n", + "\treceiver: bostrom1zpw3s3u6gactryt5yt8fsu6ppqk9zdm5e4rs8w\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z55sx5azkudsu8s0u08k6euaq3s7x7fv28l9s0\n", + "\treceiver: bostrom1j7vq4k2t643usgezf0728u6e28hl8g5z74j4wg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r3hmj9vf4xpq8ax7vldgxty3qv288muy8pllm3\n", + "\treceiver: bostrom14gfr6hy46mpyzet0j4y2zeyjzr22ywf60mc5jl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s2arqqdg5a90gmns4t3ha43l5r2luza46g03ay\n", + "\treceiver: bostrom1tc2ww8z0xgtvyum66ee9qe5v40akgj0nhlgh0m\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w932zxzuzp52qvf7twffp9a0ntnve7yk97usup\n", + "\treceiver: bostrom1d9zjqqr8a4cdkl6p26hm26wf7al5lut8kg7wmu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lg3uyzlx3rj7ruhc3gu7yzmdya9z5azv5pl058\n", + "\treceiver: bostrom17hp3kkqsncad639xgwt97mznkx4q8e62j3lf2y\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wz8v33fxdjecn2y39x6nqkjrpnz349f46rea5e\n", + "\treceiver: bostrom1ryesa9tv27z6w7gl60k6d4n6e8gwsjfuv59pt5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lrn69tej5nh2x4s9r9tzjhjl2l499fa8785kvy\n", + "\treceiver: bostrom1mgwuuflsjzd22yexwsnxfuur45tj6az8qu47nz\n", "\tamount: 1boot\n", - "\treceiver: bostrom152pr0x9f9wfp3usguulm4n0gerekr95rpy7fq4\n", + "\treceiver: bostrom1rayd6yd48vx0ud2x7flv2km6sahhjezv8hwaaj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cvq3r8lrws9msqr5hr3rn8m43xvp2hdygf7d0n\n", + "\treceiver: bostrom15c6vlmhp0n4egxfc6gj64j9vs9hg4haddng6hl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vfqx7zxcl2s6tpa0sc9xl52hfdknhkek0zrd8u\n", + "\treceiver: bostrom1ddrqqwk882pl25qeehan4z955jq46xy8udxxul\n", "\tamount: 1boot\n", - "\treceiver: bostrom1l6udntq36grf20uygj3pxajvp7yusej5r69ylj\n", + "\treceiver: bostrom1e048nd27ukzr67pj0tu2jluj324mw9cpn5jn4a\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zk6shgm92yk8yexjeh48qclk4redknc8fy4azq\n", + "\treceiver: bostrom1ftd2kmryv025lxjy849d9jlqmnf2ecx6mhpzu2\n", "\tamount: 1boot\n", - "\treceiver: bostrom13nm6e2ln9p38jpjxrj3d8q2ch3urflwspcjezy\n", + "\treceiver: bostrom1fcm3ane7jzchnm3em85utfapk6kxr46rl77xms\n", "\tamount: 1boot\n", - "\treceiver: bostrom19ygcygl49az0ru68lhfpg345j25zrapnxj3hg2\n", + "\treceiver: bostrom1vpywa0mwuc956g9kz2slkul07jky0w347saevk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fa4upw7gf6ul8avpfhfvv0jg5xktagrgq8gzen\n", + "\treceiver: bostrom126sqzdjwrs5vdpy4rt8u6qp6pzp78d53d5jku9\n", "\tamount: 1boot\n", - "\treceiver: bostrom19508ffym49xtcwsz6u2ldj6xd7xdnaknayc4fu\n", + "\treceiver: bostrom1sst7l6c07l9lzaa62h3f28jyt4gu803xv2nw4c\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nhmfha4xwszukn2u7c6cd87fnauqtsa09sc8cg\n", + "\treceiver: bostrom1v7zngyq7h4vy7q0e46sp0n5v7ac3cufx9tk0yf\n", "\tamount: 1boot\n", - "\treceiver: bostrom129w2sh44tsw6sxk5d0h49hc3m99pzftxej9afg\n", + "\treceiver: bostrom184juz6spsyazh5qmtnf8hm6a3w93wfgqzaml0k\n", "\tamount: 1boot\n", - "\treceiver: bostrom16302hu2dg2xjy5xa5yjxp8j09xzztxh62xeehq\n", + "\treceiver: bostrom1k2y5wxn3y83g95xgtkfgc9h5vchv0rmpha5tlz\n", "\tamount: 1boot\n", - "\treceiver: bostrom10y9jczg354mwvgcgvjxr36rzykr3vnpshhrakt\n", + "\treceiver: bostrom1w4xfvyleucjy96s6glzjc7x8qw7zj826hjtpq0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zpz8ey8v68xlfy56h27ea3r2cgy3c4gyuxpzvm\n", + "\treceiver: bostrom17drstn9vgea8kg6lapz0mne7e9hwqpm5xnk9xg\n", "\tamount: 1boot\n", - "\treceiver: bostrom10gtkzrzgwsdgcwz85gs4jggqtq698g6mapvlrf\n", + "\treceiver: bostrom1eq7s2ke9tyveq6hlsd92q4n7uet5gekffjhrrv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yzgurzc5cvpa4dxmxxtp7wu32m4rurp8hsn9aq\n", + "\treceiver: bostrom1v78wjqz9c0p8k56xmrw3x2yx84m4s08khyjc99\n", "\tamount: 1boot\n", - "\treceiver: bostrom1csea06lmljug5v8przsujr0y069ap05a9ezfap\n", + "\treceiver: bostrom16fel77jl9jut0r0zwuj6pr59z23aaja5qdzpnl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1827ttnrfdnalsnpqvwlqgkvrf00xya2g9tx5de\n", + "\treceiver: bostrom1qhr9hqmufefcy88659d4w93wj0w44uk9ncvc2l\n", "\tamount: 1boot\n", - "\treceiver: bostrom19m3fxeuve3rafj8cl2cr838wmauvknjrlnsg6e\n", + "\treceiver: bostrom14wscpjhcu259qnayu4j2vv4hmjfrvynz3xqcmj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x5pnz7sjm7leg2mcm0fu7w6psm9g8ng0cnf60w\n", + "\treceiver: bostrom1m6u27qyeur9hz2j07gypsu78hdet3vj07amhxt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uezwwg77n6pm2vfwac9qsxurrfm489u6e7qgaa\n", + "\treceiver: bostrom1uv4yls3802sctu8l4yayh5wntr9gat6zgkyvvc\n", "\tamount: 1boot\n", - "\treceiver: bostrom180dtwgd4tkvgda4jdg0qsg3yre4zq992j0e3qz\n", + "\treceiver: bostrom12lrcza4k7ejddw4y5ntxr97gwgz8w45eu4rst9\n", "\tamount: 1boot\n", - "\treceiver: bostrom18juvm0akzgj0dt2v0fnnv6u88ye4h5wm889gyf\n", + "\treceiver: bostrom1ak6azsz696d7jyl2akyqn84w7chckt50te2wvm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w3z6wqu55gmtmvpaqnp53ymvjvyezaqlazwgug\n", + "\treceiver: bostrom10syyl7j6dw95q9y0syujgr282ftsxfd5cn3mml\n", "\tamount: 1boot\n", - "\treceiver: bostrom15hu8fjcef2tk4ytw0cu0va2kgmam26rh4wh8p6\n", + "\treceiver: bostrom1ygmzuh9lnjf8lpghna0c8zye2wla8z4plnntjz\n", "\tamount: 1boot\n", - "\treceiver: bostrom18d5fvvuqz8et85lwguufwjykalnxyef5r4pm5l\n", + "\treceiver: bostrom1vdekduddfw59t9gafeaa8shl90zy3gjv6vsz7x\n", "\tamount: 1boot\n", - "\treceiver: bostrom13hm8uqysw7j6yq9cqlx0zea0yhmcucd0496sn7\n", + "\treceiver: bostrom1p4f9trghseul2wvmuu98j9y2htwk9cpxu6ddmz\n", "\tamount: 1boot\n", - "\treceiver: bostrom14kpejxfh4phfhm5tq6m6ezktfa2w2ukq9trmra\n", + "\treceiver: bostrom1asv4hz84gwp3vdjfemzy5v8eyqe7cqkzx50m9z\n", "\tamount: 1boot\n", - "\treceiver: bostrom16ax8kxhjnjtmem9rty7lec5xjvu6u384ne7uze\n", + "\treceiver: bostrom1vh3zxzpd3guwql8guzpdlwg2w0ka9s64enywk9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cjv5epft46zc2q6tvxumpndstem9w5cyagy5eq\n", + "\treceiver: bostrom1xwlsur4rnc24yqkdm237qezj4cp0039xmk5dh9\n", "\tamount: 1boot\n", - "\treceiver: bostrom18ja48grh4r8ugysyuqvl04edyyrtml0n5vwqs6\n", + "\treceiver: bostrom14p4t08rmddfrqjgq7n2aj799sp8sq02qyjt2td\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k2d5j6jttke7pzjy3aqnl909f96lke8p6uqt0q\n", + "\treceiver: bostrom1t5kjnt70d4erhrrfntljcsc5qt8493cw9da4pm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ngnxthqerlvjeqg7ynl7mxqgl6y8a69348xgmw\n", + "\treceiver: bostrom1yutd5aj8ht0ghu403qx73zlmxwle04zgc9tpaj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nh6guse54687tvwn4drgu0n7avse6hlefq8naq\n", + "\treceiver: bostrom1n7asgsh0tzsue26ectwrmy0egje3q6h2m5k875\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gkj3p2yuwlh9gj0zc3ussp30faxvz5vwxnlq9u\n", + "\treceiver: bostrom1y6kfeey83ru6k44mwkf9y8ezr05kyrv3v4uduu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gld5tp060m2mcfd8zp78t626558ekp7hrprcuw\n", + "\treceiver: bostrom1jt7rpmgmmk6jnwpx9fnjr4e0h3995rsjqrmz83\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ch3m28ln5kch7afevydqyl2zdqexv5xvjrafcq\n", + "\treceiver: bostrom1me9hrukz9vs52jsqutnk9yllefsu6enhprs28d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mccnzyn9wapyl0t7mqt7npuq7khvqtpl728y9s\n", + "\treceiver: bostrom1n4sk0pcdksvz7p80nvyzucrfew23nm8xs9rdhw\n", "\tamount: 1boot\n", - "\treceiver: bostrom133d3hmrly7a0dvx2j5u5gv5kwkcw4d76ghrwgp\n", + "\treceiver: bostrom1ex4rfhkx3a0q0086h60hh85nq6rhpkur7ksvpg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ctgfyenf9pfy2zz7hvkjwzpgfyh088qwmyqhf5\n", + "\treceiver: bostrom1jxjz0525sfdl569zrf7ehvflmvdcqe902yks7l\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cdf3875zusnwu95dsu09a9ahez56g6xcz625d9\n", + "\treceiver: bostrom10cfaxm9jnvr2xq3qf79d3k2lz0jwatn5ga3x6j\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rk7e4d4ggk8hz55k2fdslsmxac8lm6enx4g2dk\n", + "\treceiver: bostrom1yvr9hhpm9pe8hdujamzk9qcs70hg3autf0ndjy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s8kqj6074x54hu6dtwmw8rhnqpqncjy26r07ma\n", + "\treceiver: bostrom1ar00awcunha6r043575gr4xeexcp4f5ktewzre\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ssqz5c5y0wyh03cd9u5e3cxac3m55dqva7vrh2\n", + "\treceiver: bostrom1plrnf694p80ukw2fw2ptdph9hcka9k923vf4q2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hhqylnfvw9j39a9xsmq2yexy7ps9wd875cd6al\n", + "\treceiver: bostrom1jf75n5znd7m7fn8y59puknqcu6hfervmjcx0s7\n", "\tamount: 1boot\n", - "\treceiver: bostrom184zw5t6yh2qf8g7sj5nn58wun79newd6rhnrjl\n", + "\treceiver: bostrom1g8aky80rlmhf579vf7yn2wdwjn40ny4q5amqnx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hd2kndfelvkav5gr8ftuncs9hu2dztwd7245c9\n", + "\treceiver: bostrom1ax0sus9vpp0tshejpntezywnhuw4uvcyujfspa\n", "\tamount: 1boot\n", - "\treceiver: bostrom100x0v0mqlmc7pzhd5028jqsdtuc2s7x6tjq79d\n", + "\treceiver: bostrom1pa5p2yqpr0h7m7hl5td4e0fteugvr2z8ptpztm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n7j5qp9yg52u2wpq2cjcfu2lkmjlw5g90asmvl\n", + "\treceiver: bostrom13sgkdnrwk7arajhlr2kzspcp59k7ceg7arqwnn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fmprp74gpyusky9xhwqxqexyq985w5z3uh9zms\n", + "\treceiver: bostrom122j790ml8nuc5h2zlsfj9repee3ajc9fwz7dct\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s23g7yplcz55p92g8xd4hce4qas3n2dcxdpsu3\n", + "\treceiver: bostrom1rq652x6ud7awa5cm9ns8fs6w5sm8ttzsap2l6l\n", "\tamount: 1boot\n", - "\treceiver: bostrom19j3g8wrpkgwur24ftwrknesmanapjax9we7qn7\n", + "\treceiver: bostrom179jsu5rjl9cqcawxzxn7s6xt4styh0h5jq5v0d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1j3lquel2264yrle6vzkjljmqv2yv890j4zn8w2\n", + "\treceiver: bostrom16q4kku243lvff6j2ej5t64hqja3lvd9396e6ap\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ks4vj2yvx8vetxs69g4hpu0mhg8y3wfjun3cx7\n", + "\treceiver: bostrom1enthteulhey8mvt8znnpd4h4z94v2j8xutrr3a\n", "\tamount: 1boot\n", - "\treceiver: bostrom15amxqxhxdydqxjqgytlwwvj3t2fsu5gd9xwjwk\n", + "\treceiver: bostrom17nwths45z6ss35qjgy7xawcwdhcgxsvgcq5n6k\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gnu25zshmzk5k0mg98fkduvva9xzkzjg4wvn7l\n", + "\treceiver: bostrom1rhrx6wzps4ma5q5v6gadwdn2vexq5gyjxf9fvr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z0a86fn3sx2keeay0yrp4pa9hj44yaunn0f6vq\n", + "\treceiver: bostrom1d5pgxwghy5juxsgv0refx0t2dp9wq96xafn0sm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q2ax0058jktj4fhaux953cch86xy6gc7jegv2n\n", + "\treceiver: bostrom1c2xytkp3nj0yp049knmnj65c6zuur3au2kya4g\n", "\tamount: 1boot\n", - "\treceiver: bostrom14eluumf8clc9eu9jx790zhr96tvtv0f4d640jf\n", + "\treceiver: bostrom1dskcxlxwdw3wq7j0mvgpz2h7k6h468yq93hr9r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uaathhmtr5g3euk9d0zu26jwuka9nvqc7kaw20\n", + "\treceiver: bostrom1r5uuka7wk5m5nja3cq5ers56la5gepnfhjcn6g\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uml7z9lyulujgthn76hw6xr8mfynlmm2qzht8v\n", + "\treceiver: bostrom1200g56thtljw3n4rvh0z50nd96h356cmsa0js9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rq358dmvfjd49zq9rtg07su2tzpr0g8wd06rjx\n", + "\treceiver: bostrom1urjg5e6vgs8y7jhtualkm2fj0kx4206nh52hrg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jux0l38zhkarhj3zu27ulahm4rjrhxng9q0uf7\n", + "\treceiver: bostrom1vzm9tjfa96js7h3xqt5xqw8kyhpuduzpvnvt24\n", "\tamount: 1boot\n", - "\treceiver: bostrom1p5gnl3guvs8pm6yyeaav87xezg5xlnpg832484\n", + "\treceiver: bostrom19thy6d0fsdj3pfc5xwjk37zuahestag6qhqgkt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a9yxrfqvwpws3jnsjs0ylg0l8qhhxupelj8vzm\n", + "\treceiver: bostrom13670acutw64ms5dyhgz6jtwm9s24sc9jtu37va\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wqjjchvmupxcmqgq98yqu3s66ndhk3fkt29cm5\n", + "\treceiver: bostrom1xfr4gy9hltw5k0l7txsagujze3mupndpjy45sq\n", "\tamount: 1boot\n", - "\treceiver: bostrom10nz2c8mcra3zhk28gvawv3v30h4wzyfekjmqwt\n", + "\treceiver: bostrom1tdmhjrtwe72pcrvu9998nkda9kl5lzud6r86y6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qa9nc8wde7glu736ea65upz7lnxwpqaq73nxqm\n", + "\treceiver: bostrom1jgjtnkplk6pkemx7cv27ysd7cvhjzqutgum0vz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q6zq3hx8djgxuv8lkgy2l8e2jkwep96upt2pgd\n", + "\treceiver: bostrom1xgyhs4wake4w6uufwwek99g3dqnjd6fnd3cchn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u508yx46lyulnawc0d3839ur8tsnsaqvt7l3c8\n", + "\treceiver: bostrom1cp2ck5u758xjxs8j80mpxp3rteuvxjklur5tg7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eewuy8malwuylz5rn7cclfpsce32hpaz7r7rsn\n", + "\treceiver: bostrom1kuvtlrf4awdvf0yy8hs7hwjtdg9peyxj66nt38\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wc8hk5pzf4r7ndvwldnkedewn0jj6xmqw2txk2\n", + "\treceiver: bostrom1jm8j625qtz374el380s8p8nl0f3yew0jksqqvg\n", "\tamount: 1boot\n", - "\treceiver: bostrom147squjzjk9d3sxyrkvl7txa07q56fahn494te7\n", + "\treceiver: bostrom1vuep7lev6cdmj39ey0sxm929jp2pqsyg2k47cg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k4fa0h2qdwstpjhx6yfdfds4etmvtyu0hpf24a\n", + "\treceiver: bostrom1pgwkcsa0u27l2sgxx9h05wv6tzkwkucr0flzjn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1udvw8ygzg6s7xn2ne0xf54txhv773te8047whs\n", + "\treceiver: bostrom1n0jy5ekhm3j2az428m3hswfevwusl8h39hdaem\n", "\tamount: 1boot\n", - "\treceiver: bostrom1djy2l5uny3qfs40tym2zq28lwku56vdrglz9j0\n", + "\treceiver: bostrom1vxkcnm79xrt43u5vt64yrs78zrh8fdl0v889kx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yx2p9afwr9yw5uq3dt2y4d73sz9chre657twqd\n", + "\treceiver: bostrom15x69fvvfxhjdw2ad0rxzeanypetu6qzr78fug2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gw3xswcqcsyzlahtgp8tms9ynhx8mp0jtxg47c\n", + "\treceiver: bostrom13uzzwuk8fjpd3yt4ssnaevtvys5nx9l69gxs0z\n", "\tamount: 1boot\n", - "\treceiver: bostrom12rp4qdvhqk8k0gvvsyqzdzvwpcdku2pjcwahg8\n", + "\treceiver: bostrom13xwzhhq6m52z0ysk9lvyvgtr7d23e83hdshumv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1306923aatalvyl2ryngvm43ut3c0h7qkwkp0d7\n", + "\treceiver: bostrom1mnlqa632zpk5j86qcmtpwzqv6j6pfmgezagz4k\n", "\tamount: 1boot\n", - "\treceiver: bostrom1usfnlq7xeyk3f6mdrslkcgurddlf2uy3g978dl\n", + "\treceiver: bostrom1s7jgrqnvdmxcww43unnwkxy0faz4yaghkxmx8z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pns5ln7sj6qx99540nl6ty335p4xssqn2hx4y3\n", + "\treceiver: bostrom1apltlf8xqdtxx5jenjg7gzh33q8lajw0uakf7r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z50y7pw6mwkp74fvujne92cnkkwpd0nv2hgw27\n", + "\treceiver: bostrom10ltmfduusnps7utyy98jm5mwq5dgystjset5aa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xfxz9p6nwz853367j82lz5dkveht4mqdm8dd3q\n", + "\treceiver: bostrom1e8h6450m7fy643ykjadctv7htx5m8mmmn77vy7\n", "\tamount: 1boot\n", - "\treceiver: bostrom150mu8jtt8cmzgekrv8yy9axpp6gk563un4q759\n", + "\treceiver: bostrom1pa3eaj0zqrkmqw23v239upyq2w69u5sccztt7r\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fn58rdscdmtfprredcnuqupq5qqllj250jde79\n", + "\treceiver: bostrom1ezgjfhn44amsaxt70cxr3p0v9s3nspfuwtpf45\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c7f7c37rmgv8qlxpx58quc7t3tgj849435vjz2\n", + "\treceiver: bostrom1mxmken69ne82e8uhkmr4sfnar5km4knhvvfxe7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w4ulcj6nfw8q0wkdyynhy3wxpasxsha7plhdlv\n", + "\treceiver: bostrom1yqnd7d2kysaxwemxy5e5usl2hs842estjfrxn9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xufh63t6uwpmjax5r28jc5ng53x7vwjjdne65s\n", + "\treceiver: bostrom17cs0kucxvh5ag5jq0gqum47a63lvmq22shxaah\n", "\tamount: 1boot\n", - "\treceiver: bostrom1akz5990rrs23g54fxlv9wgpeq85sye7uvqd7g4\n", + "\treceiver: bostrom15rjd46x4s459v8a56w2cn4yh8325n53m82xdj8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1f5qmhuae9ufqdclsmc2qfm87x0mnjg9rmwhnek\n", + "\treceiver: bostrom1w24ux688apsuvmn5jv9tr86fuhtv36xv3960dp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wmyx62jsn4fju557k9utj5l9p6jgmj9ne0frp7\n", + "\treceiver: bostrom1j9dr3v423q7jypqw65w5ngpler6a8yrd6qy996\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x5zexspgdjuamz4v4a2s5qnvju8jn7u5k0ynlz\n", + "\treceiver: bostrom1nmulwukl393j7paknmgvuryg07rdx3m24wp23m\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s7sdqaujt7lf78xp0hxyxt4mtvp5yer2q330nm\n", + "\treceiver: bostrom1j306trvzjjtews0emn2qq6aw8caxwtzfwttw03\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dwdckxqr4t6ccuz5hv5d5wt43gg7wx2td50q8x\n", + "\treceiver: bostrom1snawqfy5ywfm0vgtsmqfvnsjlg7dqtlxgfjrtn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u2axhhfh9zt09m38d2daapau3vg22lejgdfk3v\n", + "\treceiver: bostrom1ja0jzdwrdq2pmt8j4cd8x3wu3kudaycajukgy4\n", "\tamount: 1boot\n", - "\treceiver: bostrom130y7ek0wfs2efyneptyte0ntjsn2fyxym8thm8\n", + "\treceiver: bostrom13pjrva4pc59dpvrvr2kdhdur3dxwn9ue5shqtm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d3daas0kc8chey5mjvr3gzuegnw6nnghmgpwpp\n", + "\treceiver: bostrom1tlzekltgjpdmes8var55s0g9famwg2kgp02xgj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qn6h3p87rkewktylguc3hlw3wjupu0tzl9nwcp\n", + "\treceiver: bostrom1r5hrrzqp5zt2t8j62a5ny3wz4fupgf9gfqeesc\n", "\tamount: 1boot\n", - "\treceiver: bostrom15dgr3zs2cl6fvdq57n6kqzrcmcca7z6fvnechx\n", + "\treceiver: bostrom19urdgfrr7g6h2zt2qarlaqhrkwgf7vkll82v7k\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k8yr06ve2v9k7jchjjxhhrvay50l8e2dzhyywc\n", + "\treceiver: bostrom1vktsw6aptxg8vg8ggfhf26l2csnyg9r9nlyke7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1l5n205g9dcggdc6ntlyajuve2nghwh8pecr4v4\n", + "\treceiver: bostrom1qs3dafgnnxqjy5da88l95rjnp2n27h9m0deaas\n", "\tamount: 1boot\n", - "\treceiver: bostrom12mx2secz6fdwz9c6d3hul6ckafgepuqx0tvyj3\n", + "\treceiver: bostrom10l2vfpsuruku7849d97970q8emds57pnah2xgu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d36chghzzqnwhe6ye7ewnj4hxp3hn57pjuqzjn\n", + "\treceiver: bostrom1zlywzyzt84490czkz6wchneu2wn4ckgzla8myc\n", "\tamount: 1boot\n", - "\treceiver: bostrom10vaz23ujjv4q39pf4snehne2eemjsuttm3ggv7\n", + "\treceiver: bostrom1kr6zx7lgyf33wk4ka7s0fs6yk69py83t38pndj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uhy3ju5mvyszs65nzmr4lych6a2r7ymn0py4m7\n", + "\treceiver: bostrom1vgwa3mxzrcsxhp0jn9j2j5fvq3lmru8n3x46lt\n", "\tamount: 1boot\n", - "\treceiver: bostrom17m9ghgm8m9djc279dwl945r5lynwjsyy752y4s\n", + "\treceiver: bostrom1pqpzd3tj8ut690lnwt8pupgp2ahlcn6vtl3pam\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ax0l3dxpgp0sgq0z8t0qpddparf8tkqp7mhf5m\n", + "\treceiver: bostrom17njkkr2rdwyds3lveq40fw7fp8yrrapu4czcth\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eta8yfu8ugqw0psre00xwkn44fxkxd0hpfr0fe\n", + "\treceiver: bostrom1xdnma52m5rv028efghsd00dugp9d6zhvty7wwf\n", "\tamount: 1boot\n", - "\treceiver: bostrom18ya38u8l3pfnrve246wms90959vzr8scsc2qwf\n", + "\treceiver: bostrom1wh2geykadw9le2xd6kvpe9srrj6tj9jvtzlrve\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z8nccpnz7kxaejsa2ur8qkzgt2rj2zkqa7m500\n", + "\treceiver: bostrom1ml5lpjrg0x5x0xvhug4fmfyy9dk257c4mck9yd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ng5hfk8ekr4gec6ysq94hn0jq98zfzfxy0hmj4\n", + "\treceiver: bostrom1wpguy6s4ef7g6yd0dlyzlaett98eq2yt7awfyw\n", "\tamount: 1boot\n", - "\treceiver: bostrom10ul4hj8ruxsllmtacuvx0g7ex0z3lm4asc3wjp\n", + "\treceiver: bostrom1u8qhdj3k7tjn7zscmvzwkq8rlncs7s4ccwj2ml\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ynsv60j2ha98xx90czjsq5t3ktvwx0ryxsqs58\n", + "\treceiver: bostrom1zj7e0f3hmzpwjwjzu0mwqqt2srdltwxq2zva2x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mjnp2lmaamjfeex76yfdj0g47mfxsnxw6v9fh2\n", + "\treceiver: bostrom12frw9dhzc8ryxl2rqdxg0erl926rge7thm7mrw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wq0r2hv3vuwfmg7ztaudg6fadsdvfuxpmzmuum\n", + "\treceiver: bostrom1n9fzyzfplkzm4jz9fpwngpjgn5ddxate4y33fv\n", "\tamount: 1boot\n", - "\treceiver: bostrom19jrrjh7vfvcjsejaf2a7nz5ma74uyszzl5nw7y\n", + "\treceiver: bostrom1zc8snhscjctnvjymggatqxs5eke9pn4y0ljper\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c2ecxdkwd0aq7g6ae079g6mqayjnmv0hk3ae4n\n", + "\treceiver: bostrom1l0d0cnykn39m47x7tfvqlxzqylrkmc4lm8ut49\n", "\tamount: 1boot\n", - "\treceiver: bostrom17f03k06ljf2z6t30kxqrjwuvqlj9lm77zgn47t\n", + "\treceiver: bostrom1qnawjghksz0mrpx299fy2e3f97zngd4p5zwlvn\n", "\tamount: 1boot\n", - "\treceiver: bostrom105zq3ak0nxaj28fxlrym8j2dxv9zk2utu5aj80\n", + "\treceiver: bostrom1704c3ekxzqt42g3za6erga7jz86g806e473rmt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a42umar69mpk5ywhmq26wm4qfhmkw8dh4rejwg\n", + "\treceiver: bostrom1m7y9wnmt8d4sh5vtpukyf70k0vpvqxlfx6aaym\n", "\tamount: 1boot\n", - "\treceiver: bostrom13af0qehfnh3q6hls77jq9qdkhjgez2ajdyapdz\n", + "\treceiver: bostrom1x3mp6qxh4mzy9zjd8mza04j7qkl7ntcjg0wzma\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cw3tw7xdglnyk2kmm86vvqpqla28j8xp9pap3y\n", + "\treceiver: bostrom1xeg7glznjkdykuex6gdvkmndzqegsrqqy6agwp\n", "\tamount: 1boot\n", - "\treceiver: bostrom172ntp6a98f8rntwqaady7240uk49tf7uer8r4h\n", + "\treceiver: bostrom1vvxfst5tpjc2pnup8pnhzshtkju25kd8jwafa6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1glyuupx0fudpjq5d26v600tw26gez5awltkmty\n", + "\treceiver: bostrom1qwcksk6lylzrzc6gq3mvn4f4w53c2fkqqdd06v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u06dqvyktywqv03g243gs9gdqf4vmt5lnvth5a\n", + "\treceiver: bostrom1l22c4m0eyrrzdhhrae0ksmj9avmye9hnfdlrv7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hcx8f644wn5dsx8qksy4zeanma5r53vckapjlh\n", + "\treceiver: bostrom1yl6fdg66ht48vtknp808k02w0y0hk4p4dwx23k\n", "\tamount: 1boot\n", - "\treceiver: bostrom195m54v3x7yp90q3r38qmuf9d6v5dkhhjutd9hj\n", + "\treceiver: bostrom14vhz2c3p7alchp8ur6vne6qlq8spsegcary4le\n", "\tamount: 1boot\n", - "\treceiver: bostrom1252q2pda6nw3e0yw07muh8snqxa9nw094g7gwf\n", + "\treceiver: bostrom13c7lpg4x9ay9cyfte9ypntauzan7evpl3nntqh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1e95d5rlstm6knyva9f5knyycarhlmfy8jmvy2f\n", + "\treceiver: bostrom1ehm3xxwkhq8ckgdfy9pz7pd4wp760nrhkwd0rw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rgxy79v8dw9sywxtu4zr04mhxxg72h6vgshngg\n", + "\treceiver: bostrom1r9d666ktmuetcg8l4phh6pj2vk2a9n4q5rj9zd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mfwa5an7aekyr0qktpq85q7lamdu792lx4206f\n", + "\treceiver: bostrom1nxqc60spf4c9lafc6a2aex95rd2sn2wqdgwvn3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nslz4gc8z4gznhdw0aajzehjv3j02rz7j85hlf\n", + "\treceiver: bostrom1lf7649u2syxwmxtx3wz6tznpggmcs9hda84srj\n", "\tamount: 1boot\n", - "\treceiver: bostrom16elkp7re55zdp9ulv7etqemp648vl8vhsmcjj6\n", + "\treceiver: bostrom1ef8w2fk7sgpf2y7szuks55fucr04wnstlf8har\n", "\tamount: 1boot\n", - "\treceiver: bostrom14hv98p0dlfz86282huqhjhxdv2keacn7wdq4sd\n", + "\treceiver: bostrom1xncdv47488k2aap7nlvx8fhlxxq2zm0c6cpl03\n", "\tamount: 1boot\n", - "\treceiver: bostrom15g86ngw0ue7y7r9kx8g6mylehcna3kx0suwvtj\n", + "\treceiver: bostrom1q2tuf5qn4fdaq09e0ejsacwv2r0etzxf0gk9jf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nu35zgs57sgt74cuj72yr04an299ytutyvddum\n", + "\treceiver: bostrom17vqcu60dhuzhj937m8zhxf0y276dzvtrwxwx4m\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ljzypf35u983tcgzeldxyjy82zgwxcjm5p65vx\n", + "\treceiver: bostrom1wgmaphzjkms2vp6mdxagx8pcr8yh4cdmp59q9d\n", "\tamount: 1boot\n", - "\treceiver: bostrom19afdrc6f6an9zu632tehwnq4uta96zkkyt4d4t\n", + "\treceiver: bostrom1tu4lmk954k68ygpa8r8k7q04yusxn0htv7ny0m\n", "\tamount: 1boot\n", - "\treceiver: bostrom12axvgl38dmpvx6t5gdxas3kcnp7eqsn8q5v0he\n", + "\treceiver: bostrom1qhkpjjup7v839tmhs4fvpq5usll7dlh5x064n8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hgu2sftchr7pz76xdr3eavlz8clqtl4dmrl62k\n", + "\treceiver: bostrom1ufy0kgt4hun0fww8wn6grg47cy0jev40tsaru7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1t7jl3t0chamgyv3c3qgfkgu26358ve6kva65gy\n", + "\treceiver: bostrom1k4y0asr4y7um22nkzdmwt00f77al8dm5du3lc4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wa3920az2j4p0d3gqlznnft9akl3chw02rv2mp\n", + "\treceiver: bostrom1484h6x6k9jndeuudcf9z4nphupzzs4nxeljngf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1txa8llmcx57hsfuxy08ej7aay8pk0tm600q2ld\n", + "\treceiver: bostrom1x67ahx6zwvvvxlj4mh364s9gwjmgfcyazsljst\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a4hk6lgw3wtdkaatycy73fd7nw7s5c77narjdf\n", + "\treceiver: bostrom1qpz4l5pw667yjfupxjurq2ln5sqg2cz6f9l6eh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qfe96027kc2tnuvwspuwdx4p3sxcwzseu5atzh\n", + "\treceiver: bostrom1wdcs34dkrf8tw2xzw2v43e6rmuhjxermht8ajw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1f385nxfugtvljnnsmc8d7zufpld790ajnvuaqf\n", + "\treceiver: bostrom127wff4g9n0ll8k2gu96le6fltu7hqna2r9hy2m\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eseer0q2df2dte2erq7vfun5tt4xjtlkrmn2hj\n", + "\treceiver: bostrom1nvfhpudwujrc2zk7zy4jn7xazzu7pe7wy7fwnn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1seqg6rg3dh5wqj3u8364svnehm5j6xt5ml0wfj\n", + "\treceiver: bostrom1xch6wlnc5l7ywqh7l4spj4lcrf3hywazk7errz\n", "\tamount: 1boot\n", - "\treceiver: bostrom17sp99qljgcc5sapv02krdnwgzmqclru45lxza0\n", + "\treceiver: bostrom1uqmdaplmycrmurdspgvrxtndxp85l6pllf39hq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jr3l45lkqq0x0jpr74y6mhd6md8zpaaqafjgpv\n", + "\treceiver: bostrom1k2n0mzzu5y09yg9khfflqae8duu6csn9swl6wr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ax2dgjukvua8wyzrrctgdyrktx90f9daqznw0r\n", + "\treceiver: bostrom16640w60s7sgyec2qr666yhynhz4u03fwfpgccw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m77qd7cwp995pku2ld9x7cuj94mx5zp9kf2666\n", + "\treceiver: bostrom162xc3ekelegllz8gy8gtnpduefdzpw9sklzf33\n", "\tamount: 1boot\n", - "\treceiver: bostrom15ecleart6k66h7aul7uchgwm8pttxceurw8z3m\n", + "\treceiver: bostrom1zy8uxjaf50ljc909e9wegymuhc86yml328h5ec\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hvxm8h705wfuxn0gefgewzrpq8mfwdxyek5mtm\n", + "\treceiver: bostrom1h6y7tqmjkvlawkyqh6z8rqt677u4ffu2hr3rya\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xvrkhggvdeewakrs4tmsh50yr67t9sa0nxy7kt\n", + "\treceiver: bostrom17zv580da83k648rdnv3tgpxangswvxex2f6n3f\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tvukjxlc8urj83fqa00vh7ac37fc43yf4ac8n2\n", + "\treceiver: bostrom1cf4j4288hrmvrcxw60au4jamra50ay4l5v6kqy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nwmskjvvnxphz6nljjh9e2e35f2e7p7rxmw9zy\n", + "\treceiver: bostrom1cvfpx2ck6qfer53ah8eu4kpw5whv92gmtgsjqh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zxfcu9vu5a3fgy25zpuqrus9tqzfazqd76tuer\n", + "\treceiver: bostrom13nuaemd93px73gvqm9wka80scp8y2vtavsdj9a\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hnrulvwr609gxxgtv6e7xa2u6kcgga826al9da\n", + "\treceiver: bostrom1sxlsue6ekaakjjcx8n8hsmdpr7lj2q5pa70rjz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dsqe8988yssvxl3r78xs5ptevc3wgwmugr8vsl\n", + "\treceiver: bostrom14rrfmkmxtcfyjwr7q25kun8mx4r3apkvq5t5p8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uhcxuvv7dcrwarh6szy8e94vsmxvnfamulujkv\n", + "\treceiver: bostrom1c0tqcs30z0htkafxflh86aty4yvrjy7dctnx4k\n", "\tamount: 1boot\n", - "\treceiver: bostrom12c96k3np8uy8zjy3w78fzfksvs3pp38erjqmx7\n", + "\treceiver: bostrom1zc4gz32n74cjkc5c6upxe7hup69vx7hv8e5gtt\n", "\tamount: 1boot\n", - "\treceiver: bostrom194vkw8h4azautk5q5vvajl76pvpezmw3qz4ftq\n", + "\treceiver: bostrom157ayvflpqzc83gacv055vepm50uw0urll085an\n", "\tamount: 1boot\n", - "\treceiver: bostrom1er2ysyxkcklq0wg3klf0myp0fvq7z6yulgqqpg\n", + "\treceiver: bostrom1njh7ywsffzflfd79hwry5856e8h9crd0ph288r\n", "\tamount: 1boot\n", - "\treceiver: bostrom158p4llggzkhya5c9uane4vexqfj0h8rtknvpuw\n", + "\treceiver: bostrom12rv2dag2nxrfeyqr9skvp3gvmeda6t53k37cj2\n", "\tamount: 1boot\n", - "\treceiver: bostrom18r2de233t53wmyjwmu9vkjtn5mh0qzdd98zfe6\n", + "\treceiver: bostrom14s63706jgqh0stteajpc2ama0r8nypnp6ennhe\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sl6geynchv868junjepu3mjew2a3lc5sceyzrn\n", + "\treceiver: bostrom1lh7grjr07rzyyjtaqcl8ywnqdgua5h0tf5rygh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wz5ca69yyaykh0zpkxx9zlmwz90f589lu9gghc\n", + "\treceiver: bostrom1re0aw0ugy9fl8qgdddqgfg49ahmmux9rpnadj4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lnrmld6n5wvt5ew64myp80hvy96yuymshk2t7m\n", + "\treceiver: bostrom1cdcjpftgh0u3ac2fzmwar4fnx470fn53ys4rlk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1twsywg8vk6xgzmzsd3kr24z3dx9v5czw4e8pmm\n", + "\treceiver: bostrom1aqdurh4nru6rwhkt377nthznufsrp4u6nqf39x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rr882vtffxthtj4v56hwe7qujsxcseefg7jtam\n", + "\treceiver: bostrom1pk5e5q7evmpgnjj869zrjrjas4g7nek87vl5r9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kfazpp7r8txnfadl80wm5cxszgvqaxjp2yaeyd\n", + "\treceiver: bostrom14e2q07kpm9yc04cp720nu50ph3sfaccrrunz36\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kvpvy3e9ywjnmw2wnr9r8g4k372gaack90a3lm\n", + "\treceiver: bostrom1qf3h5et5056t99xck7pgfk5hdgypenp7wmck8v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tw2pvj7e94cphz3qchke6w5j6vpsu6hspt9z0g\n", + "\treceiver: bostrom1jcelm0lkrjflq3l3r5d0eaxxzfdjj9wtrsqnz3\n", "\tamount: 1boot\n", - "\treceiver: bostrom17m6jaul56s6n7phes0gkm9t8zel0e5vf6f55h6\n", + "\treceiver: bostrom1lgfv6mktluz24xfuvjmxw7nawlnf7ckj02gt39\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kmfh0aw3dywq5qxnetyslrv0rgfs5nh22ch8vl\n", + "\treceiver: bostrom1wjq76tk9gz9mh4v9z29zjcgjgv36mz84v333lg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n8cte7et2ypgypkeltae24x96f2yh4h6hhhye9\n", + "\treceiver: bostrom1uj22dv2y4ly96svnav09h4g44zf68k5md7cna7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pl23mjkc7khy2azmy8hxvjqqzhhkwd9ew393hw\n", + "\treceiver: bostrom1lef3zd3p75kk9jazqalqpefmtg5rp3ev5084zz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z98wluzyv3kl4a2lw48jg9j239699cxylaprtv\n", + "\treceiver: bostrom1a2y78n5340pjxtuksfehk7y0pfaw6fdardy87r\n", "\tamount: 1boot\n", - "\treceiver: bostrom18r64ldsyrgd8hel0pw8xaz9ugefnd7t8y2w7l0\n", + "\treceiver: bostrom1vuet4dhydtuemhguaj3awx8tvzaau56rkkqu82\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hj6vx8z02f6wa9tdypdetwh38ry4ke7na6lcr2\n", + "\treceiver: bostrom1n8hyrj9kam0zdtf6mcw25mrctjh6d7d3n5dgpc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lwkl9znu4g0qq6s0rmdxzt4cskrpazevs4lynr\n", + "\treceiver: bostrom1hs69gk7cmsqyez2n9ake4kfc452x8lsgnn9yv4\n", "\tamount: 1boot\n", - "\treceiver: bostrom19l5sd43qxl6wq9cz0qjc2rrzcmu82l9lte7p4y\n", + "\treceiver: bostrom1ghya49vuypsfvgxq9x9gcw6l9x4jnkxlrq8ql6\n", "\tamount: 1boot\n", - "\treceiver: bostrom183fg46tade68t7p77yn4zry4gurtsjuraxfdw4\n", + "\treceiver: bostrom1qzgpgtkk7thcmjr6heclgdejpy77w5rfdgm4x4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gwnlulu8392uvwcdsfeythm46kqrphqz6094r9\n", + "\treceiver: bostrom1qvsnlu53celffqlqru5k05gvzr70ew3lplvhjt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zh5jp54cgum7amzuhjxjy0gs9y6ekg5en79srf\n", + "\treceiver: bostrom1qn0lrdzyl2vw86vhrq6q9flycnc7xkc5kfxacz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m5wgk8a8wtu86ek8f94tahcstdpzlq4pj673y6\n", + "\treceiver: bostrom102ugpddahjj0cgtp8wn8uekvtt2ck3s8h5ltds\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z3p97l3ezu6jmfq0keyrxen5zlu2v8qfl6epq2\n", + "\treceiver: bostrom1k8g56xsch6ztwf2uz248uwwqx9dzn2falgp38t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fnu5cnftc2c80hxgsfz7rk0muc7n8w0g4av2gp\n", + "\treceiver: bostrom1qn4lw4ejgusdxeekecze36w3m9smqfywxqtf02\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h8n5gsmn5fy88thnn00tqmxfl55whm49k5c2gw\n", + "\treceiver: bostrom1hkx5f4cg3ra7e29fy9splv3fy3dqjym5c44g7e\n", "\tamount: 1boot\n", - "\treceiver: bostrom16k965hsaqnltlqnusln5u8g8483xz9ca6ux6yw\n", + "\treceiver: bostrom1kua4wtdsgd3jvx7drsmtwfzs7tasr54f3nt6vn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hve6c25ajcthysu9kz0u2duyzd4gpf5sw5gvh4\n", + "\treceiver: bostrom12jc4e76pm2t3cgad2fcgcvrsr4s6tcc0yvwdhy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lwpjmf0u7n86cxw0f3wv3fjq9a7rqxeq8fxydj\n", + "\treceiver: bostrom1qpffyu8t3rwgvr9ajtudspnl0376ny43cs28cm\n", "\tamount: 1boot\n", - "\treceiver: bostrom13pv2434qt9ez2uqwdggx8agujuk696jynj6le6\n", + "\treceiver: bostrom1hnzwwe8xhjgn23l3n5amgwtqjjj77r9ja7u4yj\n", "\tamount: 1boot\n", - "\treceiver: bostrom18hhw6nfwjn4n09fcd70weyv7zm4stm5xw6jvwe\n", + "\treceiver: bostrom1xfwdag64x7emsu5z9c0cc5cgw69hluchrnr0td\n", "\tamount: 1boot\n", - "\treceiver: bostrom13zpnfzu4xgxtlxyeex52a387c6d7pg64mpptk0\n", + "\treceiver: bostrom1gde0a76m58h4qp49wm5qexenn0lr9rfqay0cc6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1taaar7fsp4wlz40szl02z9jluluhhg5txy4zqv\n", + "\treceiver: bostrom1ycz6jq34ch9zwz53uksutqax7d0tzg4r4ptuz0\n", "\tamount: 1boot\n", - "\treceiver: bostrom16t5w7q32m7k9zjwaxrefknjlr4w0llfpclutx7\n", + "\treceiver: bostrom1hfjmtwh8f6u4guy43gec20paj3fpj28yna0a6v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gnpk2gnw75hrewnjw9vw6qxcyr0tkdrtha438f\n", + "\treceiver: bostrom14v89cvmam6e2l7ye69kln6wn7dthsy3wedfl7w\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pt767plvxgxkdxlq6tultkn4ghewpu26ccj3ae\n", + "\treceiver: bostrom14xaq0xndppzctkajv9u7vmr78sm5dkrw8pealk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pspcsc8ktyeezzrt7y4gc4aa4g4uyeyh5k9zz3\n", + "\treceiver: bostrom13swa4d4tds8ke7rfjkt3g9hkftz0hhs9fr2g9h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1aagxzrs5sdwpzv7y4l7csxnzcftky22m2e7me4\n", + "\treceiver: bostrom1az9amg5j7h5udxnflchdpea86admanh980np3z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1270dznuxukmwldm5y9qs0k37fqmwvhgldhvf36\n", + "\treceiver: bostrom1jsmxeh782fwdj26h8xfqyxtuy6zkqst9k0gn8u\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nrw8mdgxwkjq70jcd8qlq3w2dgl07886f7lfq5\n", + "\treceiver: bostrom1h4c0awvycvhq4rfzstrup20z8wwy2kd44mmxme\n", "\tamount: 1boot\n", - "\treceiver: bostrom149e9hzvmhr2cn4gnqxaz07h7rqf85f4qe2y6zl\n", + "\treceiver: bostrom1ntnhdn59j0w5p3h8ql2tpjcuaddgwvc6sdm0dy\n", "\tamount: 1boot\n", - "\treceiver: bostrom187fh40fpvuft2lxt7maea79hqlg77umk04aces\n", + "\treceiver: bostrom1420k0ct4cyjscyscay0ze6dcd3aq7rxq04y68x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d2v5hp544300ydqeadx3nrdfn0zmuxk6zqgm8q\n", + "\treceiver: bostrom19md2lvewcpqrc2j2a0vnr4n69j0wrcf6whvt0c\n", "\tamount: 1boot\n", - "\treceiver: bostrom109kpv2eapwldu5vdjfe9x4dknul79z6j0pjztd\n", + "\treceiver: bostrom1hhg04rxah2q4ax03fsr4mq5mkg2fsn0n8epg3j\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q55j8m8249dgcmstmh9x7vaysjvuaqda2m7y4n\n", + "\treceiver: bostrom1jk20x6myytts4295k8n5l890hh68gptmnmpcx8\n", "\tamount: 1boot\n", - "\treceiver: bostrom13r0v52gujksfcq2zra63takypemfx2dg5xn5ed\n", + "\treceiver: bostrom10t22t79yfyxe5lquv78d25vxmun7q9e5s6xxsx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1yq3d9hsgankr0njdartuv3vr780yg88dsk0xc8\n", + "\treceiver: bostrom150v7qu5uarz9d85k2d50ejl9zdw4k044r0y9wy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r0qlnghtuj65kt220vjjeknl4vu2827rfa33p2\n", + "\treceiver: bostrom12965cpvwlghw3jvts7qdwkkam0j5p44y687d5x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z747yem8ndw5hkgu0c48t6k4gle20gq89pfwaa\n", + "\treceiver: bostrom1duy4aps80ha9wcg2ql2sv55sac09n885yfc7rd\n", "\tamount: 1boot\n", - "\treceiver: bostrom15l5ynjwnf5vhfzjqx2u0ja787psl6ytwf6xmyl\n", + "\treceiver: bostrom1rw0alcdzvxqjvnjaz0kxsjme0jkezxg2u0j425\n", "\tamount: 1boot\n", - "\treceiver: bostrom1le2zw5u5rckpn8apwg6l3yu374ltjz3sts63ej\n", + "\treceiver: bostrom1gm4gtmjxj6292zc75c7nvuwk93kkj0q0qupw0z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1htmclu8cx3dw2pmz9a22nwm8xtmelcursrhjjr\n", + "\treceiver: bostrom1nxklnj8ywc2rpq023qd8dhd0xz9cndjy3mahxn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lccxp00cskjkzr2njtw4pajja89hxh3cxmm329\n", + "\treceiver: bostrom1utfmzk3f4k5pe0lchqvuwxl0fzvd7leur2m4km\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n5qjt5xx45x8qmmxawf9qy7xevr9pnamqds4c2\n", + "\treceiver: bostrom1zyuupqv5kuszull7ugw55al34w09scwludfrwr\n", "\tamount: 1boot\n", - "\treceiver: bostrom16hghws8nqqheqv2j34ctpsp4a7kv6wmjrckjcv\n", + "\treceiver: bostrom1h4kz9ze0q7g4jz2hwafazgtms6luwz8u6st4td\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x52zv3zxfcsk5vfgplu8cer3thy8a0kjl75l2x\n", + "\treceiver: bostrom1usfstj0qm7jdgj6evhh05up4wx604dz7qj87ac\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hmw48qn3usz5jqsx3v3scacdl6qszafw46dh33\n", + "\treceiver: bostrom1zmytua9j77wgfgmm40wgttegva7sc4mvwzsjsl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c8ltyd9mwgw02ljq6e73yhvwdd8vhmhagzy7ty\n", + "\treceiver: bostrom1ee56dns037jw5cvgpuu8zp9c2lzgkr5gh70cwt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wnrdz00q83a804aflxq2syejhp4gd3sncu55cx\n", + "\treceiver: bostrom1z76ffeaayhaeqcel279y65ttztrqwj28l0c804\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w2w6z4fen6y46xxpglxz7rf4tk0f98zxv953un\n", + "\treceiver: bostrom1zesngstg95a2a8v7lz7r4crwfv9zxcmqtltrcc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u3c3t2dmukr8v0earp78c33hpm6frt20gz9krf\n", + "\treceiver: bostrom103zeyaftmlxla0j4jtc006uh3mmjrcjjhvtvgq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dw5gvw2znmpn2dzm7847yrsrcfv3fxfhfxr2l5\n", + "\treceiver: bostrom1udygx4wvxueu7x2qzl43gt5n9dajkwp3ygz40l\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hty2hzwt8uk057p3gc3zdskvt5qpmvcxsh4r0d\n", + "\treceiver: bostrom1tvwcry63vlzv8wekau09treh55r3ydvq3t4tgv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qa906vq70gf26aalhkc6ky32zttc9q6xaafh5a\n", + "\treceiver: bostrom1t0fsme3l2gzh3z939clswhug0yvqum09e9v8rs\n", "\tamount: 1boot\n", - "\treceiver: bostrom163euvcrmrpq4u2sgs9en5puyazch7tm33plp92\n", + "\treceiver: bostrom1e8q37cxgmfwvlwu5dj8xgzm6pj9fgmfgju6a0e\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vxq9y87hr4a4kqhn37y3zhjdnjtjwnzh7ycmyj\n", + "\treceiver: bostrom1qy7xa6rzcg4jszrlhmka9rp56eaz93gesapdvx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1n5tvmq0mjq28ldhplwx9uj8asqav3kdqup26jf\n", + "\treceiver: bostrom1fvuvnhazucfflj8s5cufy9q97plag674sguvu7\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sk5rzappl90hes5kyyruqrrgpkq6y5j982jsfx\n", + "\treceiver: bostrom1aqllssuy97nezjp6xhw4c8twu6jts559tqzssl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a40vz6ryf3tprzxa7andajphf0kdvy73w2523l\n", + "\treceiver: bostrom1t5szzerqjhnx3nj8t97zcx8ts5nnsskyu2dyus\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k8xgyhenw3069mkp0qlmm26hs8c3s99ker9f5w\n", + "\treceiver: bostrom1vveyk0teh2nsndeg57mpmhnd5u9yawfvdswecg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ek0sdnv86m9hne9g805ldhv63fr879z9ry6j8u\n", + "\treceiver: bostrom1zwe7u6kkqcymhk8yp2pmhswt04j7dd8qku47z2\n", "\tamount: 1boot\n", - "\treceiver: bostrom14p8y3tumsvm0xmhx9f5565zc83ksv2nvtzt68r\n", + "\treceiver: bostrom1w7y3g0r9adese8knyp277mhx07sruxxgpcmz88\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hhvxsz30r3qery449x9p8muxfcep2fh0capksj\n", + "\treceiver: bostrom13nfegxehxp7kh723vj2s04cpy0s60qndlsau8r\n", "\tamount: 1boot\n", - "\treceiver: bostrom16jactzz062ljndpx8w7kcr5p8kru68y6cmzekx\n", + "\treceiver: bostrom1ds9knerx4cq7sf5qz9grtxavldt7tmz7yuvral\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rqp2s9ctwr5ecp68etp3vgg73v7w8dhumgqwus\n", + "\treceiver: bostrom1n00meh6k0essqaxfl6776rjuxulkff9fynsqq4\n", "\tamount: 1boot\n", - "\treceiver: bostrom16tc25mskkukxlu40m3twlxx2c2prdvlq7jqaux\n", + "\treceiver: bostrom1tmntgg36jmhxvdxsp54rd5yj9523v6xpk5cnqt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tlxepn4ekapvmaqx3zj2n4pjp65zjcspk25n6e\n", + "\treceiver: bostrom1w2kwm7p7zzzzfvxax8jqvm9vgp9p7fhhxmqgz2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1689nqy43u6zzer77armmu9syrzcy3vmqt7drkn\n", + "\treceiver: bostrom1hxz2usyugcmj38frhrzlc2aqmwekkcfj33t2uf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pl6fxlfa2493edmeef5z6upspl2t8pm53gwg6j\n", + "\treceiver: bostrom1me6p7njrz8rlw5vjgya5h5hf60q8xj8t9evfy2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pn39dy7v3g3ej2zastqqx5tvp3yfn7rfgul30d\n", + "\treceiver: bostrom14s7k32z48550t7qju0ruvz36agjrvy9rpt255h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qnyzxz6jf3d9k4qr8l8nhlq3d7tcf90fr7de0e\n", + "\treceiver: bostrom12fdx3aesgunjkh30jpagd0zsfan0qnuhjmlskr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ykhypxnmklmxj80z6rkjr092kcn4hxmqnfx9f5\n", + "\treceiver: bostrom1w4lm6dth2wa3a36avxqf7amps2mqtp2eyx8p79\n", "\tamount: 1boot\n", - "\treceiver: bostrom1nh9mmag4svhx052r7744k69txzyqrypj9f8xk7\n", + "\treceiver: bostrom1l97gg8q4d8qcsem6rt05r365q8fx5usuz6c9wk\n", "\tamount: 1boot\n", - "\treceiver: bostrom16w9z3klshzxdmmejlwnlqjsxq4h7tuseycyc3w\n", + "\treceiver: bostrom1dppda4tsrvdrnptkewd0epq08mj4e6e2m8ay7m\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zyf3s6c0asag4a0p7dfxe2wc37e0654vnuh92z\n", + "\treceiver: bostrom1uzd7y2s0yj8ghtg55nummu6hu7pljknt4md5h5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1znd0lyxr9pmn8gk2nmfqzf9fwkrv5audlgn86t\n", + "\treceiver: bostrom1hyqw4y85xcvqnd2hudx24daplkeyjftv4ya8qt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ld0ldqyql2x80fju0u07s5nxuxunrpey5cn6aq\n", + "\treceiver: bostrom1uw8jryssgtyxdh8kumwz7gl26e78l0njkyvh7z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c22frcfqxg3rc6nlf575aeks5adn300jwstnzw\n", + "\treceiver: bostrom1j6m6rf607k96ckgyyesexex9ckec3g5u04xgqs\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ehr45fwxja4j5aeltlfpfjasxltz66xmxx23wq\n", + "\treceiver: bostrom1n4zal3f2pzts85a289akzqugcsv6fw4qg2gv3d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ezfcypqgt7mcgyfqpl6zdnxcfanf8r2v5pklxw\n", + "\treceiver: bostrom1hx82zjwku06jqdhhkcg99zcuzwjnax79xa54ph\n", "\tamount: 1boot\n", - "\treceiver: bostrom1epdpeeqwcwjw6apr9unj3vvfagjdag6mu4j8hh\n", + "\treceiver: bostrom1q0zkt55npcsyhnj4akrc8hwepctn9kdfly3rh0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kukr2tfgup0haemgw4wev9k8fc42jvkmhjtctv\n", + "\treceiver: bostrom16snytks732s9qy8z3ffh9wjvygrfl8zr7jrjdl\n", "\tamount: 1boot\n", - "\treceiver: bostrom192989dgun24403r4ug7fvre5758fkxv8qp776m\n", + "\treceiver: bostrom1vtvsevpe8e9kp9m2qgsrh8vqt9hgqardh0ljaw\n", "\tamount: 1boot\n", - "\treceiver: bostrom17s7un6flln4mqw8gh58kcr3s0j8qy9gth6mdta\n", + "\treceiver: bostrom1u7hxgfh927cmxfsqguxy8x3sat3908jt6mh488\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sp7trm678m7fp26kdga72vgyuvcuvq3cjdmykq\n", + "\treceiver: bostrom1z50v0rww3f4u2zhyeyfhg7gsj2kzr00gx8xrlk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vrwlgwpumy48ygn9n0u86wc3vrd834u7z5yqd3\n", + "\treceiver: bostrom18hkau2vr25l60uhndelhfyu2jcatn9gf0rfnw6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gceqa7838eeflmy0reywjwc0r4y03u2lkwn5vr\n", + "\treceiver: bostrom1w8num65va5cn6pe0lpgzegwu4sh5ak3jm8mssn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rqcnk27uh3uzajp3g3pye2g7p26smyqnu0qwp8\n", + "\treceiver: bostrom1vkecldpz2phuexa8e3v6kv5gz9xwss6h3lqm2l\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rmlcsa5ljhsqrmedqzd5gdy2qa5z87q0amlhu7\n", + "\treceiver: bostrom1javxf250ts85tq97tk9vtngu6fnq6fg8dfagp4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jd56hz2z2wy283ywf2fynnpyn7rqcqf8qq2rgk\n", + "\treceiver: bostrom13hkqre84xkrhacxk4xwwq69cw79zdzh3f0wneq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ut48eym8n9f5ral5mk6hdhjgxh96hkwjj27ejm\n", + "\treceiver: bostrom1gwlg44nwpvs0zhwa9vq4uthrmhtd6tharaprwe\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sefkewd7yjnayc6asv9dzf6wcx37jkcru2llg3\n", + "\treceiver: bostrom1maxrr892zvy8r9utdfzfz9tzl36cvmkuyl9szp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a4jqwt9jag0sv9sdgv08k2usv0vyeudwfefkas\n", + "\treceiver: bostrom1ze0mmxfqylm7qrf6c9zprhc2snzz9vd9dmn6ap\n", "\tamount: 1boot\n", - "\treceiver: bostrom1x8zf8dch0qe9shlrud6wwgllpr9aqfzfll48ht\n", + "\treceiver: bostrom1wldkljur7xp6a3rsxtehrz09y9ktjje9hewf54\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tcu8u7f4exml5ws3xmm77flfr5ysk55ratywka\n", + "\treceiver: bostrom15lazwhkgymm96fplzthleld9cevt85metwzgyr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1qdcrt85sjjklnt7yl7lujr6jr3k47dy7nk0pj2\n", + "\treceiver: bostrom14jr8clptyx7jewpgffdeaxwl0xe6snl3u95nll\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kqcj3wf4rd4vyjykhfwgc8kzjd42pqt5qr03tc\n", + "\treceiver: bostrom1l9csn2zrh4gx0gvk3rp7mu5d2l5pq6zsed8p7h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1q2s73vjr5ld3kf7w2hny2kqthj06elaccwdnt2\n", + "\treceiver: bostrom17ptuyehdfycyuahszhfhu7uludtpppgnyd6pql\n", "\tamount: 1boot\n", - "\treceiver: bostrom1d294aj94vd7fwfjl7rj56edfkrdwp8q7clpvsw\n", + "\treceiver: bostrom1pfkmv8tkam06k3mve9q9wfdm2egve87vz7pmna\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wq2fq7550egvxpmjqq4nd6qpqgqrf62tw8xx32\n", + "\treceiver: bostrom10hhnlax5g6exslfmrltdx9k5z9h2208lfl66lj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dd90687zeqymgdpntrqrm75ux067lzq93kcxuf\n", + "\treceiver: bostrom1p4xaa6n6lrrgkgxcne3uk5l7ezq3nljwj594s0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1uz8c9f9ymnw5quxwcq27vxlpspuqq0e8mqlnkd\n", + "\treceiver: bostrom1xj773wmacfgavwtavcqsafmncfwed9csrk0h2j\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cwxd5gqjtml42ysdumzrp8f44lrnvlvdsuku2r\n", + "\treceiver: bostrom120uqk7p4u3hy4kz6fdx2xzm0vnq6tnfynk4gve\n", "\tamount: 1boot\n", - "\treceiver: bostrom137dyn6lravnwrvp0xdarjpp3shs9eq9qayqrsj\n", + "\treceiver: bostrom130lxdw346e70t2ntplnm94aksyke6q0f52vclv\n", "\tamount: 1boot\n", - "\treceiver: bostrom17wsucxdknweka82d2gat0226zng3ecj5ewyznc\n", + "\treceiver: bostrom1vq6gsql23nyx0p8c0uluzgdtz0d5kelxa5n9az\n", "\tamount: 1boot\n", - "\treceiver: bostrom13h8exd4ssfpnsl3lsuwzvpn4fm4c8lsxrlt497\n", + "\treceiver: bostrom1uu2aede7c5hz0pcxafwrv7gkf9wcm2k7dhqwf2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1w65z68mrj90k22tyfgxn9gq0uaw5yseehx6rm9\n", + "\treceiver: bostrom1lvsykp30405aauwg5ceqp7kf4ed9lnllwsnrh8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ewn92s68uaw3p2pxgvewp2hlm7rqupvtjnng6y\n", + "\treceiver: bostrom1ste4edvr5cc8mz7cvuxxtcq5frj08tyj2zlxue\n", "\tamount: 1boot\n", - "\treceiver: bostrom14u79amxfg52efqsmgmya5az45th2ke6h9nwcvd\n", + "\treceiver: bostrom1dkpf8dqeuf39chpq0wephyfzc6nvh4js6ew7a5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rdgd7lzq2vp6cksxmyym42x9dw7pqkwa2x7vpx\n", + "\treceiver: bostrom17j4ugdqq3lwxdhx2qvn8e20cm6vz05ld3jdewl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m5n49zvpjmmtsgay3u0kd252007jwp7clwjrxc\n", + "\treceiver: bostrom1agpj2xahtv6ytcta9njctyyl4scty8tcnpkjpr\n", "\tamount: 1boot\n", - "\treceiver: bostrom15yk89rxy67zeskvr3ymq0ujkrx5lhy53d9s449\n", + "\treceiver: bostrom1wmpzyecfrc35ewqqgw7yl28ay7a8tua57a7xx5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a5m8zz8v903akelndpazkqdu0975e8yrrsn7w7\n", + "\treceiver: bostrom1mur9er5tj5ysuwzp955arsqf4qysp77fe43twz\n", "\tamount: 1boot\n", - "\treceiver: bostrom14qyvmxkzgt6y0gv04r5w5avq0m2ejr84hclxm2\n", + "\treceiver: bostrom128phu969lkd2vfdkxatam8hhggsa2tf2w056q3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1va2hlrht4w22e49ge59zvur7j7pdv0z73z3yvn\n", + "\treceiver: bostrom1pugqses5qxcqe6hvqumnxulq54e5exwvs0nhv8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pkxnqde9gzuycm8u6wftl74rprgxa5svct80mz\n", + "\treceiver: bostrom1thjcavhuwvam9nug8kp0mr5al0f3rsdcrpykja\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pay43f7gwje57d56ewyzjrvg0gs5fzrjludtz3\n", + "\treceiver: bostrom1h6yhxunxl8k5tmx2fd9t57h50dh99mkxegtrnz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1z6tm06hwxqldg6j455tepqjz4nvrktengx4gc4\n", + "\treceiver: bostrom1r7w5yhuxmgzg9qvucr59kr7avad248xcy5xerd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xtry5m4ntucu3zpc9y4kskttt43kzlewkylyfs\n", + "\treceiver: bostrom17zsauzyd7y7mmqm667cjvf3c8ls0ez7ue52vym\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ut4vqupek9ya6907kfc4k86sul6xnm5y70s0sa\n", + "\treceiver: bostrom18spep23f9m7h9vprqpluyzm5ymhrpmakylljz0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a0rclkxqknqj4pc6872rth99yyw3px5kgx2mv6\n", + "\treceiver: bostrom14uqc6ufhh0mgrkt4aqsa68ghj55v0hy0kyzxc2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k5ezayyv45fshxuekmr7erk664z2wa7t7v5hdx\n", + "\treceiver: bostrom15slyfr29qu8u927gu2pmd2gwur5xp0v34e5qdj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r4nhckpyk5fpk4hnvvtx47wg0mznqpj5kfjw5n\n", + "\treceiver: bostrom15k4cnvx90hd9c88atk8vvy3qedvfxyl64qpf8t\n", "\tamount: 1boot\n", - "\treceiver: bostrom15wshxjqt3zy3m0muxf6gll3pjsgnnnsgc4qaex\n", + "\treceiver: bostrom175eqknqcxywthmcdks8r0kq3d8vfmgyzfqv0ee\n", "\tamount: 1boot\n", - "\treceiver: bostrom19jk6d5jkrc3k9yck02z3d5ug9ezj576lp485k9\n", + "\treceiver: bostrom1jsk5e0yujj9gcwvphdlwssahpsdkxw0ld3ck4m\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r0j3spku6m45ueyac7se5a2dr2qfztwrjrz8v8\n", + "\treceiver: bostrom1zlaa2u9z56r0jnthmuzezss5fd8tf70vp9qhr4\n", "\tamount: 1boot\n", - "\treceiver: bostrom13d634j7nzc3qq2lly9wtmldz66pkrw4cnec75l\n", + "\treceiver: bostrom1jtlahs0cvj8q57k8cqnufpt5qhu30smychv645\n", "\tamount: 1boot\n", - "\treceiver: bostrom18rfg7r82hckclmfce2lgz9qv0yurqtxpnfcjtl\n", + "\treceiver: bostrom18d82hzpqvd899ygwerxme2yw5350w4vylgy3ft\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tya8kn5d8u7ndwary6djm9k7fjljhfghrq8525\n", + "\treceiver: bostrom108wlz2utdyu00qmxjyyc8xd2fpqyewlnqfgd8l\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tw6pksuktay4cpwj0j9xwu4dv996z4ulyvh9eh\n", + "\treceiver: bostrom18cdndsvh7nh5hvsgw7gulle5d8m2l29w530sfa\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ng573t0mdqhufkfe9hw4gypavdjudecukhw7g7\n", + "\treceiver: bostrom1swdwjgs43k40r9kj85kffgph4p2c05wwgnlq3z\n", "\tamount: 1boot\n", - "\treceiver: bostrom16sps06qur4gktqthhe6glywj3m40djjeefzvsy\n", + "\treceiver: bostrom1hgp2qhz69ca0slwzeulvyrjy4r32cpryx4d7yk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jh9l0sumr3fulpyh5c7hn4rq2uj9dpv9tc7ple\n", + "\treceiver: bostrom1zs9x7d3zcepsmmmckk4z3u72y5luukpyrx6hzz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s72wt3lwdvdkrn74q4uu84zwt0ykukwuderwum\n", + "\treceiver: bostrom1526r2wjwn7cg893g4jks5dqwkua9xje8lzef0x\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r895jfagyeyqu7jxxz90t3rfhqqtmtjud4acyy\n", + "\treceiver: bostrom1rmda3yu8kskzkwvsrmr6dte2fnxs305mnn9re4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m83hk5syetahgc0549trxcqecpcj0dglms2vhk\n", + "\treceiver: bostrom15q79jgx0mnq0fnsd6apxz6c529az5zvwadle3d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wasws7fvtf2ncv9cxqqp9u78ys6029733se78g\n", + "\treceiver: bostrom1u67tpqc5akxcvcl3z3wk7qcsnqchldghcx67pr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1y3dey0f54x6g53dtgtlfrhvqacvpmmycapqwn2\n", + "\treceiver: bostrom1y68yvak6790m8z809p9a3x0jt8r5rpn0yhnzvc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1f9e4vrcxysj6g8xk94pzgx5v5ljxyrk65xzs5n\n", + "\treceiver: bostrom1y0rvl59q0vspfjzygh8eznq2aca6djgzruafa6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ktp3zgtf5fmxyc928ydvwgkt8mekkn4hwk4wrk\n", + "\treceiver: bostrom1psj8hzygflyqv6m4wty72dvt97cs3jqmvqvkfy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1maez3a26d792yvsskk569n7dxdc6xz4cergn5n\n", + "\treceiver: bostrom1eu3jxwjfl3akdazvefjuye57v93mh7fm2ueqgu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h8mw9l2y7xzu5e5yg2e6eyw7vmmn657ewf59r7\n", + "\treceiver: bostrom1z96rlvaq3v3ckm8vv5xa07qlj8cwly4ldnze2p\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g4amj4fwe0h9707he8gpp06e0ccrplydef3w4x\n", + "\treceiver: bostrom17msp24exdfg8d238rqckjes5lu2yz8p0ekqzke\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ahfpl4z6458uj633le5wfywjj04q4y29xcf8ve\n", + "\treceiver: bostrom1qs2ltedptmhf99fj0sv842w0e037gg02qzywk4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lphhr6phdv0s8xl697jn3k96d5m4q4fjl0ec0k\n", + "\treceiver: bostrom1ys6mdm7s5ummfgzqt5wgm9ngpexg8namqj44ea\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s4zu2runz5wrveh56q9zd6txrm644r8xwu6c3e\n", + "\treceiver: bostrom1r69jy0zy03wzq67j4532evqk7p3l2qtmgkzvdj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1r7p4mgwsxddkgq5s8ladtfapupetjl8483sc0d\n", + "\treceiver: bostrom1y9kz9676d7gvv9n7ygkvu3mrf4audmg5w4fgxn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ensep7runynht2atdwlss6crnty6l9wfmjglp5\n", + "\treceiver: bostrom19velk6646sgwsmwjsh2k8x848ev9ravl2qcpje\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jpumajy0pu4u9q6exr6fw579kt2gpfxqtg3l7u\n", + "\treceiver: bostrom1wd27x5kfrlj4uzmq3qkz4lhgrlz0cpy437lkxc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zzm9c009ngrcyawhwft7qwky9emul4ywsjg82s\n", + "\treceiver: bostrom1jjkdpuqn6fez4fv4gzjntttv6sughevppwlayx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wuv8z8ntgrffuyeqlpj3xk9xy0fkupynvkmj59\n", + "\treceiver: bostrom1qhz3xt0daf64u5wm2l0zcnjp8f4xjwwnchc4pj\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kgc327fmq497qcz033w5au7340hznhhtanf53y\n", + "\treceiver: bostrom1gagjy687fwwvqfepdf3n3jc73v5673vm3feccr\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xlplr27jfkm5gshc3nzuzfcu5w99x682698g0k\n", + "\treceiver: bostrom1deza7hzf8un3hj8wf3ghrk30gce229exes6kzq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ked9k8qy6q63g3fa6urh7z5kl9vxfwmekpcj5p\n", + "\treceiver: bostrom1c43waxk5gzxctvdakyn8s8qwgxqphpmnleqr6f\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fa8uyq5mfag090t2rh7tyquxp28wp0mh7qzd85\n", + "\treceiver: bostrom1yvppm8v0yzqnc3e99ecs7dprpx27ydp9jqkhqv\n", "\tamount: 1boot\n", - "\treceiver: bostrom18ljrs2jjesp9r2pc4lm2rpy62rn3md69m28f9g\n", + "\treceiver: bostrom14w4q8h028aqmcrv90tpa2jl69mr7sylerlcdc8\n", "\tamount: 1boot\n", - "\treceiver: bostrom17gt2kyd9shmdwxpvk0wjhvnvmdxsge972nkaep\n", + "\treceiver: bostrom1cj4smplwksvyaz5xhxf348dnwjvv4yg7pk3vh5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pnvfx8rv3xnhs3qqs904ffs5pggh5g9f0pp980\n", + "\treceiver: bostrom16ja5hd6qe0l8jj2cf2kvqzkp06qqde8uwjre4d\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gchhn3nyaemnygaugmmt7ad6cgs5n6ayswulrn\n", + "\treceiver: bostrom10lkpg9wwfmu9snshu5dawjwaagmjg934zmwrwp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kjh3mvr2anxvt6p4hw7zqdczud06zmtk3fd5e5\n", + "\treceiver: bostrom17np703zwam49gv03l8wdgs5zp7yhhpefycy548\n", "\tamount: 1boot\n", - "\treceiver: bostrom10ax2tzudhd5hy3ggmtrdhx5sve5fatjmgyvqen\n", + "\treceiver: bostrom14m0f7r50semu7m287whhtgnd5zqsk8nvt9xp78\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tegw6mt90x6c7xxt00vfsc8dtc5wy93u66a5lf\n", + "\treceiver: bostrom192plmtfxwwanum8ypfg3txl6kyzn8y07tvnrgk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kdh2wdln3fmsr90ctdkuspdlkp79h7plgn8x40\n", + "\treceiver: bostrom1v5003m4u4c2eukmxp8h0k3zkfmw25vzj48pxra\n", "\tamount: 1boot\n", - "\treceiver: bostrom15fav0dz94gquve0sp7ph7qcg39z98j47c8mdfd\n", + "\treceiver: bostrom1lx64l9jvh7pvn769s3tp5u4xpzznjm6zcvr0xd\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ylhupuee3dl52rqrp0k6zum4rhzjjss6h37me6\n", + "\treceiver: bostrom1746aw07my8pu6ry4t95qhrypttm2ck4ca66xwc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ttmveuhuqvjlx0jvfpk9avv7eqadl9cf5pgcu0\n", + "\treceiver: bostrom1hf8cyh6yzkae6ugdp3fngzh7kckt78me9kmfth\n", "\tamount: 1boot\n", - "\treceiver: bostrom1phj32ay82kv3tawftn5twhnqzfyf8aa60qadt2\n", + "\treceiver: bostrom19d52ssjysmkq8lj09nm8ajlsl539xswfe4ydwg\n", "\tamount: 1boot\n", - "\treceiver: bostrom18cydujcvq3mrtvyuz7gjv6yjlsx76qxtqk3k4z\n", + "\treceiver: bostrom1pq9q64mfgp3cssaugsd5av6rf67efyzpykq6td\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xh5cqhxfarjmnmquhlynjyh9xd2j5nxrrzkak8\n", + "\treceiver: bostrom1n3h8m0e0xy5axv2xkttyyhjttaa49qpv6nlwxt\n", "\tamount: 1boot\n", - "\treceiver: bostrom1kkszf9376x2wmx4hx6jnqteufrcfu4y7zmjm88\n", + "\treceiver: bostrom1fknfe5qczrmkm9q6dx6d63hh5v9nztkdk6xj95\n", "\tamount: 1boot\n", - "\treceiver: bostrom1tx4npp655y8kfe80t5065mjtfukfwscd2g75lq\n", + "\treceiver: bostrom1lggvwqa68hggmvx6ceyhanxegu4wx867pu6tlm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1f7edss94wcw7d75wn9le4ufzcrh9c7xg8emc6x\n", + "\treceiver: bostrom156gwt6ahk5jfptp8jcg56jwwvumhtucwzx48yx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1zdsuc6c90dj7g6ckw8fsdjjyvmgv6wp48p06l6\n", + "\treceiver: bostrom1mymsz36xshe4jtvhc6reammaas9g33cxaks7pm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1rra6lpczdl4dssggwh0xsja28g8stg6rks9z9r\n", + "\treceiver: bostrom1nyudwhlnjk07rky937rrep6pnr6r4h4zrfvepk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ywea3k3pr2csf42fa2074nq0fzzzl47mc3hlu8\n", + "\treceiver: bostrom1792g90xakq55tssa6rsphdqsjx642h3mmgprhu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k7vwk8pdka0j044l3qxzdu7jkzgsjrefujk7g2\n", + "\treceiver: bostrom1njz353ta8j753t8dh3wks945w7fzzes6cr6e9t\n", "\tamount: 1boot\n", - "\treceiver: bostrom10ujmghscue3rg5mtejuf83ejedgqgdx3tm67hq\n", + "\treceiver: bostrom1u50h7w60k6uxa2jnppzkadl5qyjpz9vlwf684p\n", "\tamount: 1boot\n", - "\treceiver: bostrom1j9z5dnnehwnmdnxyyrkwaaygtwls5xghar0rh6\n", + "\treceiver: bostrom1r36crsyv8avj70q3wc558ktadh5pd52yx00umu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1pmvdmwuqxu6egdqwv4dwm4elajkrlrqtu4kgx4\n", + "\treceiver: bostrom17rcc77lajfky9djyy9nxw9vcenvj7pylstx3ck\n", "\tamount: 1boot\n", - "\treceiver: bostrom19ammktlj7932y92us00rfql7654cudzk6grw0s\n", + "\treceiver: bostrom1aphxaergxtkwzs0ycgz98hnu6r8a3jl7h90atw\n", "\tamount: 1boot\n", - "\treceiver: bostrom1clzzdsxs8g2ctnex4dme4pwlwmhsjgfm4fate4\n", + "\treceiver: bostrom1d20udnnmncnsca606uynmsyx9xqxe9720ra8fv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dzmpm0jw65hktgxq7uu4q087hgpm9tag6hlc2q\n", + "\treceiver: bostrom1wskuqwvaf9634w6e2959vejjgy6t566sq34ljy\n", "\tamount: 1boot\n", - "\treceiver: bostrom12g7utasjrj7274efgakdu474fj3extwfugw420\n", + "\treceiver: bostrom16h0ld0vsa03yg3ylvhy3f4rlm45n3vwe0ytj4q\n", "\tamount: 1boot\n", - "\treceiver: bostrom105v8lx7nm9f5vevczvkvr4zzmyg5t6pc2sd3sx\n", + "\treceiver: bostrom1yvaugena35tsy8e5ama4mwc5qegpx0qz6h95fl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1709z6pvf2zfpstfpg0gzx7ynhzjd7ltzkjz3yz\n", + "\treceiver: bostrom1zw8e9xysdzzyx2ahqhg8d0jdhj3tu6hafzfzt6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1a0j5kggusr6330ut53yrklkuwpqzfftuqx6q7c\n", + "\treceiver: bostrom1kxxca2zpv535nxmxnndks8g0lpqg8hcjdk6xfv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wqtycyff3cw6n57p43z035wwq08j6xl6dgusfx\n", + "\treceiver: bostrom18jmej4pg9pu89qfx0ejnjfuz88krarsct32at8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k5npar4f8thuw8f9asgc37r7gftdjw62v2046d\n", + "\treceiver: bostrom1dctr5yx33rpn6ypkcw3xlhnr48jhunxyftw6ha\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hp4fldang8nuhxue47h06rragd83a3sk45pyda\n", + "\treceiver: bostrom1g4wxykswk5ryzaefpwehj5xz0vsc7wkfsl5xv6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jtlxeczgaakga4mxlfz3fl6wx5zwfccg40keq8\n", + "\treceiver: bostrom1n9wp5seymgsezk83hu6p2xfngd87cwy2nuwv0u\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c07dt4q9rlt05rark6krfxtq6dm2frzwrzzca2\n", + "\treceiver: bostrom1uw5c9p9pctt9ev6cmw43sat0cnm9gu4lsp3d3c\n", "\tamount: 1boot\n", - "\treceiver: bostrom12t7cev3l42pdqch6j2lj7pujl2g2xausgf3ncp\n", + "\treceiver: bostrom1r8vyekjnpdcenatks2fwfvw5t7yz3shq4uxqnf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sa94a793d63agfelm9jqr5pfs9gtwtsl0ve7dj\n", + "\treceiver: bostrom12uq7s2pfes8d3vysv7djrs9qle4nap47r94ye3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1sxjhktsmrrjehra8y6tkp0yemp9329e4k22n6p\n", + "\treceiver: bostrom1497fcs4twl5qznsu3l98j3qrturkdmjwqkkvpf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1enerfqhgn9sz7nj4ufqxgnfwyfv8zprq7t5297\n", + "\treceiver: bostrom1vx86z4ypvf3jsutvy9yp4mh0rsn3vy6q02s82h\n", "\tamount: 1boot\n", - "\treceiver: bostrom153dy50w36822ahp5g0zs42pljjqqwufh925ngf\n", + "\treceiver: bostrom1ky33actq9gl30pp4jml4rm9a0c8qtq9gfr6nhk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fe3sc5cnfhnsv6yg3l4pnmdywgal2d8wvs5xt0\n", + "\treceiver: bostrom1ef0e5gx2nc678swx5q6344zh4pauxaztdzhlsy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ge42amv45yrx3ash6rn3fg0zzcvvv0m8zgd4ek\n", + "\treceiver: bostrom1rg3e57ev38c926aqkf54afwjpnudhduvg3keec\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xdjpwj3ydm8w6dfuw36plwuv4nfp0gc4lj3vc6\n", + "\treceiver: bostrom1nwf2pkq2uxe4dt2zhfntlyg730cw2wpqzl4g53\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u2zdyfrwgmvyt6ed7vkuah0zfz89qwer44s39y\n", + "\treceiver: bostrom1kasvauw405gk5jm09rh9m4002lm2z3skkyr5r3\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s2plvnt0k2z5auvzemd30j8g276l93www7zdgd\n", + "\treceiver: bostrom1t4hsvvwp0gq2hysgyvdxeajn5ssydps3z3929v\n", "\tamount: 1boot\n", - "\treceiver: bostrom1vw432hg3v9q3khj26ds7hz8nhh82yxsmrcpxxd\n", + "\treceiver: bostrom1ermktsh35vk52mjkq6eq5uxgdky7754vmjkwwn\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fggn95fv7yvph4vt8gyhlyjpqpp00hqdtt6h2k\n", + "\treceiver: bostrom1w4zqtwhckj9jqxyqzxsjkuluhwfk5wvwp4734n\n", "\tamount: 1boot\n", - "\treceiver: bostrom1utvgrw4zy90u3sax9es5mmyu59nqcgsn9nlh07\n", + "\treceiver: bostrom1pu8ehac4yd4gj0j9mdxfq0uqtl5cefvu3lkc3t\n", "\tamount: 1boot\n", - "\treceiver: bostrom1c9n67utln9ecu57wffs2g34py8rl7jfy7cuefw\n", + "\treceiver: bostrom1x2f2cltlg93vhnjujxstt8zrckf7w0va2ywgcg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wr34r06hta64l929dytd66zg5ga8274gquey7r\n", + "\treceiver: bostrom145pvyfwsaqxky637feh3lwuf0qdyumzhdz375z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1k2n45jwm2ar3ljc9antrrtla5dlrlm4e7u3yz8\n", + "\treceiver: bostrom1xnh686fa06w9dpwmm6ezxfkzhl7rtx0u244r5l\n", "\tamount: 1boot\n", - "\treceiver: bostrom15ymvalestg9y05d70nt40y20lkmxu7stv0ccu8\n", + "\treceiver: bostrom1t093fgarjjdj6z0n0en3mcq7xwx3zu6uvy6xxs\n", "\tamount: 1boot\n", - "\treceiver: bostrom150dkpr90jdedqta9hy2838dddrkak4qvj4grqz\n", + "\treceiver: bostrom1wld2mu70sh0pvx7jvd5hs3msar4d0xzrqnmp0p\n", "\tamount: 1boot\n", - "\treceiver: bostrom16nf839y69wes3yacvzycvygppdws3q6833x7wg\n", + "\treceiver: bostrom1xk42c5qh290rru7djmdqcvph0d0aelc4a6sjsm\n", "\tamount: 1boot\n", - "\treceiver: bostrom14ecd2guw3unfka39vwnxfcgsjm0l63lfl60jm4\n", + "\treceiver: bostrom1eyzahe7hntu7xqnrgp4uncy324yyt0q5dtjv8z\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fj5wuge24w5tm3s38mn3qgvuhqqsvu4ulw749e\n", + "\treceiver: bostrom1c24ue0sf2l00yjtcu8aqth52jduz04g8g86cvg\n", "\tamount: 1boot\n", - "\treceiver: bostrom1e872ga9svc8hxk7g83dcq52dsdcdduxzdf8vxt\n", + "\treceiver: bostrom1x23w3zfnts4lcsjm278da8vmttn2veqqk6x0d0\n", "\tamount: 1boot\n", - "\treceiver: bostrom1hdxxrmt62z6h6x8xtwydwsem70fhcn20yxkktx\n", + "\treceiver: bostrom1lyg8txla0kjtfdnvrz7hk9795plkuzlqc3qegk\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xlurnyeqj8a424htf2nupz4sfd672729jpeqga\n", + "\treceiver: bostrom1zrppsufpqwe85wz84rx3suvq6dnhjva2n2dh5h\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g9d64h8rz2drcngqfl2ma2z6xuuv5xerpnykq0\n", + "\treceiver: bostrom1q9ct6x5ls5kt3jvz966kekruuvkvp2e70ffhva\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m7ds2kuk0xnew9t873wd2e3jkeuh75s7xrzxha\n", + "\treceiver: bostrom18dmj57ym5dgkj76t9fzfjrqan4hpvpkzfjlv3c\n", "\tamount: 1boot\n", - "\treceiver: bostrom1m4864rvulxglmvm5m8hfld2tw6vzgyxks7rcqa\n", + "\treceiver: bostrom13ydgcwayysassa667rn7qwfcesdnslujfqw3c9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1s8usms2lzeha9u2cmd3cddr3vtukynru8cgu8a\n", + "\treceiver: bostrom13f6z70qjdgnn33u7xa589zd5eq9e4r5k2pe9pu\n", "\tamount: 1boot\n", - "\treceiver: bostrom1dn2jxeqs2zlnj5ckef2h08xy8q3k7yyktlyt2n\n", + "\treceiver: bostrom1wsk3ygqft8n3llkflg0rdfazmzr0c070hy5rfz\n", "\tamount: 1boot\n", - "\treceiver: bostrom1px35jkfus2r679qtv3284f2rnalwp3d6k72p0n\n", + "\treceiver: bostrom1hwj645su247x7htrcnrjcmfsh98utlxwkcgmgx\n", "\tamount: 1boot\n", - "\treceiver: bostrom1gc5gg6l43jeny53f5kcfxsrr2rd5txgw0sly8w\n", + "\treceiver: bostrom1vqyvyvfykmgpv2y6pjgas5r4s4nevdavga2rxr\n", "\tamount: 1boot\n", - "\treceiver: bostrom149nfnp3yam0ytw3nwhcl9er4wxgnz5mpgaxkk5\n", + "\treceiver: bostrom1t4676xaylec5lhhcc36yv4cft3ntulehrgqpn8\n", "\tamount: 1boot\n", - "\treceiver: bostrom178lk25e0rh9lcwu8ldvprfertgtlm7smr7hw9l\n", + "\treceiver: bostrom13r9kdchp7kfxq8vcsytlh8p8sn0ud5rfltmhuw\n", "\tamount: 1boot\n", - "\treceiver: bostrom175p56xpedhye0kz9ua3ccsgsd4pcajc04ku9ye\n", + "\treceiver: bostrom1nzu22p38j78gay8ulnu0d76zktzwcr7vvm2zp4\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jzfelqvuzyfrrwatc9edphdmal9gqdyw8sltnp\n", + "\treceiver: bostrom10mprxc007p2ufy69nandme0n7hc2r07vwfu3dm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1wd8662mm0vak4p6zv4jjysw9ttsm2mezk5048a\n", + "\treceiver: bostrom188yymw0u8puwruyzzs2ugrcnumalejuct0srxc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ucst888jvkfp0qzgwesqs26f9uj5dhz62pgllv\n", + "\treceiver: bostrom1vz3djtm4gz6hdr5apu4g5d69z58svxyr0kt8vh\n", "\tamount: 1boot\n", - "\treceiver: bostrom1723m85tp04k0v3w3vkqr3a4pu3wz7dt8u9e2ql\n", + "\treceiver: bostrom1r90j8ydquk3505a2wd84a43s2szqzw96u9f36f\n", "\tamount: 1boot\n", - "\treceiver: bostrom154wgd8qmg70cuqaszspflqc9tz03z82gt2yrd6\n", + "\treceiver: bostrom1xv5cxzkmfkm36vx3ul4gmt5sgsej2aypd3vgyc\n", "\tamount: 1boot\n", - "\treceiver: bostrom12qznnamf4ptvc8qn6ywm5wjjnvmtahyznmyalf\n", + "\treceiver: bostrom1u4d2vcwfj0h4a3mvw3tvup8fwdp597ypg0v8cl\n", "\tamount: 1boot\n", - "\treceiver: bostrom1e9rh6uz2a8qw3wwaedf8g2d8s6d8t9p92ljs47\n", + "\treceiver: bostrom1slapuzuja5g34efnz09qe822vrjys8gza0s2h9\n", "\tamount: 1boot\n", - "\treceiver: bostrom16mngktkvqewm4afpcc2m7r06y65403dqevxfcu\n", + "\treceiver: bostrom10kmed8fujy5pnqvv9a6y9jffcu2uvzjycygj5h\n", "\tamount: 1boot\n", - "\treceiver: bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu\n", + "\treceiver: bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850\n", "\tamount: 1boot\n", - "\treceiver: bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw\n", + "\treceiver: bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm\n", + "\treceiver: bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49\n", "\tamount: 1boot\n", - "\treceiver: bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3\n", + "\treceiver: bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8\n", "\tamount: 1boot\n", - "\treceiver: bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98\n", + "\treceiver: bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n\n", "\tamount: 1boot\n", "\n", "coin spent\n", @@ -4709,2008 +4709,2008 @@ "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", "\n", "transfer\n", - "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 1boot\n", - "\trecipient: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\trecipient: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\trecipient: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", "\tamount: 1boot\n", - "\trecipient: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\trecipient: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\trecipient: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\trecipient: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\trecipient: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\trecipient: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\trecipient: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\trecipient: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zlsmu65zf3hfzhwp2nkugf39f8jrpa28l2cga9\n", + "\trecipient: bostrom1pkmdt3jga70afwx8u05quc0qkzuudr8lxm6asd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x9gypmwn7r53rkkrnp9szwn56t3um8ydjdpx7q\n", + "\trecipient: bostrom1pgvgd7lszh0mm4vzhrwud4h7sfsfzpgyz7lj6k\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rq03g02qswr9lqzwhv2jnaz9vg88a86pt3y02f\n", + "\trecipient: bostrom1jwtwne35zczy9wt0n4srw46yfe3ur5z7uzd0zk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yqe4x3znsuqjqs0tkzcj6f69tryw49mttmnkq8\n", + "\trecipient: bostrom1gh0yf9tngc7gmveh0q7clf73qvqwrqn6axymvf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1khw2pg8ppv2twaz35nj7gsf766vx9uq36nyhgq\n", + "\trecipient: bostrom1jczu2lqc9tn3tx9tjts8dqqgpzq7agdta7w8j2\n", "\tamount: 1boot\n", - "\trecipient: bostrom15kms2d4urmwadnljpjqzmwum8vwtx3yxxxuh9k\n", + "\trecipient: bostrom150ewsdjjzv3lf89ws24j36grtuc8rqexa0n76x\n", "\tamount: 1boot\n", - "\trecipient: bostrom19r7aeff0r5xnatt6v07swa2pny7c0uucsgn0q5\n", + "\trecipient: bostrom1aj6swpj9kzhqqzadypgy8efcztrxcrfk3087s8\n", "\tamount: 1boot\n", - "\trecipient: bostrom18a2mlj8kq9ny003da5lsc275yz04ttzzjjhrmq\n", + "\trecipient: bostrom1gynv9zuvcx77v58jdefv9lve7r39qc57wlq0gh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lgl7p6s0ndg7n5jedqjgmxh2udwtta4sh7rtgk\n", + "\trecipient: bostrom1a9z6x2w2m98d2f8p7402zu2wa5pgy884x24ezm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yewqaleqj38qpltr2ddvvh7melq0kw0gk24tz7\n", + "\trecipient: bostrom1r68k2jsqxwnd67qcyvz0tusjzgd02eusrhqwz2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1js4s4wn9c4lzuu5eqkcupf43lad9j4d2tq56f7\n", + "\trecipient: bostrom10xu9l88v6asa5hx5dta3npuwch3ru424lqazyq\n", "\tamount: 1boot\n", - "\trecipient: bostrom14uz6ezvc4hzhj0wd9g68ulgsp8uxyky4p49xcu\n", + "\trecipient: bostrom1nwu7t3zkr6lmdv8p8h678pjkpj3tasdttehdvj\n", "\tamount: 1boot\n", - "\trecipient: bostrom14qc4u4hpqjqegr0fy3crw6eg88sf0ra9vvmt5z\n", + "\trecipient: bostrom1783mzr7qg4l4xvheesmv9nkesz6mcn72d7lhru\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pm5wp6ytgvnv369r90dk7rd5cstdensqeyj3qe\n", + "\trecipient: bostrom1873t7da09taumkd95etmvsq650hk78sj392pyn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tsf2f9hqj2jkhy06qyxjf26nyf0nwr7tc38ap8\n", + "\trecipient: bostrom19ryhk9692hterukzpq7efcvkns7ccua4kcf9hw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tlhlzkj8x0u89qxthmjx307gkpqqa8c2xdslcv\n", + "\trecipient: bostrom1p6sd3ru9u73ulm7luc3thwl53n4fupg8yvyqkr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1v9xr20dscvczhtq23xskzlhkkk607he5mdxvzy\n", + "\trecipient: bostrom1xxz0jfxswpqtg60va8l6wgu2zsyg237cke02tz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ejxcyakmgtrcx5ve5c8zt4k409rlr4s69y6aek\n", + "\trecipient: bostrom1k88adk3enw85smyumcr9u24y5zpxdap4znwngq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c6x4n952dtdanmfhpgmgqyzp0qdp4d47rkvpk0\n", + "\trecipient: bostrom15f6rqmc5w6jurfrk7xvr3gmqmc8zgl6929wju0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sa3j9n54ath0xmcn5nfv03xv6slkkxff8zhpra\n", + "\trecipient: bostrom1fqs05m3rhtpr2526p9qfz6fgaayp0gmuycfx5v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kwx9vqlzpr64ha6s00m4zn938krs3et5le2qtw\n", + "\trecipient: bostrom17r05hh26uht0rxajhu2txtxejx2ga3nl5jlfhh\n", "\tamount: 1boot\n", - "\trecipient: bostrom103lgm6eq8kxlujwl7pqzsma0l89cw5h504u4k0\n", + "\trecipient: bostrom19q3kyga6wydfcgvhynxemzr9ajjqcjgg9nzyfk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1slqyxc9ss6s36ew9w289lg047fnmv0zegdfg0l\n", + "\trecipient: bostrom10mt6mw8p5pll6h2yspjaqdq9y3js0pgy4gn43p\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mvk58tufhdh7z8we73n4uf5fkafwnq4yvzg6g6\n", + "\trecipient: bostrom1gdcxhvap7gl8xyg8zs77ee03edjslfq4xlnf6x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hhxzpy9ym2f9g4k00p3kqu50ze067r9k7pxufg\n", + "\trecipient: bostrom18yz235pp777rvr2wv62qlqmd2zmpu4a5uzj9k4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r878ufyqaja70en4ft9lcz3rhxadu37xv2c057\n", + "\trecipient: bostrom1gghry9skawq9s69ptrd6dcgeykzgwxa2lvpzj8\n", "\tamount: 1boot\n", - "\trecipient: bostrom153rkd4vu656e5lv3g2mzt2rqfsha3c7hct4fye\n", + "\trecipient: bostrom1j5wp8d30zt5gn7c9qe8j7enexg2wsuuqwqc8gu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1se4wsnmp6lar8afdnnsxdvkrcfnkf73hpl7whk\n", + "\trecipient: bostrom1u09l3za8dxvuxs93d6lvd785vyxdwzdkdr56xl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t0784zaayvpe2qpm6yt3k2skkrtal7dlme6k4f\n", + "\trecipient: bostrom1lqvs6yu9t0fgkffaa6pcpkclwrhpestuqdxyce\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vqamvjh9u5a2u2ksuxtg2xzew8k4hjthzggmf7\n", + "\trecipient: bostrom17kuen92pt3j32yl0xjseeystwqvxlakaxnmhs9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ekh0xkhef3cv9tu6fj0chjgq7sulrdefruw6kx\n", + "\trecipient: bostrom13wh7h9wdpn5m6lveqp7f9y6jl8kkrn5arz88au\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jjjz67ue9nzl6mazw86n2jfsqcsljuvnr97ar7\n", + "\trecipient: bostrom14e7x66gtngtcxe73g6tvdy84wefzwwnhsvcsl8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dhjl6anmvv3vuh6zyaf86v3p3sf0deamw9ssjc\n", + "\trecipient: bostrom17sqyk6vgtv9e98qhte3gq2psj9ewte3ehvvx3z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1aehnyppzk06wytk02pzvkmd4cd5htv5s06wpss\n", + "\trecipient: bostrom1radx6ajpyh35mymxxsl75alqm9fktxrrthxpur\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pd3acx8lttynhghm0thgshg7wxrv4yt6hjmnfe\n", + "\trecipient: bostrom1wh8j3s8gzlcxk8ejzgh7uvq03kelu7zaar25ek\n", "\tamount: 1boot\n", - "\trecipient: bostrom126se6s2ft4vwkv5slnuq4l347ms4el9pjvyyfp\n", + "\trecipient: bostrom1csfcj4ykz26aycexwua252gpymtsjrcwxufyk6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1em5ap0st5u9dhagngm4np2g36g6m69xle5xtu3\n", + "\trecipient: bostrom16dxnwpg72wszf0u0llzazsu08vulg7atmh2pmz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fdumyl6lne5gd02ked6xp5jy4g0fmnsk22cr6s\n", + "\trecipient: bostrom1w4d5nvpnyudrz9mg3a8yserjq2r9nmepvrjh4p\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lcenkqpdp3dmsffmd8xez7apm3we8ky7vefdfa\n", + "\trecipient: bostrom1dn7sdu9upnq4u89j9xpd6jnlsj9pkawzd0w4ql\n", "\tamount: 1boot\n", - "\trecipient: bostrom1y80d3t59yztu3uj67ak0qwu39m8x7ka0g0rsg2\n", + "\trecipient: bostrom1xyzdxaydpv6gekfktge69383r3qx4t32mvlw5z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tweka9vefsp0rau8htjk45uukn324ua4rtmg7p\n", + "\trecipient: bostrom19wexkplyvatfz6fyevlkptnq3s2deap987684w\n", "\tamount: 1boot\n", - "\trecipient: bostrom188q6rk80h9dhvyqdsvwhyqe6afl4cq4gv35l5v\n", + "\trecipient: bostrom10w75az8kcnt0zw8zcaa4sh9ygdhghpydr4rszv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sh0dam8jdl7p5thdjgf29sne7jyy5rfaduqdjx\n", + "\trecipient: bostrom1put45u0k0qjecr0234tmleysapw0xtfedwwsz9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wp8ylq4klv0w7d6h5u049mnk5w3h7n6a545wng\n", + "\trecipient: bostrom14usfh7dtfk35fymrrzh4m0wm6adcml8dtdnvgr\n", "\tamount: 1boot\n", - "\trecipient: bostrom19v8520q39mr26m0g843870kuj8nq39l7y33eeh\n", + "\trecipient: bostrom13ej63hl3ud85vs0lrcj89umyjj23rrhuhvzdux\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vksek6w76sz7we3s7ag9ea7dtcp58gusn49gl3\n", + "\trecipient: bostrom1zhur3ey3w8c80xdtfgqc6h2jxujpav4lrfwf9h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nvr537t5qmg25jjdfzg26tpzqrvn548ccs7m6t\n", + "\trecipient: bostrom1kvtc2sqy4qls6h884z5uxjht65ltyuqfccd0ua\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vfqa8pc4psdk0rqr6v49mch9vgann0dtwncv3t\n", + "\trecipient: bostrom1vkmmw9z5nr7eflknqgapssmj33uuxtpj5fatuj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h7eyrpqv56e2ja34r6v7ufl7akj2u8lffya7wa\n", + "\trecipient: bostrom1pkey7e4cluj0834vvxskmrvjqq4qf7rkdm3kpp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qh5n7txscgh8mfdsdjv9dfrctrpn8rne37l37e\n", + "\trecipient: bostrom1n7tult5ktrm59l6jfchjpfj6xdcyglv73slam8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xjfpvqeckum8f5mq68k33g3fw4sa0tw9jevnek\n", + "\trecipient: bostrom1a0zkk7kkrqazh3ssgz548dhlh53jt6e2czvwxk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xun2mrzvecfxztsu6ygtwrsff34xltn5g2ckup\n", + "\trecipient: bostrom1uk3fcslrzygpmusqz5yx0fymwyf5862u3gutsp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lstp05wp7ey62cm6eqpled0qsskg3t883js5uq\n", + "\trecipient: bostrom13d4gqy047q4mw8dvq53pffup8ayujlmktfwysm\n", "\tamount: 1boot\n", - "\trecipient: bostrom132fm6704p6gtmgatuf27658j5v4yn096e00srj\n", + "\trecipient: bostrom1vpjq60s62ke3rntcks5l4jcxht3an6d840mwjh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mg2xktvjeueqxuhnqw4wc5ttsqv8xzfnwpptwp\n", + "\trecipient: bostrom1s54k099qxe22mnxnal8et572um5ne7f75zyapy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tvazs99r4p4uhyy2dj2q4xp54dcjsdtv0gwvdv\n", + "\trecipient: bostrom17clpjxe7pgx22w3r65apch5k75rpxv6y709emy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sl5yxfy36qt896z54nyn5nr8rkk2exz4cflhpr\n", + "\trecipient: bostrom1vk9ec4z82yc2njsyh6hxmlsptwwal7a75j9tz8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zfqj8lpuj4h6cnf6fg6lnch7f8d7jal7ler4nk\n", + "\trecipient: bostrom1g437fxncnap2dlg7yxydag4a3wuwxsgmkyyhv2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tn67440wmtnxhzcchfwupy3a786v4s33p6jglr\n", + "\trecipient: bostrom1xl8fu730cmlvnvugp5xvaqma0gtpv4nzactffw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tcuvs2ryzmpkgl5u7cqax2cx3r0fsavpkmc2z0\n", + "\trecipient: bostrom1wysr237l8lsdcemerlyhps9pq7y0k4yqyupckl\n", "\tamount: 1boot\n", - "\trecipient: bostrom16t9akqwgtwfhvc90ltctg72jap4p6w3k6qx2qn\n", + "\trecipient: bostrom10mfqvzjt8sr57vrpt0zfqf0lqya0rdkqjj5j74\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w0mpyfm9kfslquvwnlt9edu32x00j3gyv8v0kj\n", + "\trecipient: bostrom18aplapdfnjxkg02dm869yfycsjzl5cqr6swqx6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fmcanu5q9z2m56uj72xux9av2ntwfdm54nkhm3\n", + "\trecipient: bostrom1zmvwylddsgqyvllcsetq5m409l5a3vspms5wdz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ytzz8gd2x75ecsnz083n3408hlm8pfjjr4crkm\n", + "\trecipient: bostrom1r6rj7gapqct2g5jdqhjgg5ersn6jcmkmrq477r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tlehwsd0paf87a0gzvhnxdf88fes92ndfc2d3d\n", + "\trecipient: bostrom1j6z2w4alnq06n6jn5kc9rxkc7avm88pu2g7fys\n", "\tamount: 1boot\n", - "\trecipient: bostrom19vzlkp7udu92ykha76nkm88rsy0r7p5krjt5yd\n", + "\trecipient: bostrom16mvylptyn8jcepe96g220wrnezv05j4egk3cup\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dxarkqm8xajtte2jd8hfxk7j8905gydwal9s7x\n", + "\trecipient: bostrom1kjcqcdmzrht8qmhhj8ethnnmg5fxq6v3htm082\n", "\tamount: 1boot\n", - "\trecipient: bostrom1krvh3dk4aa2fwhz38zr82vdsx8d5ygprk8vxwy\n", + "\trecipient: bostrom1xuk4h9tj0uu4h3t7ykkr020zlzvv34j7ngdaq4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wdcuhcpuswzvwdn27fhvmw45m7qe7kgpsu9cgj\n", + "\trecipient: bostrom1u2nhevtfwl7fxjxdp85frk5a06nrh5764xrhns\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sym0t6t0fejcamztrzwm3dgqkzl7mqezr57ge5\n", + "\trecipient: bostrom1wcuwxftlr3rtf9thzrxu0wahq3d3frjc2jau07\n", "\tamount: 1boot\n", - "\trecipient: bostrom10ueazd5c6qm7a8tpx8a308mx3e4pyv89j7ymk5\n", + "\trecipient: bostrom13rjj5lehf2yfm4vpeh598xsuuf9hadl5n4a0ed\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jxsuppsey455zpu2y2z97pa86qrl4k7gs2sfqy\n", + "\trecipient: bostrom1sxs0m05m8twvgl3sf9y8pm6np4w0kmr7emc80w\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a0lm43fef7vg2dxx69s7xappjlnwavtlskawj0\n", + "\trecipient: bostrom1s99u8qq6u3trxcyq8uw7g4fh5jkjkdxge0r36a\n", "\tamount: 1boot\n", - "\trecipient: bostrom18cl0ty4v9rdqerneferk048e70qd28cps0wk9m\n", + "\trecipient: bostrom1t2am49htxga7evx0dgm0lzfxhlhmqwnncggrx7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1394m5r6a42qrzg6eukaaq52t4kmwh274efvj0t\n", + "\trecipient: bostrom1mld677e80den86sqp7ye3u5ju72uklz9sx5cvf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gdy07av5tueu55sayfqltddjummqf70fhfccgf\n", + "\trecipient: bostrom1tkxrcw3uy5asfgwpftnfd6w4qn7scpsjjnzdfj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c5aecuyv9wf574kxmuc2h44sah2cf0xnjr6hx9\n", + "\trecipient: bostrom1mtgxv0d66xnwq7uszp3a9fkw6rfcden3v78ulr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1js972uhs4ydpjge6x4k9d9hfzac38x8zme5qyc\n", + "\trecipient: bostrom1tepjmq8nfjg0l2f8t0vaeagpjwxt0g6dlupxlm\n", "\tamount: 1boot\n", - "\trecipient: bostrom17dz34w52nwn6xdeatagdd9f6uf7tj0purs8qad\n", + "\trecipient: bostrom1uk8zdllpaxyamg26amhgexc5qtja5pvav7kg0y\n", "\tamount: 1boot\n", - "\trecipient: bostrom13d4085jaxuy5grr6h0hrzx9rzuuwe6ac6pdft5\n", + "\trecipient: bostrom1qfwzwgu44pnq34gw2ry9hpnr9rnt4clkza8wwe\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r2t0qe6ut3q3mtumsx78e3z7v9anjx79dncdw3\n", + "\trecipient: bostrom12ck36hwt0xv4qeg0rqjeykwkfuvz8uscrnq96p\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vva7fuyddhr8rfl53993l77nt7tye7urwn7n28\n", + "\trecipient: bostrom1tma6emracch0s4gdhtffa5alsaarpnc6h820fl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qlkvuc4g7gwswsnjgucl0kqu6u478agyke9gqn\n", + "\trecipient: bostrom1z9aay4l4pgtnujdcjsxd9lnrtskqhnt07unl76\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cujrvgjhmvz9yrh7qgcm7y5dhpw4g3j2yn7dvn\n", + "\trecipient: bostrom1pcwdkcsje4ghchhuejuat92sg8vq2ucxy9arsa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n3h3zykntm7et075gghpqhkxa3nzjqekslwpc7\n", + "\trecipient: bostrom1z9r94hx0dsfrkapp8r5etazk2spwstzd8fq6us\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vv2dffvvyewu3vddr5t3f8fcd5gxdcx35h6r4t\n", + "\trecipient: bostrom1yn9c02mmf4nudxck97dh77a0aqa2k5lfazg4uk\n", "\tamount: 1boot\n", - "\trecipient: bostrom185p0ynw7vug845qed0muv2xrzksfdkr80hw0mn\n", + "\trecipient: bostrom1hq93p4sz8ewmuu9wcnrurn9w8ythsyhmxxudqc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1p4v4rysht75hcparzlrckhyqv8rv9qj5cpzw3x\n", + "\trecipient: bostrom15rdm2u9v69nw4d08f2qqq700z0jxqulfqckuxj\n", "\tamount: 1boot\n", - "\trecipient: bostrom170mhk7kh5xwt55pk3u6vtzfq5z9yuqj6sufama\n", + "\trecipient: bostrom1uq7yve8eywnawqhtw0csf8rd95arhc9mqkdwvd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gqvg2akzzyf942jtks0946ugakhf34adr7yjxl\n", + "\trecipient: bostrom1x8q9gcpaduqlm43upqg2ns2eah9nstzxsrzh9w\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mu7swnaf4j4dqzsxhaey678w82zje04nj50fem\n", + "\trecipient: bostrom1gcjk4ydxjw8x3c36she4luggqpjkywhjh8ncs5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lv4pj88sda6nqezv5whglefwqzpdwfa3wvj29v\n", + "\trecipient: bostrom16wxqeclpd5lzm3cpt7kh3anhpet8v6jcl6qtyw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ma3d47rv8ul9hu2yygpxu3qa34wrwvhd4zl43f\n", + "\trecipient: bostrom1zxd0t6tlp4ryrav26wsg3yzxfn7uqmz52qsvt7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g824sjlynd63ckx207768cmn7nv5dv7qxv89nx\n", + "\trecipient: bostrom178d2relx58yu9gumdm5hudepujykzd9zkvdj4r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1492knevw5pe6429vjz32w6e4zl693a7e8vr0v3\n", + "\trecipient: bostrom1etvj9n5pgptde9werj2cxwp4ry9weer4f5cyrp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wwlmpyat4p2mejg4nja78ruj6l0v6eh4n88xxt\n", + "\trecipient: bostrom1jn34hsajz2jwzzsh4af4lce3hyted8elahukp5\n", "\tamount: 1boot\n", - "\trecipient: bostrom10awphjarm4j7du2cdm7zrhyw07hpc53x03lmwj\n", + "\trecipient: bostrom1eemjzdddu5n7gwydh77zr7whmylg80j2v03z7p\n", "\tamount: 1boot\n", - "\trecipient: bostrom107fe0djy7j9ty557c3cvw69d8x7zej8gq706qd\n", + "\trecipient: bostrom1xf8xfawzpquulwp0f6z0kfj3fss4ytnffrvlvs\n", "\tamount: 1boot\n", - "\trecipient: bostrom1y3ymxalgm6rueg5kh76k4f46ank69zu9htlyv0\n", + "\trecipient: bostrom1ua7gnmcusw3aju0hhajen4dsgardgtx5as2ult\n", "\tamount: 1boot\n", - "\trecipient: bostrom17sv5nk50l7y73dpx2546ulgx4wlk42tz498lh2\n", + "\trecipient: bostrom15fajgtvmj9h98983uhskszx9p6x5h0855cgugs\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d6n3qjx5zuu0960sxfz8w4gfg76cspuzzdfttx\n", + "\trecipient: bostrom1pvmfxq9wq2425xa8zxncv5rrhm086q8c66ta9t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tsa9s0xdmz2d9r0w4wgg6r04qcmlmqmxcceyt8\n", + "\trecipient: bostrom1r3cpd2c2hhv5qh9hqzs4mntxgrzskpy425kqu0\n", "\tamount: 1boot\n", - "\trecipient: bostrom17x95r6vzgw6dkva8stcqcdpjjvpugma64h5and\n", + "\trecipient: bostrom1gjq4fgmxdcy80aj0w7whrrnmle8me2aetnelua\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q3cngvp0sz9g9gvk5kw4h2g397s65r38sm0xft\n", + "\trecipient: bostrom10nug4mawjhulqazac2u4fxzqmnjmputwslvj9v\n", "\tamount: 1boot\n", - "\trecipient: bostrom15m0925vue58qvqwq2tkxkymmlq83ccp83k9r86\n", + "\trecipient: bostrom1mngmkfhs5z2vz69dc3vzwykce75k027wmcgdyf\n", "\tamount: 1boot\n", - "\trecipient: bostrom184xhu6v2293490x52v6sqw8n3a7y0vkhm7q3qz\n", + "\trecipient: bostrom1jeljmyn972scjc0ua5s2pghve6sv34mzsyydg0\n", "\tamount: 1boot\n", - "\trecipient: bostrom15yxdc6c3fdgsqa2dytqmkr6d08jyceasd2h8pj\n", + "\trecipient: bostrom1dqjy0cehwsp7xkmlc7vdug4z2dcjmwe5994vxc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x20j0yt53ztf2pyp0wgc6evh279zandnqmluu7\n", + "\trecipient: bostrom1ctgdt08qjj7ye8z70gaacu7rncd0wy4yfl3qw3\n", "\tamount: 1boot\n", - "\trecipient: bostrom13yfmxyc3kaklmtvd5h757gne0xgrp7xw3d4vt6\n", + "\trecipient: bostrom1yt3hn5x92qmy7jdneuwxnl25d9vsrpppc3n2pl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pje9sayev749mskveyc3mwm555uk59zu83kwgq\n", + "\trecipient: bostrom1znfv4scakeamzeuttjt0c5v62p2evr8hs75p6g\n", "\tamount: 1boot\n", - "\trecipient: bostrom108parfftwtmqzuu4udvgggr6jrexy97dgrvv42\n", + "\trecipient: bostrom10grawwzrfte0vwvkz68f846l2apwjf4gxmdd38\n", "\tamount: 1boot\n", - "\trecipient: bostrom12k8usz27j2rz3yd9d4zpw9r42jygucmpfvsps5\n", + "\trecipient: bostrom19q0vq4x6fyjt3gw0h0znwyy7m85zgdjtvn5j2g\n", "\tamount: 1boot\n", - "\trecipient: bostrom1v9rw3t2c5qh5plt03ddfhqxxjaaf9khwqzrg32\n", + "\trecipient: bostrom178q2xldeaq7qc9d9x7v6hp3l6jv02m98m4wsmq\n", "\tamount: 1boot\n", - "\trecipient: bostrom174ywlwkr0g2dkx7ntsczm8cy2ucjx6euxszszf\n", + "\trecipient: bostrom1sz5sl9zhqf6gu4juenvksprgd66jyxfw06s2n8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1aymg26a33wc0ugt9cgrpytlyxwxrz5wm0ad0cl\n", + "\trecipient: bostrom1uvwgpml6y59cgdhuj9jep4k793zt75nj73n9qd\n", "\tamount: 1boot\n", - "\trecipient: bostrom134u2w9famknhc969f7zp9wlp7zs5d34c8ufece\n", + "\trecipient: bostrom1q5lcx6rj2249qar8wz44fvwz7qzc8cr9jdvfd0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sqp2c72knm0wgjtz6r3edadvs7emewzl57zqnc\n", + "\trecipient: bostrom12uttyfrk644ev3svycpdmgt72mwf3rvre4n2nr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u2mwkjslftrw6kqvkpn39zd4s67shzj9jx8gw6\n", + "\trecipient: bostrom1m2xpnh3ra257w4p3dqdpxuk5xnz7lp3jqguwgp\n", "\tamount: 1boot\n", - "\trecipient: bostrom12dyx59tjfacu6dgv52n9ufy48htye737xpqlxa\n", + "\trecipient: bostrom1lk7rwnw8w7tcm9g77764t45t8l0tfxg92t2p9j\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lqpprsd4q46e2c05jlv9r3uvl29tnw8ntdx2fz\n", + "\trecipient: bostrom12y6zds7tx9fyj0296el07ndww7asqygcfsjnvk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mkfs5ne9pl37g9r6r56qx0ze0x2wkfu66pszd9\n", + "\trecipient: bostrom1xt2ku408tqcml35fnkc96p32zgsdsk0ahn967r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lpxr4fy4hjmfkeqlq2mgfa6tv24kkd0savqy0e\n", + "\trecipient: bostrom1d0kwgl96ak0xwmzlltsmvyxcm2ls74ktww34u8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w5q5jyusg7msv8j74ajm48e67nmm42nmpuuc20\n", + "\trecipient: bostrom1gumd3adaejgnzzzft8cqex5juq5zy2jq4tvdtl\n", "\tamount: 1boot\n", - "\trecipient: bostrom16dhc4ay0wl99ynzruvhnyvqmed6jsrzcnhvwc7\n", + "\trecipient: bostrom1d7lknng2whr2ygg9lplwcz7ghnwzd948gf3yhq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w9cu2h2s38q2hehr09ulxcsg042vy8cw55qk6p\n", + "\trecipient: bostrom18nmdxyflht3w9fax6kx5u0k87r4thy27606s0v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rd0lxxstuc6q54qhtn6dgdyqfjrrmz2qq3jhx8\n", + "\trecipient: bostrom1nthl03dc9nywkl3t8gf8m5gegme4dnj0ve47gy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tjah0yxy0hz7ln6ckfktmewur5kpwuse6wa6cp\n", + "\trecipient: bostrom1an69dy8fcynu2jf6svrxhhnv3ng0hqjamwrmma\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a5qxpkycl306jnf3dd0xnt2szlf66s286mdqcf\n", + "\trecipient: bostrom1zlejqn3q67x82s7q9r3nt699h5qe3klazvlqtd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a0jgs4ujtt9v6ak2vl4ns7ezy7etev2jh0swyd\n", + "\trecipient: bostrom1cj03t2qpcr369l0makk92k57jp0fr0ehpkq6qa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q2q45yv8829xa2mm377spmawn4lvau9rhev658\n", + "\trecipient: bostrom1vclngs2032h503mr5njxwszus4kujnm2a5hy2w\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ew32852a2ndyl5qscaqv28556u8m59ha6svgz5\n", + "\trecipient: bostrom18tpr568w0yznet39namnvr6gkd52js0hapc5x9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uqzf4x63drkmv4vsyuk0ghcxlmn3ju7fgmrs2x\n", + "\trecipient: bostrom1dn0tuap6p4up8zq9rrxl2hxaagztqdf6296qrt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1j565parn3n9atp5m0rp00kc86k3zuryndpekge\n", + "\trecipient: bostrom1rn8t4xfhr7r46rvkfgr38ds735ctveqpqrgkzq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g882nurun76dphzvmgfpa45c8u2qfhapqsg8c9\n", + "\trecipient: bostrom127eagjfpaveagazclqj6qd40h5ffxfu2suwxme\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jt56aud8xu959f0vp6q6sk4rzuvwlvrx29mn8p\n", + "\trecipient: bostrom1twuk357xcxwj0tqh0r8ja282ff936rcen5gyqr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k97pykvyg9m35ud2ej6aszxqzvka3t4fuacuuc\n", + "\trecipient: bostrom1szqqzafdl7m34ua0j7drt6pwr84g9pqksqjrc5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1584sjvepxayfpwe0zrytua6d5f4tgwfunhfdk6\n", + "\trecipient: bostrom1wsh8gu3z75l8wy43num2puegyu84sdy20pj4my\n", "\tamount: 1boot\n", - "\trecipient: bostrom1svgf7ktp2u9ssn9qp3qtr8rtkmd3ukjvjk6af0\n", + "\trecipient: bostrom1mwlc8ahly7kw5wpmvrc7x597ut844xar7yp39l\n", "\tamount: 1boot\n", - "\trecipient: bostrom1quwhw9ltgy2t6wrep6gfx4xv8fp6ymcj8g59n2\n", + "\trecipient: bostrom1xmctcwx3n2arrrrue8gzlsfs0a7myqnhsw5222\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hxl9z70ncvjuvaa4e2afgpv58c5x4qfcnf7rtt\n", + "\trecipient: bostrom1wmk2hmav3wea4rhe6tfuecqdk09d9mu9gkksj7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ghy9u0unj7emt6xqtvy59e6xew2lgt43pglrnl\n", + "\trecipient: bostrom1g2lmhj9jyqwsrjvpyuknsjfp7xlajwp64nk9u4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mv0ay6ynzzgfuzgu77jvdc2fywwtg9n7p8stdd\n", + "\trecipient: bostrom17hngm9snw5wptllhwcxtnnr3s5s7mvy7htyvzk\n", "\tamount: 1boot\n", - "\trecipient: bostrom10n52qexzxwxhmy5ehp2n8pd0l2fzsz6le9rv9z\n", + "\trecipient: bostrom1w9r7vvhkepxgmju2m5tfnwdnf99xdztr8ak2g9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lmkqt5mm5jwawqu3e0jw4cj27jkvp4mny5rplk\n", + "\trecipient: bostrom1eqdlcksfz353mj4m73nvd3amr3cg3n4pkumz95\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eavqyjvy89y6qcsp05te8fw87qsf877xd8y55g\n", + "\trecipient: bostrom1a73432ykufe8h2vwjrqr0dfkxhdurs4hxxfk9q\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lutjmvnm7ra6z4h7xcq3mrfexsjy8dymaznhx4\n", + "\trecipient: bostrom1ve7n538nmswptdwmhfemxy09ex45h7ey8hkey6\n", "\tamount: 1boot\n", - "\trecipient: bostrom185vk82quust6p8ulafmz9yupemlsem346asdat\n", + "\trecipient: bostrom17ccefdz0qjca0qm6znvcqus6sye25lswpqd20p\n", "\tamount: 1boot\n", - "\trecipient: bostrom18qtgz0de9q72uz2m7n9r8xc9anc9zk4vzgdh5v\n", + "\trecipient: bostrom12wzpn0ymfwlpcx3k42qw504sn8cjcrhj8ew8vp\n", "\tamount: 1boot\n", - "\trecipient: bostrom12lkwph2w79ls9tefjjj27l7w70hvvecp8pzcra\n", + "\trecipient: bostrom1sx4r5w7trrehymfann37dwcr58guw5y0yhdx6v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fxz2esr50d4e9ctnn5mh7px8lnt9vt7exhudt7\n", + "\trecipient: bostrom1qr0nkr4095xfzd9adhyus2gf09ju8y9vgj6kkt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gga3uqn2jks5wrvl6z4ucc4hjeuecgsfresg4k\n", + "\trecipient: bostrom1x7t83pny5vj2pp0assal8mmem9mnzdt9xdtsh9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fnxcx00vuuc5xdwm2fzrm7n4xmuvalvah79wsu\n", + "\trecipient: bostrom1fn4p8gessrg55vspaxy7ydf48du0s62zxh7y2n\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gtncjd9cs4cgpjwq7g7lm2kw9l3eqn4yhu7xq4\n", + "\trecipient: bostrom1yfngh9fc0wjcstcpsl7wchzmnhws6n3jpjxyk7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pz8gn0dz62t63s8tex3t7n5cyexsvgqf5vm3nj\n", + "\trecipient: bostrom1nvwvw7qhvxef40p8ymy8tmj6w033z7qzlcvqam\n", "\tamount: 1boot\n", - "\trecipient: bostrom136l24v2zdpj6wmy5zqctutp78n39f8lgvumhg4\n", + "\trecipient: bostrom13u7fdv93pz69ve4huakftnuknwaeaxvczkx20e\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fsm7qwvpvw4hcl8zmqda2d62mewd6spyv8grmn\n", + "\trecipient: bostrom13uejqe2sqr3daecmm8vyhwmntjlzhfye007wf4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dpv69xe9mxeflalm576uantdkpnqhvngut9770\n", + "\trecipient: bostrom1swffxhtd5q9qd5dtl4qgld5lg45lnvnm5ul6az\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xrcjgv3ujep9tp0md5nq0u5899c9cugxu8skew\n", + "\trecipient: bostrom188fzwzfrpxatqlyz4ascmuxph7n84x3rqqmw56\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rqw0ls2r3hxxgf4yx8sks8ly8g7r3s6975zlcr\n", + "\trecipient: bostrom1uh7nkhz67nlpt8r6xrw82mlpy52v4zjdeywynd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kkwk6vuwzpznh049p2z0dkatwzrrnr9flym8la\n", + "\trecipient: bostrom133nw2rfwhd4jk8rkzl7haha794qfcuezcddr04\n", "\tamount: 1boot\n", - "\trecipient: bostrom13ewmrehjs8r2n7cvdc7vqd5jgyuz6j06pyyvzd\n", + "\trecipient: bostrom1r854fy2zm9x4njf7dw3n6sc4ghhcgj3c50qdml\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w67ns9p2qumpjs70p7wmyvwxqzzmgztt6f9w9r\n", + "\trecipient: bostrom1lkhqcvettfmt8vqwv086s6q7llu0at4el2j05t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gclw8ua87tuja65rwkmk8nh5j75kpc4x6nz828\n", + "\trecipient: bostrom1urp5xjm3s3ujuap5ffe3wlry99y9zvhu0t6eg7\n", "\tamount: 1boot\n", - "\trecipient: bostrom10cqukq7f9w3yxd4cj2r7cndujqd595ayxlvrjw\n", + "\trecipient: bostrom1fcxk5ez2au8dunkkq4r53kmv0np60mf7xtpzdu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xm7txmvp4qh57sgtv5fpvqdxupfl3a0hcrlfph\n", + "\trecipient: bostrom18htxk7d5vc7fwmek4lqm8qfdfgpf4u0p5s55rx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k0cvy4pd9tf6q44pvmdkt6edpntgetl5mfsft4\n", + "\trecipient: bostrom1j39fp37rqgu4fvxd82fhsdxjpe7r6ekzgqj6jx\n", "\tamount: 1boot\n", - "\trecipient: bostrom17rrlhac054zrzzpczmfcmrxfc9d85ak6yze9rd\n", + "\trecipient: bostrom1p3f6rdtj4zdux962qwzvqmlclmhj9xd42h0ed3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d5mlccnw4hs0w880yey9lda6926axfe46tlk4v\n", + "\trecipient: bostrom1g7x9gccv0zsg5mqup8m7hm40zul6ft03lgylnc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fwsckpml8e4369p00ha38jjel0e3jaz2v3nh0t\n", + "\trecipient: bostrom1eqcn7gu0secln6klc5qdxp02svj65vj3cl3365\n", "\tamount: 1boot\n", - "\trecipient: bostrom17xmpl8h0625twaplrgvvpx6tne3pu35jrj0ahy\n", + "\trecipient: bostrom1pje66rjuy8mjyyqnkrvzjc9lrvax0cjwtpf0vq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qvgguzy047hm3kjm5xe72y896ngk6nnp5geggt\n", + "\trecipient: bostrom1cnck3ud4fh9dg25p9wtjhprnq3p0ptuf5fpp8j\n", "\tamount: 1boot\n", - "\trecipient: bostrom15s8ds65edq4x4gyetdjs44rhkzwa0dhpeacd09\n", + "\trecipient: bostrom1xr2uuj3vwu8q4745gfpj2wjc5yvvmhqgssh7r3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h8gj9ekjreyk694vysseawncxsa8paucu72yt5\n", + "\trecipient: bostrom12mkgdlfc42th7nlg6a7lpjj4q3fwj05gghmdv2\n", "\tamount: 1boot\n", - "\trecipient: bostrom108ljh53y3gp9xvh95zlsxh9xszumsmdy0d70x8\n", + "\trecipient: bostrom1uesmlkz0eks8jgjkmqj4czkltxvyhhfezgpzum\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jrwsmefykjcw5cgqxckwtaejsukfdfue0rn58d\n", + "\trecipient: bostrom1t7gl7u2hlq2cy3urau75xn6auglay5h8hsx5rw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g90jgg2dd5xl04raq5kpch78hesxk3q4psa2sl\n", + "\trecipient: bostrom1x272jlajgnwxngvm5ld46u52gmylvxjy66shpu\n", "\tamount: 1boot\n", - "\trecipient: bostrom17nlmcaz9dpzaqtmnkhl6cf8sdw5sycppz8ap44\n", + "\trecipient: bostrom1z0hwdug06j8ssmc9pvhj96578q8xhvxw7qff5v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1j4uzuqq0vh3cnljns96p5w5cs42v86yxv8jsqk\n", + "\trecipient: bostrom1aftuzmwn3957w6u893ap34gp86jd4tkyes5ved\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x3h550wrfckwkxadl54hzj8h3ds8c3dfad08fj\n", + "\trecipient: bostrom1yq64tcpxxe3egzay46yupa0h8q3eakpaqwnxvn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rgdv32r2xneamu9m7yeh3asf74dlfkwg3xu2zq\n", + "\trecipient: bostrom1d3cwhcvmgmvd7jq72eyxfvmcgvjd0xm2ruzkss\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ze334rpdfp8wkw6zvanh68f7ppump5lx3mwqan\n", + "\trecipient: bostrom12lnefgszfugjrd75hqy399fn73smdhn6qvmkd9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1takkg7qg8vpugqat0ym38xhgxmcttt9a59j545\n", + "\trecipient: bostrom19rdue54zz89ry8wyjavns3tj49sdglljsxc7fn\n", "\tamount: 1boot\n", - "\trecipient: bostrom134h5wa84vuvpz7awpa9wmjqemjzd2xusu3hlp3\n", + "\trecipient: bostrom1y3sleqy5ml4fxmnj2egw5z569ryjspu2wz495q\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qq7nhklvddqm7xtulw57aqejkqcrt6ypucxmta\n", + "\trecipient: bostrom1dhggqcmsw4clk94hy95wksc9kghth76uk26fmv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fdgxymcyqyzhx6rhdqyazl2rtdlk0p6x9tj3n7\n", + "\trecipient: bostrom1l3dgy77sfzfu3dk2ttjy92dzhjx95yvh47anpz\n", "\tamount: 1boot\n", - "\trecipient: bostrom19ec4g2gdmvawu76lxuzp3394aqk0w8kn9mww0k\n", + "\trecipient: bostrom1rfe33s9ap9r7dqgqt2x7vuz9jgm4zx74zeqtrm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wnez4n2nd0q4cc5nf5xr6zgtj0svs0rv7v6tv5\n", + "\trecipient: bostrom18p56x0qf0sx6w5keghkk7f8ra7tv536qzrht6z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1apya9stgvhuuy42uu5d0es7p8ds8fwfs0ws4wp\n", + "\trecipient: bostrom1gguq0x89pyq24u0ydvlduuvz3xvlnmhzldy659\n", "\tamount: 1boot\n", - "\trecipient: bostrom1f38q7wpnrfp3k4r204vrg7c2wp29au9eaj6z7g\n", + "\trecipient: bostrom1s5smwjhumxs36jfy6j9x3yetlffdeep8x79cg2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qpr7xrrlcyxr8v3l3fr770gvn9aka4fra009dj\n", + "\trecipient: bostrom1fpa57plps3g9stymcdx97xr89aygltumld5xex\n", "\tamount: 1boot\n", - "\trecipient: bostrom100urkx0z8wz69suxkje03zkfdxl3h8algj3aa6\n", + "\trecipient: bostrom13pd9jz8ct3u0e7fq6q79yxfy0f56pzm2uz6s3m\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lpfngd0ja00c9nv0zn78zcz5syqs9hctyt4w2w\n", + "\trecipient: bostrom1gmrq5cy383wp5mu93q8xrjqu8mtlc7z4l85n8n\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tpl0d6328zf2nfv7ptdcg2wqm3r5d9ps9ljz89\n", + "\trecipient: bostrom19yp2lq9ju0hy3lrxfu9d9zpdfz77j7dhg53usr\n", "\tamount: 1boot\n", - "\trecipient: bostrom134p6h04ekdcfnn6txma3ytkp5hgqvz5wamkp75\n", + "\trecipient: bostrom17zded2302qwsqf6q0en6azdmmqg5mfmmy7a5t7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lur9ml6wze46xmpq2tylxrd29r42297he3wqpl\n", + "\trecipient: bostrom1t6z8uane2kgflcdl0ye6mnj5w9w0ylvm5jettn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yste86hpc23rw9jhnluzv6zppsryvfhku3yh6q\n", + "\trecipient: bostrom1ja7p7zw5ucpt4x5k7e55wwhtr4m35y340273dm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d3w6qe7m4v8hrqdcgs2vf7r3jzmngazt0dy82g\n", + "\trecipient: bostrom1vcp5hcz7tlc784c9xaf7y8gggdpuryyt9zc7fa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1v2xsd3mrrsx7jz2ktcfzkm9f7lppgf9l4krnq8\n", + "\trecipient: bostrom1pf6r3cprm6p5a0f9xeg6y7037jy3rwu9c7u9tj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sgucgk84gc4q07gfl2m2ajrx0d3arq48xa3s6v\n", + "\trecipient: bostrom1alf4qqmfkn0wksxkzpx2pkh9qdrev0f7a2ysfs\n", "\tamount: 1boot\n", - "\trecipient: bostrom1640mwez3a96wqhrds0urad4j3t56fttffrg93m\n", + "\trecipient: bostrom1cgzheqra70ar7npfm53atczrr8ym2ga4hxkcps\n", "\tamount: 1boot\n", - "\trecipient: bostrom139vr8j3q2mxa98ljvguu32hk379j8409w05ry2\n", + "\trecipient: bostrom1qkgf4u7g86uwfwsfdlfgxwsjywqxjze9yvdaww\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mx2rj8vj9cz3dwutl866e7gsynhnthzdywr3h7\n", + "\trecipient: bostrom1zmeem69s8et3mv3p48rq66l69jr3gxwwc7c4lu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fdypy5kxf4waa5xqpxtghzedhmj9vkah4xhpxl\n", + "\trecipient: bostrom1tt99hwuuunp60agve9drfwac8wzgapsa840gyp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uuv4etxm9xtjapdc3s2pgg4fhsu6nzjdyvmydl\n", + "\trecipient: bostrom10mqmg0uzh63qv5df93ld6e554lvarwte0sj9mj\n", "\tamount: 1boot\n", - "\trecipient: bostrom18tck3y7qjrlx8rveptk03vj3tavt2edgn92fu3\n", + "\trecipient: bostrom1r82zdseaeyw92fq89p5c9nv9eqk6y993s0ucvm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r6pq8zn9au2tzzld7tzeueaheqlav8jp24zk00\n", + "\trecipient: bostrom1060q6um76nuh3pvp4r6cdxajhw7nd53emmymze\n", "\tamount: 1boot\n", - "\trecipient: bostrom1aysks96klvjx8sjhgg095ygl2daserf2u3g98r\n", + "\trecipient: bostrom18djqgvy9n50p5pwe9s0zg068mrkck70m3gktlk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h9c0dfvsx6vcs2a32apt886pdku3q78cw7wje6\n", + "\trecipient: bostrom1l7e3xvjzfefqyy800rh80w93hjnd46j50sr0ye\n", "\tamount: 1boot\n", - "\trecipient: bostrom18f8rldxw20dhv32k5355nfhd60xsx9xcvfl7hx\n", + "\trecipient: bostrom1npsv7hym66ea0ql2k08yqp70399dyva49xa7y9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ytjx4mapa8uffwwshqlyr4g3qe83z2zmz2wt94\n", + "\trecipient: bostrom1hym58vzss8f88uvey95h2gdrpwj7553djcyc0g\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xhm3x3rassdzk0cm6f5m793pzs6d3876r3947s\n", + "\trecipient: bostrom13mlgzr0zx7gw8q488xhjevxm0460jtmrpg9u8v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qp22u988azgyvygaksmznk2c4xe5hgfkxtaeh8\n", + "\trecipient: bostrom12kypg82h4earh6m8w74w7hj3ud9euym6etu6e5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ga9gjwthqp3l6ngmgujz6xt85f7mj2hzll789m\n", + "\trecipient: bostrom1gud2acwe0zpr5860gkvwgsnp25n0l2z8z229pd\n", "\tamount: 1boot\n", - "\trecipient: bostrom16eu9km9g2ukn3kng3t05gyw77m0s388t3ldmw5\n", + "\trecipient: bostrom1zhw0c7urhu57qgvl2atcxk7ew43c073jhgjnt3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1trajx0zz607n6ynvzdf47l3t63t7wt02kknljm\n", + "\trecipient: bostrom1qq86n5l93a4djs6ma5pyw9jx4r8f9pfff4m9gy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h3em7ptasyuha4qx4nemmrunztd2ck4l8spjlk\n", + "\trecipient: bostrom1ugmkvwlr0g02rajj6tnk0p7emm8nj0mzsk9eea\n", "\tamount: 1boot\n", - "\trecipient: bostrom1htdwg0u9f64348n62epugv7fqfyusqwnj6q5wn\n", + "\trecipient: bostrom1gz6gfrmn0tus8rk4ujl9stuz65zhry7nkny6ut\n", "\tamount: 1boot\n", - "\trecipient: bostrom1l3ruv6lvgy7jjtwdvprmfdagqjtgqtwkkdlnzw\n", + "\trecipient: bostrom1u53ph73y9nn5hh0pyh3p7qsqdpq98jjg23kzs0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vzmqrfsj3gutpgsecc64xjlxhz0j5rhdck2e88\n", + "\trecipient: bostrom1hyztum65jaqtkdlsxdzckh23m7y7z0gqyu8ku2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qydzgts5a45ldyvn0673v9qvsll33vn6hnddsj\n", + "\trecipient: bostrom1xqyxmwcwnaw0w66s9y5x44y72kk9x7x2cc0wsg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rm374xl90r0dvcvffvvza7dlk24h5fl4k032d5\n", + "\trecipient: bostrom18uafcqkdcvnmel7879zw7a78w7kyl32g554kz2\n", "\tamount: 1boot\n", - "\trecipient: bostrom19zh05hwequkj52gru8t86apkpdgkxpl79utawt\n", + "\trecipient: bostrom1m0zs865m2yysmdw85e4dt3zw3csl4sstq9txpu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jvkduc9yly8uc9vpdhelalsh7ywh8p3yngnp0t\n", + "\trecipient: bostrom13p3nrzrj5p3tk7ajuq9qdrt43kkcahm6ahzhfp\n", "\tamount: 1boot\n", - "\trecipient: bostrom19js0y4h5wr4z37fyn9lk745ugs0eurrdxq7v2m\n", + "\trecipient: bostrom1c0uvnxgyace6ddz9sr6rf7e22yykfwef9mtu5p\n", "\tamount: 1boot\n", - "\trecipient: bostrom14jvu7j7p55cgwq0h66g6ezercfh635mpql79t4\n", + "\trecipient: bostrom1eva5gh8fzrwz2eqg3wss4alpufhzhr2e5tfmfl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x8j4x8hk52rxyx8plvvd3ckpknft2g3p0al7n3\n", + "\trecipient: bostrom1ejkq9fdx6rx7fgt0rh2g6cgfvf2ulecsgwm2mh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rcluzdwgpv0mj9l2047jhfcrn25ym388pt75l5\n", + "\trecipient: bostrom1ch7rf9zy09hslfrequf3w4kc454lxmljlx52cf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d0c8r5x4ufdxncjp409dt6s6zedt9fpvf0phhg\n", + "\trecipient: bostrom1c88x33q8rjkpftg2dzhze5l9t28szvqktdzlf3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k6jpv340pxju49et0kt8yx9x32sywx7v4n27qy\n", + "\trecipient: bostrom1g8f67c2vpc0q45gwfw3jjjqt9u5zcz5xl3r4wf\n", "\tamount: 1boot\n", - "\trecipient: bostrom15ed9cevn2dejsehpjax6xd5fz2qnjy9l0msz3v\n", + "\trecipient: bostrom1g32ljhw2z4r5rkwlfsywuyvdtc45d7m0r3g4vf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1p3jj8tfx42pvh35gxd2z586004x6mz4glsx7c5\n", + "\trecipient: bostrom1qcv209sdclc0qhlp0gmrv5l8pq89gxzzume68a\n", "\tamount: 1boot\n", - "\trecipient: bostrom1trtghaanrlllzf360f4lz4a6yaj7p87c5c0g7k\n", + "\trecipient: bostrom1269n2apd3jszu5sc7xwnlk3quj2nka32a8qtmp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qk5wfu4j3sgcn4k559gl6xk5jakmwhmum7rqjn\n", + "\trecipient: bostrom1aqqyj7hadf7z8f56uc2dh27v4v5uryecwru6l8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rn746ppd8wetnpuydhfr2m7a7vsncfsxm7mrqw\n", + "\trecipient: bostrom17z5efk2d87uk5c6qz4x8v7xasng2wu6lvw58w6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ukssxlx7uphpgadjst7d4u4nt833n85sujfrwz\n", + "\trecipient: bostrom14wcz3qqglc3xtms3rknn5gxjuemjfaktcd40yv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wzee6yu5l832qsxqmfkelwddq7555alf2ye0sd\n", + "\trecipient: bostrom1knmfjgmuz4l98mkvuqa2hm037wvejc6c940ntn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nd5f3g5au3sxv9vesgvntjcwl9rhhdhrrg4smm\n", + "\trecipient: bostrom1w27rqy9sf4e2flf6z6husn63mmlhqujl7t6x8a\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kds6g6jnun386j4u2fxlykq6q9lu430kfs8w8t\n", + "\trecipient: bostrom14xyqvg3779euwwwkst84aaywsxsmggqxf5kpss\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pctzjgpqsmky4tda74huul22u66kjme3wjg9v7\n", + "\trecipient: bostrom1f9xprxme98s2xxewhf6ync7g26ndw8t7lgs7kl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ufpyj8d8enjvcxlwsxdfmfaqgflwdxcy0p7wjw\n", + "\trecipient: bostrom1udjt769paju5ruagt78jp2r0enmspcqflfh5hd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k8nn5ffskduazuy3d3jw4vkseqdc846q3r0tsp\n", + "\trecipient: bostrom1vyrkdvnelxzyd0u23mjw7l0uph9lzy67z973et\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w65sjppjel3k43fpdftgk06ly9kd566ygd2ksm\n", + "\trecipient: bostrom1ctkx4qa2vs62fx4d8h39rmd9q0dysjvzzwhk04\n", "\tamount: 1boot\n", - "\trecipient: bostrom14plh27mz7fwj2rkg3h5jy924rv67mcnanvk9xk\n", + "\trecipient: bostrom1kvxp92nyhwy922zrr5rchk5rru4sdt6m35h4z2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1474ks28fvyea4qx9v87r9tevvqj50ye093nezf\n", + "\trecipient: bostrom17evzl0d9a5px90yls6dq2ekpz0a43vp8jlegzv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nqkg99cakqsh7xsutsldnpx8ktdr894z2up2d6\n", + "\trecipient: bostrom1hqle74egja0zwaanga63rq6s2hk4sgjl5alw3h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k0c4u3d8qtmzgrlt98tkqlddlsfje756yf2qgw\n", + "\trecipient: bostrom15ajcv8n9k5wz7h3u48pacwq8j58r2rvr3vl33f\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g0324f6a9yfd3h92pa9f8870gwkeekquknr0fj\n", + "\trecipient: bostrom14wu29nr5vp5q2zrl2ygnerhs3hp866a4cacux4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wuq47y984j6kyupflxvx3xkdrcwqr70chgk0dq\n", + "\trecipient: bostrom174q2p9ehm4ydntk7rhy77hs2kueg3mwnt20h5t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rrwwhee3zyus60e0mr5r76ap4yaknaskk93upc\n", + "\trecipient: bostrom199eyjlnj2wgwelpx8egh3quwt9s0vqfp4qgx7h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1e46hy0mxmvd7pt5m7rekkka33gz7lsa7t509yt\n", + "\trecipient: bostrom1ashgtf3lsf2nfcp9x725ck9v8ctk022a7789kl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vdw7577265sjhc9tf76dexg0vjqe2hwqwmfx77\n", + "\trecipient: bostrom1fp4a7n3q5s2ql0zj309udkr0myhry3qyxyhty3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r3xjazpfgz7dfsghlyxlqxnx6lzkvtz49ude6l\n", + "\trecipient: bostrom1wfqh5e9lykt04mssdgjax2lhd0pagel6ds49jx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uyj5y856xq5f5sekcmm9xdrj30f2j6cvrkp7e8\n", + "\trecipient: bostrom16kjvyw8gpprpenrz4upqch54u698q7zalw84p0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1negurdr4eukfukmf4p26uyw62uly2dyx5d9jcd\n", + "\trecipient: bostrom19mduln93h8myzugt6xs3zhgr29nltpa9cqnmqv\n", "\tamount: 1boot\n", - "\trecipient: bostrom10v3zm6sqeqtmm4w9cpc0ms9rk2r4gfghz6ydx5\n", + "\trecipient: bostrom1za0wrpysy4wkvqskekjv4g5ftxze8c8tnsmlvp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1crjanjdlfwunuf758j2qnp0c2ylm9jenm24xq0\n", + "\trecipient: bostrom1hmxaqwzlcz5qhgfdcm07c0dwuxtwvwm86mkgdp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u8epgelfklzvzhyv9umps0gna2k68lsmh7zf22\n", + "\trecipient: bostrom1uue7ltd325ct7k7yck9pz8pykhref4a4lne3aj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1p9l0e9unkextwflrm5l996gvmvs8wlph9xryp6\n", + "\trecipient: bostrom1m44n26mha4t6tt2t6yqgdh4que855awltxeahv\n", "\tamount: 1boot\n", - "\trecipient: bostrom15dvge7l2lcyhdxtprncmwm2874fyd2739pfgxe\n", + "\trecipient: bostrom1jv0rkxr3xmftfacgsqy560c8e4mkv5hnmqgdns\n", "\tamount: 1boot\n", - "\trecipient: bostrom18xn0gq59p5dnjh73rjay2usvfgsdna6724tqhn\n", + "\trecipient: bostrom1pxzdgep63pqq6s7qzy6z26qyh24kk7ya45smp5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xsn7uufhgks3eragre8qx9lyk9gtw8t6k9mauy\n", + "\trecipient: bostrom1waeapql09dkfn7y3p7y8r0hsn9jqpzgrqcqhsa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kjugtqyv5myp6p6sm0nvxc5cta0y78084t5k76\n", + "\trecipient: bostrom14z3j5xjff5w0mhdt9cjp5yf576ne4tahpyfn5d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nhrspqdl8u80c8c0tdccxl57v4ch3fyxez92z6\n", + "\trecipient: bostrom15uafgasmjxa086lmgxhf3789k8enezwsv2hny3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m8aywf5kfydnwdc2w0wk8xygt27xmstgucfmnj\n", + "\trecipient: bostrom1l7q8ygdxdyslnna760xkylxmuju7apu4efdk4g\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mf7zpdnu72tpm5q2z4em4qmrclwpq2w8r6c967\n", + "\trecipient: bostrom1gueaqpa9fvhyw5js3ml78p338gwexs2szmkgxq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1axk4pn349fyvumukyeuue7mp57846x5n85jzn2\n", + "\trecipient: bostrom1dlxpryc64ljy8ycnqed6tusv23vvzer4qtgwg9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cr9ssxvtt0p6tlumf69qnp3p8er2yu2tfdav9n\n", + "\trecipient: bostrom15yz3frzr9896jfqscvgrpr525e2fte259a79cm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xy5dy28f9hxlg2m0es0j5ceatnwgfac9edfzwq\n", + "\trecipient: bostrom1znj847urese9nv696zj8zhxxnshas9jjxgepnz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vjc34h3hld2l7tahyveavwhu34gtnrxjwplknk\n", + "\trecipient: bostrom1c79sdr62gqw0c5vl6cm0wmw6nds4sfuuvdcej4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xnshuer3n282hlxams553ggeh3rtggqlwm6jlh\n", + "\trecipient: bostrom1a7weglfpt2m098qyhvtd9ud5uxqsq49cax6ml3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1med4scf5g3g58cefa0lg4elc7ynwspwjcnpymw\n", + "\trecipient: bostrom12p0k8wte2wczpp9zt637ml6vkhu9tj8j0kca6d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kazrlwxh6np5jl7zl7hp6900f50cw72l8vdjea\n", + "\trecipient: bostrom1z7yw842j9k7t2lsmguvck0unmja3kex30uaauk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sxvl6rvgr4elvtntttd69vt2c849yx90tzu5aq\n", + "\trecipient: bostrom1kp62twpdjz94dj790cwt47un6trycznxzypase\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fkg3p6gl004xknqeqfx97tyxszzvd442z4n7ye\n", + "\trecipient: bostrom14fj2n8rl8nrmxpvjt8ys4k28eyf595zq4xdwuq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wusfzl84jdzwc5l6y9e20msvlxu08xwejduaxx\n", + "\trecipient: bostrom1xac4h96xgv6rsq9fv5pu3dpu4edrfsgxcvmasl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lc09nrxk7jggv7wh0nlpth2k09s7z0q0vg6j43\n", + "\trecipient: bostrom1dt89326l9qws29pp9way4nk2crn2ag2m36dx5c\n", "\tamount: 1boot\n", - "\trecipient: bostrom18ax4tdnfx565caewe89q7y4pmjhsgw22rv2tk3\n", + "\trecipient: bostrom1gnngg6j26fs9wfalxx98h845s3ffsxzl8yhxyd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nxuenpkulvl5dej5fvew6wk97e3c88yplesa44\n", + "\trecipient: bostrom1wc3wrtwq6pxkv458a6ywpxevxtm4qex3x507r5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zdzwgrcrun7qmllatq4sdk56zkkxn7wzyy9hzw\n", + "\trecipient: bostrom1eesvjw5vgpa4s2d0j4we8lnj72v8yhkv9cczy5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vyjsskq82x439pdwklcyr3kuh72c5xeds6h7ec\n", + "\trecipient: bostrom1ca7j4uyc4hvpmfpdkswka8z5qk8hndc0jtpnpm\n", "\tamount: 1boot\n", - "\trecipient: bostrom18vzzn9dmaxfhxkrlqmnht53k8d38st6yxgyyar\n", + "\trecipient: bostrom1zpqdssdnj99ga2ga4n3g2gpaqurrvapkzsuryh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k8a0lpkjhrc84hqfz0tsljezp5zu6sc72cmwye\n", + "\trecipient: bostrom14unks6k2v2hd3zyssvel4uhfyrm6s3l9h64lzx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vdeln5gzfum6v444mghx52f32dlr50x4jvs40t\n", + "\trecipient: bostrom15pv8nu6d7j4a7ww7mushq0wgcl6rqlstk54hp0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pg3rd9jqhfp3c5fdet467wmysukc9npqrpdf2u\n", + "\trecipient: bostrom1eh00wu9m4ktcmgdgeakcdxh4d7tt7ual43uffz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uudq355065f0esp3x99mffal337674ryna547c\n", + "\trecipient: bostrom1zslykk7d4q6v2586j9z9yhzx0plx5a834x8gr3\n", "\tamount: 1boot\n", - "\trecipient: bostrom13ekked354xjm9e3k6g24vxmvv9g6f3sy7eqs4w\n", + "\trecipient: bostrom1wvk7dzpx2w4l686fv3j0hwdhj2c4mg4ymyet9s\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mfj0qz0fpvgssw2lsh93e8yl96k0mad4qmr92l\n", + "\trecipient: bostrom1c8mg543jekf8w33asfrxdqnm8jhmqlzjuayvlx\n", "\tamount: 1boot\n", - "\trecipient: bostrom12tx5kleezsl390y74a0czsvndku48dvz56nkcy\n", + "\trecipient: bostrom13m8sk82c43gc2fxmmk23k6fny0d2zvhamx6nt2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1f2qs2stcutv7mjrsekgu97ld0mv3yl46z79zf8\n", + "\trecipient: bostrom1dx66n2ly66yeymu7jk9mnlz6tfvnf2zy4daunp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pjgpvk35snhf35gmzktzehss8hzj52sk7v8quu\n", + "\trecipient: bostrom185gvs7lkl6z6uvcfdlr3u6yx8d082dn9z2eqe9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u0mzndr8pcp0ldcyx52pchtc5cheettd40en8k\n", + "\trecipient: bostrom1l32vtc6hs259a6xfwskhxlnr550z9nwera5mpz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wdcytgtdzayqz90y7qycmvpms3xu7sntg32n8m\n", + "\trecipient: bostrom1hmeruspxkw2ptuwy4af9f5xhrt3jj9jxxnskja\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t8xtwsnx87rmcvwvf8fw2jmjm6udaz05r5uvr5\n", + "\trecipient: bostrom1hjpgv89evmjctjhd3mw843g4a3272tayln28jz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1esupkf4gkd387vk47cwhszhqccrkulvl7x5smn\n", + "\trecipient: bostrom1g945f9hy6tzl3e3lkjvx8n5r3tjla6kfrsm9na\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hv5zpmadursxxgr46er893r08h3u74h8ssdqcm\n", + "\trecipient: bostrom157h75vtll6pprzphzssqtzs3mmvtj5u2tf9u57\n", "\tamount: 1boot\n", - "\trecipient: bostrom1red7se690dsyqqttqgu6fukmuedf5ma9xazjfs\n", + "\trecipient: bostrom1knzp0vee2lrujy7smhc6rvfg2572gceh2lgwf6\n", "\tamount: 1boot\n", - "\trecipient: bostrom19nmwgmpl35k6yunq9d6yf2sfd2522fx3rtldq9\n", + "\trecipient: bostrom1lp2yvc6gz03u2kcdtszqceff0eu0vnl6a23ahk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ps2tua3k78kpq29s85np2utqjwpfnfr769k4fj\n", + "\trecipient: bostrom1952hfdkf0ex6q5m3vpaxmezcer665mu909xmvv\n", "\tamount: 1boot\n", - "\trecipient: bostrom132kzv0drasazwmywmjdgwlkxnuaa65f035d828\n", + "\trecipient: bostrom1pq45p2407elzxt7rrdh7zf8pjquh2m2x6k3mq0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lj9c4895pyczdm5ewe824qr73sy706ufvr3u8j\n", + "\trecipient: bostrom1j5ha2l0ewuugp2f9vawy3x2edt3ewmt2pfmn7e\n", "\tamount: 1boot\n", - "\trecipient: bostrom1huj8syflgp4wgrxe2kek99l54mmpjglf3qazhd\n", + "\trecipient: bostrom1cdzwjlexuytfw7hhan6m8tf98f743evxp00dxq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pgx4j7vgfesw5yuczdhm408y5as5kzpzt5pqh4\n", + "\trecipient: bostrom18v4pqyvn49j8qcvlpj3vmw9e6v3845ase542sq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n06qj8xmrd0gjzq5qusy626skmvjvuccurm3pn\n", + "\trecipient: bostrom120rdmwq6hpjhl6d8qz4f0te39ufdqzygv2av6m\n", "\tamount: 1boot\n", - "\trecipient: bostrom13x45389rvzzck2qnlrfsacn3w07d5rxwtln5vk\n", + "\trecipient: bostrom127v584568v3c7fhevum3ppype8acsqmucm2gp6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hhlezq55q0k9jnd8y5mkeqd48p9xf79xkm4sew\n", + "\trecipient: bostrom1z2zs0sx45qvaz59ppdqy3yz4n5k9a39d7jqplt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1adnquteqdxv0n2hyu8hqmm54sa2m7kfqsjvfwn\n", + "\trecipient: bostrom1g6sx0lu4n23ez20c3xwtrpr62hn4utwkvkcpzc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c4nvwse3rpmuas9yqtwaen7cdpqq0qypc4vg0w\n", + "\trecipient: bostrom19umnv32ek63rlyryjnpxegnzn05qy5ayhd75e0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1elp7gt4jcy3nyc77gtkn3s5dl6tv8gsf8j4hsy\n", + "\trecipient: bostrom12cy8zec7kc37d74624y7gf6use79ejyy60ue8u\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zzzesx85ney96p2r4a8yl28hgfagtnlad7x0xu\n", + "\trecipient: bostrom17swgkgvmllw2ngr520n7u2kfe6t5nlxfnc09vj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ef33gccdfefzt4qu549gp2lx62z7tzqw2rk7zh\n", + "\trecipient: bostrom1e9yylynfckzftmjnkyftuxzgx4ap9kdp02az9g\n", "\tamount: 1boot\n", - "\trecipient: bostrom14qufmlqatpag6crnz804sm66zg5asr5n5rquak\n", + "\trecipient: bostrom1fpdgwaqaxncxqjkz3js8mqg43kvj4mecshhlqp\n", "\tamount: 1boot\n", - "\trecipient: bostrom12a5cwxpum4rc8amywdd5799fl7487n6hhnytt6\n", + "\trecipient: bostrom1lfsmp0pre869u4t8t5yqlr8kxv97ed8qg4d874\n", "\tamount: 1boot\n", - "\trecipient: bostrom133z95cvfe6zm95drzcu76cesazpz8cpnnacme5\n", + "\trecipient: bostrom1qt687vprztzl79exp97mu2kd5a5vud2e0p0wqw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ejekgvajj4kah3l2qxeuqsc4ge0g9s9gpspcn7\n", + "\trecipient: bostrom1mtpq6h5qzdn07guyzn7yqcxf9czh5csp2y6aqc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dpc2g89pw0xynnevfnfu3yv2xk74tyv2h0gtjg\n", + "\trecipient: bostrom16tfaxny8xamef04fwttckwpdt5cmr8r27c6vgn\n", "\tamount: 1boot\n", - "\trecipient: bostrom16ut38h04e7wehjh72jck69skd2tzqnt2vf9nf5\n", + "\trecipient: bostrom1u7rwkllwrd5shvced5jmzv056u57j5jsddxu83\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yfefhc6xgyc8dja754xw7k6qquctu9eymzucqd\n", + "\trecipient: bostrom14fhg9xz6m9ckpgzjyf8ea202s4lygvamhrcj54\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ad807pcpjplvssem34m3w333gxkfszkypaywqc\n", + "\trecipient: bostrom1g5n3j3upj7pj0tn63sqsn5qhmf0lj45snatx93\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rp2tc3g43kjmj5k5rmupa5rx33gzpd7jvm54sq\n", + "\trecipient: bostrom1jwfl9lsszatf7j92lq75x05v6a6heuvkg7e299\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dh70nt3he37g6a6ppfru3x3vtlaxzzumzyqfgh\n", + "\trecipient: bostrom19pf27lx79yvkjdtxepjy84eusv0chq4nfc8sue\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vkjpyak5vuxqmh2mkklw0z9cyxdccn8h0g26eu\n", + "\trecipient: bostrom1ednnmm8mzenmcyxzcmzeelknx7yrv74agt0hhn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1l8s9qvrqsvux42wujhpunuxpgc2rvyueyqqh3f\n", + "\trecipient: bostrom175tm4ugaf7texe8av85nehcf3wq9w2a0raeaw6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1l73r60rqh608teuh7ntlm4j8lv5ddt4pujkk5h\n", + "\trecipient: bostrom1yxrvtxd0nufz8k8zh6eu4e9lml666z3vh75e4r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sgtst4rd8zxlrjzt9ep37a9894fy95v9cjcmft\n", + "\trecipient: bostrom10c9vyyess0fptu6l9xn9xlnm4pyrk7smfjsp65\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k3j25up26wjvpuvtdyagp8u82lx4zv6r088ddx\n", + "\trecipient: bostrom1an9dkc54eadpl8zqlhm7hka5tkvn3gjn5e0ul9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1v2jh6vpjfqnnhtmdr2gh6ggmjgj8qeq0z5k73d\n", + "\trecipient: bostrom1t6vldxer7r2zq98xuy3c2ydmxwy7z5tsdf4vdx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zrch7j3jzyzfc4krgk0rt2ysx7mmv9a3ngrf4d\n", + "\trecipient: bostrom1n62fsqa6a7hq99aewgzgwz79cmsh65usau5lr0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ltsge6cj96fz3hq3fthmkkyusrtgraqzgxknn0\n", + "\trecipient: bostrom1p3lg0m0793cfqkny3wfufmfth7jys9r5u3gsym\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lx6nnj049qk3fvappr7602cn46hrhcvrkamxay\n", + "\trecipient: bostrom1dnwrzpcyacv0gfv3za7gmn8psmr20w3khx2xle\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mvm0upuuhys405tuj3yk4emwpd3jp6v66t2ptm\n", + "\trecipient: bostrom14zjqnlndlgl25jglqjvj7kxklgz5gvga8tcxj4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t27snpyh9lhwkd7v5qgsyv75dnetm9uyde0y67\n", + "\trecipient: bostrom1yz9ls0pu8hc06pjc33v6wj3zym4tc5f8ck2gul\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gpxr2cxsuacvmyj3jdk465gcnt9zrt45med59t\n", + "\trecipient: bostrom15lc6e8anzj3ddtjm7l4szz3fm4ns4ftnq90fgt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1863jyasajs90z58jx3xwyh27t24s7w9zz8wpud\n", + "\trecipient: bostrom15pvr73e7vty5hy597t2zler0xktsds6yprdfqz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m3h9f57wrh7rtfjxvmnj4dj6p2jscph48l0jjq\n", + "\trecipient: bostrom19v6f86y965fsg94xp0qjkm45kuv5twkzs4p545\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ycj9x2lw8dhf7cz8rchhkhnellq2a9ntypjhhu\n", + "\trecipient: bostrom1t7pfrtxqmv7wmtfv8ujls335y63etgu4jdutl9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rcxa3anuy6mntenpdh3kmzgt2ud66axuxv87dp\n", + "\trecipient: bostrom1p2cduzf67f9qqrxx696lf3p8cmazmpretak450\n", "\tamount: 1boot\n", - "\trecipient: bostrom13adtcl0647z34gqaepj0xhfh32vav3fh0l4cvh\n", + "\trecipient: bostrom1ug94hk7nnh709wrf0avrv3d9s05cw95t0na46t\n", "\tamount: 1boot\n", - "\trecipient: bostrom19pjdhdyd5qhm2xdp4z8pm3sqmqfxv3x8cf398u\n", + "\trecipient: bostrom17zu462kjxhsgccur2up8ux7pmafsalf7gf25xx\n", "\tamount: 1boot\n", - "\trecipient: bostrom14yesn3x6ws8z8wg8up70fn5ehluxsuv7prmdvp\n", + "\trecipient: bostrom1ftfjd03ulp5l9e85muswhdrewzr5vs27x93mr0\n", "\tamount: 1boot\n", - "\trecipient: bostrom109m5s2eahdtc003rs7ythl39058kvf6c3wlqac\n", + "\trecipient: bostrom1xn6smucngmns54n6ag99s9ryhn2rrhdfxxy84x\n", "\tamount: 1boot\n", - "\trecipient: bostrom18shkaw6upfar3hy50tjdgn8xcs4qmhwryd8cm0\n", + "\trecipient: bostrom1pw7pmuvezvxzel8e0uaxrydhp9pw6fdl35plp9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zeq3ednsc380cgaty0cady475fxxamunqjr0qx\n", + "\trecipient: bostrom1gqpa7kj63v9pt59qmhpltnapr6s6srarw90wlt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ws8zm5hw9tdg29lekr2wp6aewp5328qqgyuar0\n", + "\trecipient: bostrom1yjqtkpcywghj6555eupyjq4lyqfnm5xu5yv86k\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z42hr083fwqzp7pqvu0th764m2xh7gjthlkpn5\n", + "\trecipient: bostrom10drcuspk0su9nurteuhyhcscad7vp7gfvexde9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gt3rrquajjlfztmmlnvhc0jrrlf6ftuttszjpg\n", + "\trecipient: bostrom1rucrhynpj0kfm0u0zyns2er0639jhj8udzgqpx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lwty2eevdwn0des49xj30y36m0nl4pmxe8e2z7\n", + "\trecipient: bostrom1y8sq6hg6p6aqexh9wgs6r0nk5u6dnu0z5r8q7z\n", "\tamount: 1boot\n", - "\trecipient: bostrom10qkcxexsrvdcwky786gmz47yyl0gnp752qcjgl\n", + "\trecipient: bostrom1rgughu024v2hvu42ezn6gajsdzr2dkemr4m0kz\n", "\tamount: 1boot\n", - "\trecipient: bostrom15kl3huqd3pr3cpnjfaqq5ez6fgettngymw9y7h\n", + "\trecipient: bostrom14kx95r30u4al720t0mp7uywwfpjdmdg2rhdlwq\n", "\tamount: 1boot\n", - "\trecipient: bostrom19n8mwxawxh8kusfhyhqd83h3q6x79rdhp4dnnu\n", + "\trecipient: bostrom13ztrlp285pvjeuvekyudfy7ude8m6pukrrx2lx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cn48cexxfd2sw9pe4nsxa97cg45y6z4zvm5tnd\n", + "\trecipient: bostrom1svh8juxczgz0xd784rwrgugz43hwl89ca6kw8x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lghgf783gv4zpm6qsh4d7wg5jx9c43k0vgvuzq\n", + "\trecipient: bostrom1g2hhdsj9fu6jm85420mlps06qw23lalmz890v7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1e0wcr4rrt747d0f9r0wulv93u7tz6hgpxqg3s9\n", + "\trecipient: bostrom1np7td0w4nu079e2td7u6f3r305cjy3udd538x4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gzl96wh9h7mf9cl3uk64sg28etp7xe3xllrkc8\n", + "\trecipient: bostrom12ar5m7l8tf7s2jwah032um0u35k3eecx6mfar4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1canzzjrahyhfaeexgx9rxu4xlf3sufz52cpkv3\n", + "\trecipient: bostrom1h8paexz097ny3xrw5txa090mvlgtl5x6z403gr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lzn27zl5tpurehdxl4kdzhce8gjgf7h688c562\n", + "\trecipient: bostrom1sgfmetwgv5hus4eh5xyq2t24qhtd94p83r79ar\n", "\tamount: 1boot\n", - "\trecipient: bostrom15xnvrjlfj3kdjy2l6v9g7sqyxjd46vwhrvujsu\n", + "\trecipient: bostrom1pqgp6wnvr7awghqkkna7vemys0tfprpgnelcap\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n2n9dtemhfc4034fcjwdjsu3u407la9mzsv05f\n", + "\trecipient: bostrom1dn87qjuut99j85vj69zrmlx2qv82ghu7yh29vg\n", "\tamount: 1boot\n", - "\trecipient: bostrom10zsr4kyzt9x9rhvv4dhk7mrw0pp7gryckkggt4\n", + "\trecipient: bostrom1zhfxel96cafgme8488ca9ruxu20jwna5ycjeru\n", "\tamount: 1boot\n", - "\trecipient: bostrom15w9fg5gjg22hjwp9k0jezsx4fs90xjfgynt67c\n", + "\trecipient: bostrom1ds987k8l84zzzxvjamypr7hslvet099qx9zjwj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ltnkp70zar32cvucs95r7azddtzsdm3jd9m4kj\n", + "\trecipient: bostrom1yr9gn0jjxe8jddzpg94tejf5f2gclq6yxnyz0r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cmyzcmgqsyqdxn22d4lamgv7xm3nnprzfhsf0t\n", + "\trecipient: bostrom1hjvgp8gae0wmjks29x3as3aw04z2lxu8ya3xc3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sl9tnk2tlvswd2cwcz7qcmks0m5ahxla3gs7t6\n", + "\trecipient: bostrom1wknsu9t7fq9j0hp0u6sh66y8wz50kmn7hkq2mg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mk2e5zkzppkzttpdq9vz4r620gxx6lre732c40\n", + "\trecipient: bostrom1rnp7kvm9uxsy4ymkv208v88w9zlfm6evp3ywgy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ryga6u8vfqc82609geavywlcafak9mmfdq59xt\n", + "\trecipient: bostrom1qt7gd3xmplz54g0jsvlqp8hp5l5e5hsthjnuys\n", "\tamount: 1boot\n", - "\trecipient: bostrom12y4qk7v8xppmjygyqdqk9vlqra82wk3pdqzz6a\n", + "\trecipient: bostrom1lh56g5kuh09amm0gjeq08zkjh4vwrs7umujz2v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rsll65gumqax28nx23g9utglfwv0mkmc9fjmns\n", + "\trecipient: bostrom1twmazns493ltr07j8l2k4vfgj3lzh9yyuzfnds\n", "\tamount: 1boot\n", - "\trecipient: bostrom1l90ux9f2nh6l7j0qcs9cr7d78pnka28h8489rq\n", + "\trecipient: bostrom1ygeg5nwmfpejmp3y2y4xyrlwww7hjz5uvy86pr\n", "\tamount: 1boot\n", - "\trecipient: bostrom13g2khvhft04ma5gr26vm7vjvjqvyvhec2rvhg2\n", + "\trecipient: bostrom1sq9thveegy0mc7e2c2jvmtrd2fxsythrnv0ewt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pvhcayvs8pye5ke86tvmw2yd4s5sftrcvp93j3\n", + "\trecipient: bostrom1nry8yysmr8dsygmtjy4xe97vtytxvvk8v49x5d\n", "\tamount: 1boot\n", - "\trecipient: bostrom12r7ef469emrly5xm2e4qm8agmc4fjzry354265\n", + "\trecipient: bostrom1t99vnf78cfdljnq9f6xu7w6dwt8jud9p5pajtc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1272zwr2gw5phz5md73v24mvl0ars5mppskg95d\n", + "\trecipient: bostrom1ny28ge556m2uz85pr38fg52djrpl2m084vwhn7\n", "\tamount: 1boot\n", - "\trecipient: bostrom17a8j97ppqytuhctf4dkh4mszy2hr5fsy4uwlzp\n", + "\trecipient: bostrom1ehfuvv4v06fytznlhzgqq0z8exmcqmu37tzwvk\n", "\tamount: 1boot\n", - "\trecipient: bostrom16ff8vpqjptj3dcv5zx8zalxp4cskvskc2tywph\n", + "\trecipient: bostrom1j3s5tpjphqzxwt4tpysfk2736vxtdzv4jaxnz0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z8k7y0dmasuppvg842zmy3qjz2cpvt9ersh0zt\n", + "\trecipient: bostrom150ru2n9yge85urj8y327zdenh44hrezlp7g5ga\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qf3677tgxadzz59u3g5v2easav83kx5a06sshh\n", + "\trecipient: bostrom12prdczrehp8kz43k3daypnf6ypkxza5hepjcs3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kvqcf62npl8psayn0zj8u5384g84qpfeqcds9x\n", + "\trecipient: bostrom1d0krs5v8dv53r9q79ah4pfwlv77mu50tvqt2j3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yxp0d5uqky056kt9jewx9wsfhqzzjkww2m5seg\n", + "\trecipient: bostrom1fhc0d4ey0d2h67jgarl9y8sal2e2nq3d4x0um4\n", "\tamount: 1boot\n", - "\trecipient: bostrom10j0ku495ccz5jqtje473etfxp2kzgx5w69jdsd\n", + "\trecipient: bostrom1evyujpmz7452ae0lyjq24de5d6ltgclvv352ec\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lf6jgjee9gc2szmv3eccvtmhus0aczwxu68tr5\n", + "\trecipient: bostrom19vvarrtver9z5zmqzkqug3jj480vhqatd7p20r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yxrkavqllgpauke296q06tdxfgzk0t2pkq3n2m\n", + "\trecipient: bostrom14m2y4s36qdfdf04v6ng5y0x7jg0wtx0vcxgpz4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d2vk45yqt5lwha0xy6vfu4cf7vcyn03nage6ww\n", + "\trecipient: bostrom1dxzxhahtm9rsr5rj9r0rku4lxrpl8xl3lljj83\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mkd9wd4edvye75kn6mxrmfm40pw835epy3ld94\n", + "\trecipient: bostrom159y7efzecfhgyuhzw0f5crjs0gqtuesjfw25dk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1el6lhqvs9peghr28uncqppmre0zx80q43u4ztr\n", + "\trecipient: bostrom166m2zu3l8cgswsa0hfqqq02v4tv677za0d836j\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nk5u4n685wdsut5hsges6whr00fv9jxp6lgvm5\n", + "\trecipient: bostrom1twd2dsq50gzxtgue04lg2t8attth944u9dn6kn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1djunzwycl3ctlqy3x43qket07dqnf20e8pg57t\n", + "\trecipient: bostrom1tc2gmgpd5h8ywpm9tqsgv3q7uuhcy90plv3qzz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tg4e8uk630mjwu7wa6fs0zhnz5ds9w6v5zhtpr\n", + "\trecipient: bostrom1hffavyuxj6vthsxamrlpp8qazlc58rppsxsmu7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n5av3ye4jmv3nzvm5kzykuppny3q5ja9pl9wpc\n", + "\trecipient: bostrom1canhup0kmalham7xqga5tkdjfy86zvlsu9jkr5\n", "\tamount: 1boot\n", - "\trecipient: bostrom19fe2zw8svaj28udaarvk5n4pam6a3ym7232fct\n", + "\trecipient: bostrom1pnkn0p9zzzz673f3hhhgstj3ge2n0pfn29jz5p\n", "\tamount: 1boot\n", - "\trecipient: bostrom148yjsyevtaxaqey3gq6e7uj8qa36zad2y52cq7\n", + "\trecipient: bostrom1q72pueywv7tyr3s8f86gyt4rs9tltssujfw4pc\n", "\tamount: 1boot\n", - "\trecipient: bostrom15nav2cp0wp2rx5xrrum8qcpdjdvg2g8vq9lsda\n", + "\trecipient: bostrom1nlpfcqqrl2rj3xelkhg2m9yn3kpyam7dfej4ce\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pnap9pn2tnrxrjsle5p4446jvq05yg6cx5lyqe\n", + "\trecipient: bostrom1f6q6tsvamvtlc4z5uj3tkscksjzpeh7wsq9w97\n", "\tamount: 1boot\n", - "\trecipient: bostrom17uvtxffr65lwzvq3hfaczx8k5vtp0gh7m94rdw\n", + "\trecipient: bostrom1zfg45x32rqdmmwjcgcnf2m6ahhm3pzng0tpdlp\n", "\tamount: 1boot\n", - "\trecipient: bostrom156jljd0l0lzdmk4ctxh03hk73j2zfeqmftg2c8\n", + "\trecipient: bostrom12u7fg3qzhtrge62j2n7t28z9zvyphh4xha5p3r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1p2hlp4s5wd037k2ydy56rkzu35je5y4vyf3p0u\n", + "\trecipient: bostrom1yy4a8u45tmd66kxqknnghss6aqgfwfpwvfxj9j\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w9u25qtrrk9sdpwlw79t4ezqfxgjcrms0l7dua\n", + "\trecipient: bostrom158selq0q73lhd0fp885d3r9j72jue790matpq6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vgexpyksz0lrfs80mu80rnn2axua024w6ermxv\n", + "\trecipient: bostrom14mj7veqmcjk5dwv98lycjylrg5kdlt49qa4mqv\n", "\tamount: 1boot\n", - "\trecipient: bostrom18xgwweleqtd74esw2k8a7fv4ut5uekswdqeezm\n", + "\trecipient: bostrom1jvjzr0cylkpgs6erxlp3mmw24t9e3c262fzrh6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1knkp24dhxpmtza4gfaugh5hzx7wqdwpcqu3kpx\n", + "\trecipient: bostrom17m6jtjjddj5rjclhzlhauj6pcugqs3gzth9v98\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uym0vjr8u3ulq678u4z6y5rmxpdda99x24a4g0\n", + "\trecipient: bostrom1u4jdlnlhml65n6u65da56as6rps37zkzkhy7y5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yvtud2gd3zycgfdamwcj806rsd2ruxsleru08w\n", + "\trecipient: bostrom14kgg5pz7ky4nf7857ah8cyfq20cqlf7krtf693\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rm3zmg0d9nsqtgpgn3wutp0cthyxjvmr3ld8rz\n", + "\trecipient: bostrom1rzg7wquj3qv9y5u634glzh4c2k4ffhzpd69ehc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jvkkuwf3mqm349gmm7pstted7z38v5tg34yflm\n", + "\trecipient: bostrom1pdy950wgz75yvaktfnp9q5gkd22u3cgvx43ugv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eecc7029t5mg8an8hu4rjcmjmgw6fraqupw8rp\n", + "\trecipient: bostrom12qen0m82h7m59s235gama47qyvftz5uucu8jq9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lnssksz8wu9snewwaqhn30cdqyjw2cgmajhzy8\n", + "\trecipient: bostrom1ysjdg6j8ly8l5tt277znys4kcu2d7k4nrumqc8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z7zsg4l3t70u0l0q27xmj3k9kjm4q70gdantkz\n", + "\trecipient: bostrom1xa75r6rnphwxvk7amzu7mmy8vfvcd5v9fmxt6d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kk2mgq4anvha64zj2v70kfrlkfyg2kka4eer9r\n", + "\trecipient: bostrom1z273fl6zc6vnzedsrxgdr0xj522dvrrmqtjg4d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qyvjcl66jdeqjjglnsuhdlnh2et54597qds923\n", + "\trecipient: bostrom1pvd26vrthjftr9sm4j7yetyr7z8egjlm5ryhxp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yuxd9jhxj2q4qwku5rs9dmc3s7sdcaw9cucrlt\n", + "\trecipient: bostrom1p95594jfmf6mnryp709l5pf42a07ngqdlj46ex\n", "\tamount: 1boot\n", - "\trecipient: bostrom1aql2jdv3z8q704l2t6wtaza094004m2latxjsu\n", + "\trecipient: bostrom1ts52wf87zduvy3hpl0vycznlckptsgrresdckn\n", "\tamount: 1boot\n", - "\trecipient: bostrom18lctkqflqze9se4k9cyqe04jmhhc2mqwarh5sl\n", + "\trecipient: bostrom1eul92v4jgkw6eyzwfe2n25uk3ck8vtnu50lk53\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gv26y3ershdhk80jft742fryxgfxkvw2u7cqkm\n", + "\trecipient: bostrom1sjxztszfn995jupzmazgvy6798hzqgx29x9hvf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gnyjl8p4kju72dzc9e3r3x0z634krxjzclvla8\n", + "\trecipient: bostrom1f4dg6ysvh8zelc5zef9n03xrp4vgdua6c4837w\n", "\tamount: 1boot\n", - "\trecipient: bostrom1e0punakkucg6fs3zfzt7kxa3l9ws2vnmsk7k3g\n", + "\trecipient: bostrom1cdlxl3h8x26py7hrxprg47qe28an40fxa63f5p\n", "\tamount: 1boot\n", - "\trecipient: bostrom152rkzjxxltryazsc7tlc7pkeqshguwhlcjvccz\n", + "\trecipient: bostrom1gr6fpwcrr2lvj5crfs45mjqvql2ad3m24q0e09\n", "\tamount: 1boot\n", - "\trecipient: bostrom10snmcmq5dcjwqt5tx9898e7yw9jqm4q257tewg\n", + "\trecipient: bostrom13tcngp3dwdnsl8xr6qc30644x2edtrj2k456r5\n", "\tamount: 1boot\n", - "\trecipient: bostrom130289ucmemaae94038mvnwkw2u0g8agj4twv0y\n", + "\trecipient: bostrom1yhjw4wdlwwr75gjwvsu2czl52c2lpc9tmd00ht\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ryeer40h5kqamrppaelkl32wd7wqvxcnyzzlxs\n", + "\trecipient: bostrom1dmxe22r72xlhkejvztet6c3eqltqayg7e3hvxf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t7nlfpu3ul0xu9l0zd2yhwln40jk7q5zhkqu23\n", + "\trecipient: bostrom1axvq0dprx4rkdhutvctsxaxueuuq8s3vvmkklt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rv0ndmcktfpredfzx5sdnpkaw4kv3jf2r8kyy9\n", + "\trecipient: bostrom16f4ykcc2349jmhxwpn8cwrzhfh7yd7c5m5wdet\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wc6fuczajc944fzff5smxmxarscluxv4sjjdre\n", + "\trecipient: bostrom1shf3uxcnknp6j4zsmmhhmgy6hyehedcazsdd69\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hy8923lntzzlffzqxwljc98xht2hjx5k9608ag\n", + "\trecipient: bostrom1yrwqwwrvfrv5j2dkj3v2mzugeer4h8clm6y99c\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xwc4pcrye5kfawl5h8x7c8srz7znyhctqapgnr\n", + "\trecipient: bostrom14fjynvm50z9p6aew4awhskzwf9t8c0ssskregt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1whv7hwdvg04mrcwwef6zqvgj55d3hrwmqqvdll\n", + "\trecipient: bostrom1q093ejn82ddptmapsmjgunypdgxecvlh4vpz89\n", "\tamount: 1boot\n", - "\trecipient: bostrom196arr37vdpkegs36sst0wapeu09x2jrwsqf6nl\n", + "\trecipient: bostrom1sxkcrjvw2w5rmgzt7z7dvhzncf988cur2kvak3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rndq2483s5xj8gucrc9wxpu553xcsdgqrartc7\n", + "\trecipient: bostrom1avjhcv8ess8qqykkwf4s4a7f0qawev52selj5e\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rvl83armem27ldzyqtr0975v26xtvf6h79zxqu\n", + "\trecipient: bostrom13egac8u9ma6hftyu9dkgsl22n9ukhqn2xx62az\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k5sv92m2p4e25gth774v6tzd5z9z732samlp9q\n", + "\trecipient: bostrom1a4h7tjytue2zzv27ntjax3syfcsuszy96j3r0g\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qyt0p8z3u9ax5mv6ugpka0fqhat62z2gk2kq7z\n", + "\trecipient: bostrom1qw3z3q36gm9m9f6zef9g6s5qqtgw2gdkzw5tqs\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c772gprpha0c0mn3kjnakm5s0t5xz0ql3lnkyw\n", + "\trecipient: bostrom1lfv9uhwpl72v22j3ejfcjng5rdtfnsudsxs6jv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jtqh20wypfl20axxs8fmm7wfp3tsfqr443qhgm\n", + "\trecipient: bostrom1s306rczf4l70r2uf7nq047ukp7vdkwvssn92t4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wrc86l5mwruxpn3jd0axp4aa2g67794vtvckyn\n", + "\trecipient: bostrom1ry4zsklvhtp5efdv79dlyazhddzr3ug90g4puq\n", "\tamount: 1boot\n", - "\trecipient: bostrom10878qvjnmx8877k79xmwnnwehznj5gccxkw4nu\n", + "\trecipient: bostrom19rsfq6j725wm8amtu67w9sfagjahhpujtqauy7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xkpvlq2epd5myd0jjgghqaz65kdjngpdjmtgms\n", + "\trecipient: bostrom1tu6z20gmfdeglepskuv63x6wy8wl3ulcrqnzja\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eegfsvusxll6qzkmpq432ql6l7a4kmaxys4md3\n", + "\trecipient: bostrom1gvu3zxfkmt0ws4usuync65cllzeuztlmrl423f\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ymja7x5ma6c5kzylq7mwnlrq4k90nqueau85qf\n", + "\trecipient: bostrom1vyl6zk985kgnvzm9dlwuyyxc7t92ksz7c2p9tv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rmaxxl8f9cz2v3855gxrgv7vcjha6rgwft3q0d\n", + "\trecipient: bostrom18uuvddn7t8z9lhqprjy9h56yvzunu3ckpkm6se\n", "\tamount: 1boot\n", - "\trecipient: bostrom1exergrwjnsc59pjylq5nq5l8gxva54530v057f\n", + "\trecipient: bostrom1krewlvfhem24gkh3l4rc2u5gwvq9aej6gq7gnx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gdyvn0r7h2g87dr47uywjqr2ls5ac0yhpp7u84\n", + "\trecipient: bostrom1gfpfa4540rsn9g78nqm65x5gmpw847k5677yrp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1av965mr6s99cmjh64dxaq6zjjklu5qzg00e8pc\n", + "\trecipient: bostrom1sucs2ush5tl9c4puu0thls2k3yxpymrx4kxqd7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1slx2cuzkrndjkryv5hmjer37zedkkl4ly54p6y\n", + "\trecipient: bostrom1f2xjvversu4rjrynvdwqp4khfk4rrhlf9jn8h8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qw0nxhken97l2gcnzufachp075722k8mlvqffm\n", + "\trecipient: bostrom1p5skesv5anlf9t8s7wpncrrqptp9lucsdp9gpn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d957e45r6787r7gl94hj88wzdszfcpz802hnyf\n", + "\trecipient: bostrom17haqmcetw8lkgughyzwu5tghpmdsu3vsh8ktr8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wrz9dv5vmt85kr6gqts4zpnxpmmsrd3ggg7q00\n", + "\trecipient: bostrom1wy7034f8r0eyw94sx8zpann0akqw0wu5yqxxyw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1263htm4usq57gaqgyv87mucxhwer6sjk9hfmus\n", + "\trecipient: bostrom1zvcflys92w5ej9xyqmg2aeappy3y9pyc8mj5t9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x9gnuqfs5fwz3wjssphv5vx3djnhlvvxmvym5m\n", + "\trecipient: bostrom1fpehl9sp0tfv5uancnqnwewp5tw3h0csd09pu3\n", "\tamount: 1boot\n", - "\trecipient: bostrom16cn6v5q0zxkw37tqv0nug3sxdl2t3ejyy6x53v\n", + "\trecipient: bostrom1yzdg66fzggcergjdzfd8tzpu8402uw40gzw279\n", "\tamount: 1boot\n", - "\trecipient: bostrom15hu4ss4dkwcy2yvw7z08la0s0j2gl7u0d2j459\n", + "\trecipient: bostrom1rytzpkvvz5ckd38kjym2n7u6n3g49sxcms6ynn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pxxqjtc9vmlepja5v4l32649qnnsnmtg4pzxgf\n", + "\trecipient: bostrom1av2p2srnv45hxxeas53cxpgvwlrr8a6s36sc37\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n8tluw3cthfdued39qar32ut8m9rcp2fvcrtnr\n", + "\trecipient: bostrom1h9ffud74t45v39ddgh74ttqtehqu6g949lgjvk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ra8yxpyw4acp0tvmz090z6agmgtk5y5mp5630f\n", + "\trecipient: bostrom1zkf8ed8hav0940aerg0xv54fe8k8dj0tg2czj2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zz9et7c7n0r5ga72972zvnnu2lj44m3ss9a69j\n", + "\trecipient: bostrom17q3lqzt5xy5j24w8yjfpehpaeqdjfe3m80t75j\n", "\tamount: 1boot\n", - "\trecipient: bostrom13klcwndzccfplnww4shw6jwftmautl00wh9jae\n", + "\trecipient: bostrom1zznlyhc7lqernh852dnr6qe20uu2rjls9q3lux\n", "\tamount: 1boot\n", - "\trecipient: bostrom183yhqdvqmvzmguvzqghvj8lxf2aajyta2wppr3\n", + "\trecipient: bostrom1nu9apajpl0fqtqmga3xqvmlk9gcp76tq3m9lcy\n", "\tamount: 1boot\n", - "\trecipient: bostrom17tsf38fy353ak3lz5ta2faewswefru296t784v\n", + "\trecipient: bostrom1lqt92em8zgeyngghut9azkacynk4dh6mcljefk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d2nxh2sv3p5sy2097shzrdwvjwsultmax49zah\n", + "\trecipient: bostrom1688qrcrjx4jvjm6clw4p2q4yvxc05acf69v5ph\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xsh0z6f2qcjm8s79e7nhvpman6enacgw4uqrqh\n", + "\trecipient: bostrom13yex0p4l58ey3ute4rugjevarcaftvt0a45wn8\n", "\tamount: 1boot\n", - "\trecipient: bostrom13zvvt0zurjx9e0cw4gjwhhhx96zqg37m4k4nrv\n", + "\trecipient: bostrom1q265aphtfc7tweh55txxczjczqd34v8ukvw0tc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pjpvc4nfjmwkfd7t05f408hr8y98nt4k6zjfag\n", + "\trecipient: bostrom19jtd23actawgfjtxdd9xavhmrpvfeq96l62k2w\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fpumhtym2yy0f8guted6hvxuqxslyuleyu4vyf\n", + "\trecipient: bostrom1y440w8rk086fklu05d75nvxz68qf64qft3t4u6\n", "\tamount: 1boot\n", - "\trecipient: bostrom19ngkcyj60yx942zgsnm3ezywpk4jgak698hpet\n", + "\trecipient: bostrom1tnzggzkqnjrnjqn9zg466rreak0lujyjtuxwn7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yjygzl72eengtatw5tlglpgxw6jnmdkzsnle4j\n", + "\trecipient: bostrom1dduhtfu2yjqedermnzxrwun6wf8spyn9phs242\n", "\tamount: 1boot\n", - "\trecipient: bostrom14m00xy5zg864fjy9w88demrd3y5lvdnefpyvhg\n", + "\trecipient: bostrom12kvu3hfcypnm0lvjzlltq8gmh86x3r5q944487\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w4drvlekq4g65nwlf3v6w2p4umpxkvrk34y4g2\n", + "\trecipient: bostrom15urnqr8gmzrzs6jm332u23r22njgrzetcsmmah\n", "\tamount: 1boot\n", - "\trecipient: bostrom13yv7g6nvy8lpjetpwtt8rtqmhzwn9t7wc7aczw\n", + "\trecipient: bostrom175afp3wthtxglxfc26qxlksfr22268qyqjx2y8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d36gkttdrlwse06fzqye46udx4s05e2up7a38a\n", + "\trecipient: bostrom1jqrrhffpa223mwtl70n62g33sjr778jnu3ta2t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eat3lmkfd30am2zwzsanacuy80dluqjma02jy9\n", + "\trecipient: bostrom1hr7wdv8k26qnv37gujphhx3xxxwk5kxtfxyqpw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rvjtyz7xmrjk5csltdg7fwx5ew9pyxg6rtnxud\n", + "\trecipient: bostrom1w3yukty9h752t4sa2dxvnld2339e6nrkvhcgk0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ee2drzj2x0ukhxfvxexd0pkv4vel5j48f7z04a\n", + "\trecipient: bostrom1sffxvpf7jmjjrqc8mzr4zcv5n4ulmu2k46d8pl\n", "\tamount: 1boot\n", - "\trecipient: bostrom17tx89xcyqhvkvael3hssvy8w7plwsdn8vpw40g\n", + "\trecipient: bostrom10fhh4qmfc42dpq7fem04pqh2a9q354n285jtw4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nyy9grysw7zr37jcqqvq59mand2ufe29de4rxk\n", + "\trecipient: bostrom1ef2wjuwlllf54q0q2v3drvky6kyn59x858nxs0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1l4cxtgxrahlxrnau5npu4yhnfyrnmdg5jrxjta\n", + "\trecipient: bostrom1kvvwvkfywplfpdkxqkajva0q9w6lw9w6t4kgwy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ascat57j3z4utyy3jjr6d7nkm9kz4wq53e2s3a\n", + "\trecipient: bostrom14uu7tmtd2cnm4vlg2hdz6ymz6vggagkg2led4r\n", "\tamount: 1boot\n", - "\trecipient: bostrom13c80ka49qsg0lsm7zsv6uq3mt9ncaj6cznmcee\n", + "\trecipient: bostrom1s88j6gcnydvq8l8t0dr2mrgnhll47pedun8zf6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pmtwzzsemwsr5nnwgegxa7452r9w9mmz9l5vxx\n", + "\trecipient: bostrom17lgqcqhr3jtjx7244yxa44cja8a7vwepewh98y\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pfvph3helrq9nkhmt8jr7n76yw7ym3v7g8rw5r\n", + "\trecipient: bostrom1em7vxfvhp5aeqa3xsr367thkqt3md4r5p45ul0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t6fejvlnfxezqu3k7e5wtls63760fcrr4l8hlm\n", + "\trecipient: bostrom18tyyxsqekxc40y9qducfuglsfufq2vuhmgtx3h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wmfnfa3dckue8rzectj3mwvn4tu8f4ksy0uz49\n", + "\trecipient: bostrom1uvvc5x2rwttfcpnxle43y9vvvm0gy62scwedal\n", "\tamount: 1boot\n", - "\trecipient: bostrom153shdlxkckq4rqzzvy7dv98sdkuvvjj0uk8xer\n", + "\trecipient: bostrom1jfcxjz7qfnpddcs6890ad65cnyv3yrexrnehr9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qqlgcpp8vtrmwf2h26r6vwladsqlyp0e3z355q\n", + "\trecipient: bostrom1jxkjtag2afqv60ce7a57r88lqt9gml5eaxy2mn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1png54rm48dslkqcpshlt5hlyk6ltg4jhynasuq\n", + "\trecipient: bostrom1eg5ur9mhtzwgca2ewzf4dturg568h95hn3pplu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1j7jtuvzvmr4ny7ptepk7kfzxyarph5wmgdsrtl\n", + "\trecipient: bostrom1m3qguyakr0zdztt7jnhrw3vekgx3vmh3ukxyaa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jdelca68u68nzh2vvcmz0d4wgrlxt6j800uf6h\n", + "\trecipient: bostrom109rx5wc09drz6mgyrsmg4478jwcgersf6f6g4r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kcfxzezjswl59lrvuh8ue5erp0lc8z6g4hzuw9\n", + "\trecipient: bostrom1wwq8ry72zgjk07w3s2lf7eudwan5j5mv276fjf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xjme8f7j48lqe92kf7zr4n5lety0nysy22v86t\n", + "\trecipient: bostrom1mdge8e9hkyge9gzyjxmhrqsryprx7nspgtstwd\n", "\tamount: 1boot\n", - "\trecipient: bostrom17pz3k0j896c3uk4u2f0s38m52atl80fxw76lh4\n", + "\trecipient: bostrom1upytuk9llk5j79kqpddmhujjfuxq7ldgevt4gz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yzkts87l5pavkpgu8pufaexkqsflnll427ruvq\n", + "\trecipient: bostrom1xqrkffqdxht23946uvewg4smf6nqnkmd7pvqn4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r9vljtq3elx4rcuy7j2t7u2k3y80gnrmty6vw9\n", + "\trecipient: bostrom10tl26fsefa5kpngnrv9uqlj7u0c56twkyzuetr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h7q4ga3pvkzwjq4t33wnsel6ufq5490ymkpcqf\n", + "\trecipient: bostrom1danfj64ed8pexp58pau0tl0mgxksdq6w8saw59\n", "\tamount: 1boot\n", - "\trecipient: bostrom1y9w8asyqfrdh2a6444q2setcyf5rjupj7fgfqm\n", + "\trecipient: bostrom1stgue49navx5apt8rwl8nzpl5e46qz87myp8fu\n", "\tamount: 1boot\n", - "\trecipient: bostrom14rrrzyfapqxcjkkde43v8euecalwcsqgjr2wj8\n", + "\trecipient: bostrom1nq98p5msulv3n42k46du6pudjv8jhsynn85dfd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q5ccszy2ah3kr4duagz3fcexpxhreuanwf7y0x\n", + "\trecipient: bostrom1k64h88qrev7dyt4mz8wesc064unrsxqrcvagkj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1p48v93pt6x3v55q8tmc6m0zz89x4mv8zrkw0ke\n", + "\trecipient: bostrom1ysm3x3h7vnzulqmpf3llt6lvweg3jyjl7fca69\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ncddg6ug3z9nurnvxs68yes7jpkkdf64r0gxw9\n", + "\trecipient: bostrom128547p5nc9wl24n372s9nuznyat5pmdfey3mmm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cqrr48fuh7a0lvfkvpt64ew8qtyf6wdp3p3sa4\n", + "\trecipient: bostrom15hfatjmfn4pszwds763qcxs47rf6dxnrw7uzkk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tp2r22hgtjaddj58ru6nqq3aa2jdv9ulglw7ps\n", + "\trecipient: bostrom1fqhzscfn88ez6a8w9p974m0y7tkaelel0kpp9t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ffyxtwy5auxheqa4zsf355ccpk9mxgt5384lrx\n", + "\trecipient: bostrom1yztvd4yv5lqp5hp974efndjs6sncsfjesd8xxd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gvtm8jmja2p986qc3zdpl283n8rxz5ajx308ry\n", + "\trecipient: bostrom1ndt979njhcmp79qx8vpsuymuwncwaz6kedxszh\n", "\tamount: 1boot\n", - "\trecipient: bostrom17f6j0cpkpsu4kq4u3309xayngjc5jwpjw6cqfg\n", + "\trecipient: bostrom12jqcascyg2j5fasu4u2wlc5uazkc00xnt3fuph\n", "\tamount: 1boot\n", - "\trecipient: bostrom17vwh3hamtymwk7wfzfah425sjhwgndy9x24z5c\n", + "\trecipient: bostrom173jnz8suu3zy4dul5yfwe92nk6lwh9jxjqnvll\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xs6j4c2ty4ewdxs6wmuw38z74hgxnq6xq5s2gn\n", + "\trecipient: bostrom1j2je70ls73rw0ztyz9yc5590gw4e43a9zvhy4e\n", "\tamount: 1boot\n", - "\trecipient: bostrom13fkzzn589ylsml8sggefzn6sfhxtspxgg8jxaa\n", + "\trecipient: bostrom1gpzc9tz07k9rugerlzfnr08yx08095tzzqvcmr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rs5ma0lf343n0d2wdpt42v3wqnenrd6cdxkhxf\n", + "\trecipient: bostrom1r29tlqfctx99c7msv3fy96l7u6k6qkmlrczpc6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x4dpwdk82pzcg5n6phav47slfcymv4a5f5vyll\n", + "\trecipient: bostrom1xngf7h58l3szha03vpmanzhaxpnyxwy3rrypyq\n", "\tamount: 1boot\n", - "\trecipient: bostrom17zv64shm4lwdlqnmx53yjv90ywv8eutvrahvld\n", + "\trecipient: bostrom1kxf9xwksy5qxjwzu4pus0n3xmtp6458e6yk754\n", "\tamount: 1boot\n", - "\trecipient: bostrom17flwgp3d9apaaf7q8tn4pylv73v5glv5clkz0v\n", + "\trecipient: bostrom1hlcr6x4g6vel2tmw0y6lyd4j3dgxqpykx2zx99\n", "\tamount: 1boot\n", - "\trecipient: bostrom12gn059recljdtxl4rlvn7873r0687qvwcd563p\n", + "\trecipient: bostrom1psfj2tyxdhy83r77ywnxwvgld2xjh3tg9kj2qd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1caw8zz782598l8t8gwqwk33cnsz3caqltun63t\n", + "\trecipient: bostrom1umml2zvzt8vpsak6nkr5dlvj0jv2rcxsy9z5rr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1p4q9avu6gnm7vdpjhe24zglufxg8enenmsy4jv\n", + "\trecipient: bostrom145zv4x4va2kq89qmz9pxtxm27vg6lxkjsggymt\n", "\tamount: 1boot\n", - "\trecipient: bostrom145836y7hja9cncgs46spy6xzefvl87h6gh0tmz\n", + "\trecipient: bostrom1ayvsly07neqd6kd69arzcrqesnxvhggs0aueyf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yel27hz29t99fcc9zt20a6he6qfx74hrap68x6\n", + "\trecipient: bostrom189jmn5q9rhy30uj82fjv7mfmcq9437lenec2sx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zwzuwp2pd737jk4deptsfv6l04r02av43ymgem\n", + "\trecipient: bostrom1thrd7pwa670ekpydnwtqdfztq2yyv487vrdwg7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dvnskpwrurfl7zhnhv6z8dp4pwv7yjwqrr9r9x\n", + "\trecipient: bostrom164zzf0fnwyrqtddz8vmv5vg9krcq95g9qvv6pq\n", "\tamount: 1boot\n", - "\trecipient: bostrom124ghrls84red03cxkqddw0r8r9gdwaml22ee8j\n", + "\trecipient: bostrom15kd8mawqqy2xc5ccqn6tt92cqg60fu5uwmq2p3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vy6re6hce6jm393j3srg67dvefzeaxck94frr8\n", + "\trecipient: bostrom1uejtuq3xjtyg5yn94u2v4flpu35rqj8zxkczyq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1he4q77h7xmrp06uusdy8ml3tyh9s4v896t7c7q\n", + "\trecipient: bostrom1vgdu874958lvk9kns7dczjzynq557n4swplf3t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1atmwph4vdk35npt4kagup64ntppe4puwcus2kh\n", + "\trecipient: bostrom13zchywzrve3adnlu4j25p6gjpk0p7uwstx40xf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mhc863res2rp9wxmedffr8gqyqqj08v0l67nvm\n", + "\trecipient: bostrom1nydqmp4rf76suxcf00w9akyjq6l63qv9mhggpa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x598fcfkucz8wwak6yg7mxvmpan4rjp7h7ewyq\n", + "\trecipient: bostrom1ku6uru53qm32xvdnje9k9g40klf7w7rkuqmd80\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qx63pxw5qzc0t92rtakr6ljyg9ge9vz4cnrsgz\n", + "\trecipient: bostrom1rfgz5numwafwycvaf2nar7s9etfqjtampy2sfr\n", "\tamount: 1boot\n", - "\trecipient: bostrom19xlqckcfejgqpvrhtmjgctt08s0p3l7xv3aaww\n", + "\trecipient: bostrom1qv7lsur9pg6clvzjj0dm0pyufxwe305u5legvw\n", "\tamount: 1boot\n", - "\trecipient: bostrom168ls65gxjl29pwuyyx3gced4njymv3vdfre5nn\n", + "\trecipient: bostrom1q4zth8k2f4y3kxs64xlqdu6jedrjxsnj0m3jwt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rkfqct4ter3sf2yxxx5suhkgzy4nqwgkuhezx8\n", + "\trecipient: bostrom19aet33cr8j8rnk9nzcxzx9w4czyry4gh7w3ct6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g7n376gyl2a0jlmlmjsla9ntq0a94rg075m25h\n", + "\trecipient: bostrom1zs65q24dsf04wjjrajs4qtz5ggvv79y0styzej\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ulthpdsy8urseckn307vtgrln6l6p5tysmu37t\n", + "\trecipient: bostrom1rr2dqjr4gzwl35z7r34fn9t2ys7aa3lmza898e\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yzwzqjs9g4rwv3qguf2ml8gsj5x9qgywqxdkx6\n", + "\trecipient: bostrom1nnn4gky6eavt2ldhf2c9g7gk6ya0d6e3p5v57p\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jgetn5srmpjpj5q9n8gru3unhn48w2sv98qlka\n", + "\trecipient: bostrom1s8q6apcl9tr6285vh982x2enfw4zquf29ggvq6\n", "\tamount: 1boot\n", - "\trecipient: bostrom18jmx20hum6xj08crz9pnmuh83lyf60he03chha\n", + "\trecipient: bostrom1g2mu5s7r9j3g8lzgr4luzdnzzyghh7fyhwjtfc\n", "\tamount: 1boot\n", - "\trecipient: bostrom13y9ld8qkhvwas0cyn3p8pf5uutl4dr99lxafun\n", + "\trecipient: bostrom1et5y4vt0y6hnf5vffj5v0xl3k2z9gydd7tnxuh\n", "\tamount: 1boot\n", - "\trecipient: bostrom15ksh3m2zznc9xqvfnsctzkh6sxx7lp4jst9sfw\n", + "\trecipient: bostrom17y080jk3uu5hpx6rgx7z5lk6nd5qdpdn4mzrs3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ldwhwkchu3detzr0c8krz3a5x67wgmh5hpldh0\n", + "\trecipient: bostrom1tzltfjtmczagn8x2pe9q5m9ezzlkz2ep3dhxuz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1aj4n8fzd3t6zeev3gk9fw02sth0jslsqkly7dl\n", + "\trecipient: bostrom14gh7k5aptk3mjjaxaapwme4laqx7ggxjqfvn7j\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h58ae2yurf7ud5ks3p9v27qc823nm3agj3d7dh\n", + "\trecipient: bostrom1xqlz2270yglyjqnpdeusff5a29ekczg0xcdw63\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yzhymlt448me2qnacd6069gjay9hudflkexulu\n", + "\trecipient: bostrom1jethewm6e3elgwa76cgx79ar78mgy2dk5s6a7r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rv6nc70ute7l7ae6xrrfw3cfudxhkkclkjlzgm\n", + "\trecipient: bostrom1j59389n9kff0w4nps709qh92r7lsakjm9xck3u\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n7px7k4aeyv72kymw4h2r9hnet5f6rvv96w50p\n", + "\trecipient: bostrom13lkk338d5m3n8tkwer2r33cakaykrn7z8ryn2x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gg5p9r6gqyxx2cfaalytmt34ke8cs95k97u60y\n", + "\trecipient: bostrom19ms2y94azy86e4z0wcnrsx00635490tp6azzmh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1suh8jh3scj9q57ryelutzm2mk4x2ph2uarcej7\n", + "\trecipient: bostrom1qynu8e696ulvpen9fcttj8r6ht9s9gg4gl82hc\n", "\tamount: 1boot\n", - "\trecipient: bostrom15u3tsczecjfyk8c9xwalx976h3anvw6url4d0a\n", + "\trecipient: bostrom1ll0afd6zdchggfwa6lzt3mjfjq3qasrvgtrzq8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ph7zufdg9j69ys3sjv6y6wt57aaktn84pstdfg\n", + "\trecipient: bostrom1przlvk8clmcp4cc87uzc5xr94gyykelka5mnvg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k3dgc96l9frv60wc228exfph0647zpdrq8pnut\n", + "\trecipient: bostrom1em72tcnysqceypur446yd5628n9amjmntf25me\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fp4frdj8ghsxddx3l9v3vpfgut7ja8f67s4dmt\n", + "\trecipient: bostrom1c32vh8wgxhq59utlxq98ehcll8wrlwr6aajp5t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mfmzyy8a6kp2yp0d7h9xeq4swlmp599c8yw8gf\n", + "\trecipient: bostrom14xfewd3fza4uvu5u9z2d4qjvrwghlzp4sdgkz4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nwm3m9ralaudmtsum6utrfj8gz8z22ews9mme4\n", + "\trecipient: bostrom10xph29xxpa8ruud338mj3a8z2lfc8dxpqr7npg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u5zqu60sc66vwzv96f5v7cexz93ejj87wztl6r\n", + "\trecipient: bostrom1rlvh6mjfux4mpvd6g0hmw70yr6dvthu4y30a8j\n", "\tamount: 1boot\n", - "\trecipient: bostrom18u53mr0vp0pp674jdl3x6exdv3knn2pt20mnsu\n", + "\trecipient: bostrom14j67e030cfrv2kxah9znd6nt4ufpru22wj8ctf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1586nk9mpr5nzvnkehra8jsutvpen8pqau7f7re\n", + "\trecipient: bostrom1g8dx5jt0uwvauegwkslg9rmvq4sj7tcgr6jskg\n", "\tamount: 1boot\n", - "\trecipient: bostrom10wundhk9hrq46lj6dky3fkghnnr6jn4efkxjyx\n", + "\trecipient: bostrom1hs7zvnk52fdtzdukzrm0wva4f7grcc8wrhuh35\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hvzyvpfjdtwwzpqhu7mskct2utxqd4t7r7dqu8\n", + "\trecipient: bostrom149nln3f7dul23usefemz6cy4pme5074cncmew9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ghtn8pu4w6zp9upmj6p5c4epg2442ltgrtxysg\n", + "\trecipient: bostrom1gxkze6g28glmhedc8dvnjwp3z4z7p22h2seyty\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rtfpahnnv0n7q5ke46vsr9dkrrrymvmcqutty6\n", + "\trecipient: bostrom1petsfu5yley9txgp7mss34tgxrddh89q6wrzy7\n", "\tamount: 1boot\n", - "\trecipient: bostrom19lek9havtt8cgmmjfxh2kqmexy2tvul3msdtag\n", + "\trecipient: bostrom1w05avl5wx00ssttv0vqafehf6ms38zvn38c7mn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wvh7ay5xxtc4a0k9t5rk5z5svk0kdsh0zcrs8p\n", + "\trecipient: bostrom1tnx9uxsdwmhzkr045evm4lxpwvwgzn4mjf0ty8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a9ynmx23rk7wxvya2r5flrm7x3ygdmlecfjg4k\n", + "\trecipient: bostrom199fayskkn44y48hn6mcs0lw2zjvuns7njxu0xx\n", "\tamount: 1boot\n", - "\trecipient: bostrom19yd4vl3fyre0zuyxqe0s73ljs6j07l2f6ytw55\n", + "\trecipient: bostrom1tm5zxzrm69wu7y2zetqcedhnftulypkq4vd2wm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d7dlcx0rk8ta8u7dqh5ev4unkg9wvj5wwdhrrc\n", + "\trecipient: bostrom1daxqqcn3m7r69wjp6xu7zk8s8z3hlm795nez4a\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jqt0537ezrmyc86avjl4pnrtmtze25xj2smjgh\n", + "\trecipient: bostrom1g5r887a5pt8nx0ylhyxlcx3weae5dqgr84whzn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c6w6k242c3vnu52sqffungud6l4prlskv039pa\n", + "\trecipient: bostrom1vqgqafc2tlayvw2xmnsd7540sevtgr2kvpxedx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jngp0enkeq6my9j5qltkz7r2gad23uthhqmxeh\n", + "\trecipient: bostrom1ulkl6uhk6zjv7kslcge2a5gr4lr78znyycrkun\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kttv6q2swxqglzfle0f8dugu28evdramef7dpj\n", + "\trecipient: bostrom1nptkrzsak4u8c0gld8p8pg3xdlkhkpu4n7r08x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pdk7qqmrkrfq2fn2k7740fy9culyp874qlx4h6\n", + "\trecipient: bostrom1w6zrcfds5z0pcwugzwf83ytg95h6n4r34q86yl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jqz98wyv6zahnjnyq8yyvqnhsc54y8wt7ytjtm\n", + "\trecipient: bostrom1nt47a5w5at8pxmwzshzlpgmw2yxpae65rnyuf6\n", "\tamount: 1boot\n", - "\trecipient: bostrom16exzpafaghdhdxvz2hmkvv3clzu9my9jr38tv7\n", + "\trecipient: bostrom16sftmwfuv6nedvcessekhmyhunf66zp6dqfj07\n", "\tamount: 1boot\n", - "\trecipient: bostrom1afaeqe33dh6errx5mjkgjq0zxkd26j43nsze9p\n", + "\trecipient: bostrom1epft88z4kd5ru720rma6grgu8efgm7fhzj78g9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1aqfuzvmrr3aaacq5j85ckj3d8pcr5v6lynny5j\n", + "\trecipient: bostrom184xjz8vshq425ycck9nnq83nessnsax7gku2uu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q0rkaf9es0m6l4a706a5kzpla8ydmjamp08eg5\n", + "\trecipient: bostrom1ujtul80utrp6ns26wegxmh8d2g3yts2y94ve5y\n", "\tamount: 1boot\n", - "\trecipient: bostrom1de753cdsqrfzt6xaj9l49tq0hftg777fgjau3j\n", + "\trecipient: bostrom103rewrzpp4x5h376muqvnrf5hguazj9pr5lcz4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ttgrdeql2c4rfp438tdhxlsn0fctrkr5yj93jp\n", + "\trecipient: bostrom10088lgy06aqh2h069ta3lteya82sfa6a57q0vl\n", "\tamount: 1boot\n", - "\trecipient: bostrom10kqyvgu9nmavledpxz0dyl6xngffazacej435s\n", + "\trecipient: bostrom1sgdwuh454hj65wc3j2uvfea05uxcl0s52fcxqs\n", "\tamount: 1boot\n", - "\trecipient: bostrom106r5hg0vgl7r0qw9qwjy4xkhwmfq99tqv3g2fr\n", + "\trecipient: bostrom1z4qjwwll0lny909trmvfz39nlr33jg0uqgvlv2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hjtx9m6574knhuagvqq693rjrm9hekypmkx3zw\n", + "\trecipient: bostrom1zpw3s3u6gactryt5yt8fsu6ppqk9zdm5e4rs8w\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z55sx5azkudsu8s0u08k6euaq3s7x7fv28l9s0\n", + "\trecipient: bostrom1j7vq4k2t643usgezf0728u6e28hl8g5z74j4wg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r3hmj9vf4xpq8ax7vldgxty3qv288muy8pllm3\n", + "\trecipient: bostrom14gfr6hy46mpyzet0j4y2zeyjzr22ywf60mc5jl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s2arqqdg5a90gmns4t3ha43l5r2luza46g03ay\n", + "\trecipient: bostrom1tc2ww8z0xgtvyum66ee9qe5v40akgj0nhlgh0m\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w932zxzuzp52qvf7twffp9a0ntnve7yk97usup\n", + "\trecipient: bostrom1d9zjqqr8a4cdkl6p26hm26wf7al5lut8kg7wmu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lg3uyzlx3rj7ruhc3gu7yzmdya9z5azv5pl058\n", + "\trecipient: bostrom17hp3kkqsncad639xgwt97mznkx4q8e62j3lf2y\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wz8v33fxdjecn2y39x6nqkjrpnz349f46rea5e\n", + "\trecipient: bostrom1ryesa9tv27z6w7gl60k6d4n6e8gwsjfuv59pt5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lrn69tej5nh2x4s9r9tzjhjl2l499fa8785kvy\n", + "\trecipient: bostrom1mgwuuflsjzd22yexwsnxfuur45tj6az8qu47nz\n", "\tamount: 1boot\n", - "\trecipient: bostrom152pr0x9f9wfp3usguulm4n0gerekr95rpy7fq4\n", + "\trecipient: bostrom1rayd6yd48vx0ud2x7flv2km6sahhjezv8hwaaj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cvq3r8lrws9msqr5hr3rn8m43xvp2hdygf7d0n\n", + "\trecipient: bostrom15c6vlmhp0n4egxfc6gj64j9vs9hg4haddng6hl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vfqx7zxcl2s6tpa0sc9xl52hfdknhkek0zrd8u\n", + "\trecipient: bostrom1ddrqqwk882pl25qeehan4z955jq46xy8udxxul\n", "\tamount: 1boot\n", - "\trecipient: bostrom1l6udntq36grf20uygj3pxajvp7yusej5r69ylj\n", + "\trecipient: bostrom1e048nd27ukzr67pj0tu2jluj324mw9cpn5jn4a\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zk6shgm92yk8yexjeh48qclk4redknc8fy4azq\n", + "\trecipient: bostrom1ftd2kmryv025lxjy849d9jlqmnf2ecx6mhpzu2\n", "\tamount: 1boot\n", - "\trecipient: bostrom13nm6e2ln9p38jpjxrj3d8q2ch3urflwspcjezy\n", + "\trecipient: bostrom1fcm3ane7jzchnm3em85utfapk6kxr46rl77xms\n", "\tamount: 1boot\n", - "\trecipient: bostrom19ygcygl49az0ru68lhfpg345j25zrapnxj3hg2\n", + "\trecipient: bostrom1vpywa0mwuc956g9kz2slkul07jky0w347saevk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fa4upw7gf6ul8avpfhfvv0jg5xktagrgq8gzen\n", + "\trecipient: bostrom126sqzdjwrs5vdpy4rt8u6qp6pzp78d53d5jku9\n", "\tamount: 1boot\n", - "\trecipient: bostrom19508ffym49xtcwsz6u2ldj6xd7xdnaknayc4fu\n", + "\trecipient: bostrom1sst7l6c07l9lzaa62h3f28jyt4gu803xv2nw4c\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nhmfha4xwszukn2u7c6cd87fnauqtsa09sc8cg\n", + "\trecipient: bostrom1v7zngyq7h4vy7q0e46sp0n5v7ac3cufx9tk0yf\n", "\tamount: 1boot\n", - "\trecipient: bostrom129w2sh44tsw6sxk5d0h49hc3m99pzftxej9afg\n", + "\trecipient: bostrom184juz6spsyazh5qmtnf8hm6a3w93wfgqzaml0k\n", "\tamount: 1boot\n", - "\trecipient: bostrom16302hu2dg2xjy5xa5yjxp8j09xzztxh62xeehq\n", + "\trecipient: bostrom1k2y5wxn3y83g95xgtkfgc9h5vchv0rmpha5tlz\n", "\tamount: 1boot\n", - "\trecipient: bostrom10y9jczg354mwvgcgvjxr36rzykr3vnpshhrakt\n", + "\trecipient: bostrom1w4xfvyleucjy96s6glzjc7x8qw7zj826hjtpq0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zpz8ey8v68xlfy56h27ea3r2cgy3c4gyuxpzvm\n", + "\trecipient: bostrom17drstn9vgea8kg6lapz0mne7e9hwqpm5xnk9xg\n", "\tamount: 1boot\n", - "\trecipient: bostrom10gtkzrzgwsdgcwz85gs4jggqtq698g6mapvlrf\n", + "\trecipient: bostrom1eq7s2ke9tyveq6hlsd92q4n7uet5gekffjhrrv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yzgurzc5cvpa4dxmxxtp7wu32m4rurp8hsn9aq\n", + "\trecipient: bostrom1v78wjqz9c0p8k56xmrw3x2yx84m4s08khyjc99\n", "\tamount: 1boot\n", - "\trecipient: bostrom1csea06lmljug5v8przsujr0y069ap05a9ezfap\n", + "\trecipient: bostrom16fel77jl9jut0r0zwuj6pr59z23aaja5qdzpnl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1827ttnrfdnalsnpqvwlqgkvrf00xya2g9tx5de\n", + "\trecipient: bostrom1qhr9hqmufefcy88659d4w93wj0w44uk9ncvc2l\n", "\tamount: 1boot\n", - "\trecipient: bostrom19m3fxeuve3rafj8cl2cr838wmauvknjrlnsg6e\n", + "\trecipient: bostrom14wscpjhcu259qnayu4j2vv4hmjfrvynz3xqcmj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x5pnz7sjm7leg2mcm0fu7w6psm9g8ng0cnf60w\n", + "\trecipient: bostrom1m6u27qyeur9hz2j07gypsu78hdet3vj07amhxt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uezwwg77n6pm2vfwac9qsxurrfm489u6e7qgaa\n", + "\trecipient: bostrom1uv4yls3802sctu8l4yayh5wntr9gat6zgkyvvc\n", "\tamount: 1boot\n", - "\trecipient: bostrom180dtwgd4tkvgda4jdg0qsg3yre4zq992j0e3qz\n", + "\trecipient: bostrom12lrcza4k7ejddw4y5ntxr97gwgz8w45eu4rst9\n", "\tamount: 1boot\n", - "\trecipient: bostrom18juvm0akzgj0dt2v0fnnv6u88ye4h5wm889gyf\n", + "\trecipient: bostrom1ak6azsz696d7jyl2akyqn84w7chckt50te2wvm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w3z6wqu55gmtmvpaqnp53ymvjvyezaqlazwgug\n", + "\trecipient: bostrom10syyl7j6dw95q9y0syujgr282ftsxfd5cn3mml\n", "\tamount: 1boot\n", - "\trecipient: bostrom15hu8fjcef2tk4ytw0cu0va2kgmam26rh4wh8p6\n", + "\trecipient: bostrom1ygmzuh9lnjf8lpghna0c8zye2wla8z4plnntjz\n", "\tamount: 1boot\n", - "\trecipient: bostrom18d5fvvuqz8et85lwguufwjykalnxyef5r4pm5l\n", + "\trecipient: bostrom1vdekduddfw59t9gafeaa8shl90zy3gjv6vsz7x\n", "\tamount: 1boot\n", - "\trecipient: bostrom13hm8uqysw7j6yq9cqlx0zea0yhmcucd0496sn7\n", + "\trecipient: bostrom1p4f9trghseul2wvmuu98j9y2htwk9cpxu6ddmz\n", "\tamount: 1boot\n", - "\trecipient: bostrom14kpejxfh4phfhm5tq6m6ezktfa2w2ukq9trmra\n", + "\trecipient: bostrom1asv4hz84gwp3vdjfemzy5v8eyqe7cqkzx50m9z\n", "\tamount: 1boot\n", - "\trecipient: bostrom16ax8kxhjnjtmem9rty7lec5xjvu6u384ne7uze\n", + "\trecipient: bostrom1vh3zxzpd3guwql8guzpdlwg2w0ka9s64enywk9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cjv5epft46zc2q6tvxumpndstem9w5cyagy5eq\n", + "\trecipient: bostrom1xwlsur4rnc24yqkdm237qezj4cp0039xmk5dh9\n", "\tamount: 1boot\n", - "\trecipient: bostrom18ja48grh4r8ugysyuqvl04edyyrtml0n5vwqs6\n", + "\trecipient: bostrom14p4t08rmddfrqjgq7n2aj799sp8sq02qyjt2td\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k2d5j6jttke7pzjy3aqnl909f96lke8p6uqt0q\n", + "\trecipient: bostrom1t5kjnt70d4erhrrfntljcsc5qt8493cw9da4pm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ngnxthqerlvjeqg7ynl7mxqgl6y8a69348xgmw\n", + "\trecipient: bostrom1yutd5aj8ht0ghu403qx73zlmxwle04zgc9tpaj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nh6guse54687tvwn4drgu0n7avse6hlefq8naq\n", + "\trecipient: bostrom1n7asgsh0tzsue26ectwrmy0egje3q6h2m5k875\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gkj3p2yuwlh9gj0zc3ussp30faxvz5vwxnlq9u\n", + "\trecipient: bostrom1y6kfeey83ru6k44mwkf9y8ezr05kyrv3v4uduu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gld5tp060m2mcfd8zp78t626558ekp7hrprcuw\n", + "\trecipient: bostrom1jt7rpmgmmk6jnwpx9fnjr4e0h3995rsjqrmz83\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ch3m28ln5kch7afevydqyl2zdqexv5xvjrafcq\n", + "\trecipient: bostrom1me9hrukz9vs52jsqutnk9yllefsu6enhprs28d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mccnzyn9wapyl0t7mqt7npuq7khvqtpl728y9s\n", + "\trecipient: bostrom1n4sk0pcdksvz7p80nvyzucrfew23nm8xs9rdhw\n", "\tamount: 1boot\n", - "\trecipient: bostrom133d3hmrly7a0dvx2j5u5gv5kwkcw4d76ghrwgp\n", + "\trecipient: bostrom1ex4rfhkx3a0q0086h60hh85nq6rhpkur7ksvpg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ctgfyenf9pfy2zz7hvkjwzpgfyh088qwmyqhf5\n", + "\trecipient: bostrom1jxjz0525sfdl569zrf7ehvflmvdcqe902yks7l\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cdf3875zusnwu95dsu09a9ahez56g6xcz625d9\n", + "\trecipient: bostrom10cfaxm9jnvr2xq3qf79d3k2lz0jwatn5ga3x6j\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rk7e4d4ggk8hz55k2fdslsmxac8lm6enx4g2dk\n", + "\trecipient: bostrom1yvr9hhpm9pe8hdujamzk9qcs70hg3autf0ndjy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s8kqj6074x54hu6dtwmw8rhnqpqncjy26r07ma\n", + "\trecipient: bostrom1ar00awcunha6r043575gr4xeexcp4f5ktewzre\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ssqz5c5y0wyh03cd9u5e3cxac3m55dqva7vrh2\n", + "\trecipient: bostrom1plrnf694p80ukw2fw2ptdph9hcka9k923vf4q2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hhqylnfvw9j39a9xsmq2yexy7ps9wd875cd6al\n", + "\trecipient: bostrom1jf75n5znd7m7fn8y59puknqcu6hfervmjcx0s7\n", "\tamount: 1boot\n", - "\trecipient: bostrom184zw5t6yh2qf8g7sj5nn58wun79newd6rhnrjl\n", + "\trecipient: bostrom1g8aky80rlmhf579vf7yn2wdwjn40ny4q5amqnx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hd2kndfelvkav5gr8ftuncs9hu2dztwd7245c9\n", + "\trecipient: bostrom1ax0sus9vpp0tshejpntezywnhuw4uvcyujfspa\n", "\tamount: 1boot\n", - "\trecipient: bostrom100x0v0mqlmc7pzhd5028jqsdtuc2s7x6tjq79d\n", + "\trecipient: bostrom1pa5p2yqpr0h7m7hl5td4e0fteugvr2z8ptpztm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n7j5qp9yg52u2wpq2cjcfu2lkmjlw5g90asmvl\n", + "\trecipient: bostrom13sgkdnrwk7arajhlr2kzspcp59k7ceg7arqwnn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fmprp74gpyusky9xhwqxqexyq985w5z3uh9zms\n", + "\trecipient: bostrom122j790ml8nuc5h2zlsfj9repee3ajc9fwz7dct\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s23g7yplcz55p92g8xd4hce4qas3n2dcxdpsu3\n", + "\trecipient: bostrom1rq652x6ud7awa5cm9ns8fs6w5sm8ttzsap2l6l\n", "\tamount: 1boot\n", - "\trecipient: bostrom19j3g8wrpkgwur24ftwrknesmanapjax9we7qn7\n", + "\trecipient: bostrom179jsu5rjl9cqcawxzxn7s6xt4styh0h5jq5v0d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1j3lquel2264yrle6vzkjljmqv2yv890j4zn8w2\n", + "\trecipient: bostrom16q4kku243lvff6j2ej5t64hqja3lvd9396e6ap\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ks4vj2yvx8vetxs69g4hpu0mhg8y3wfjun3cx7\n", + "\trecipient: bostrom1enthteulhey8mvt8znnpd4h4z94v2j8xutrr3a\n", "\tamount: 1boot\n", - "\trecipient: bostrom15amxqxhxdydqxjqgytlwwvj3t2fsu5gd9xwjwk\n", + "\trecipient: bostrom17nwths45z6ss35qjgy7xawcwdhcgxsvgcq5n6k\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gnu25zshmzk5k0mg98fkduvva9xzkzjg4wvn7l\n", + "\trecipient: bostrom1rhrx6wzps4ma5q5v6gadwdn2vexq5gyjxf9fvr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z0a86fn3sx2keeay0yrp4pa9hj44yaunn0f6vq\n", + "\trecipient: bostrom1d5pgxwghy5juxsgv0refx0t2dp9wq96xafn0sm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q2ax0058jktj4fhaux953cch86xy6gc7jegv2n\n", + "\trecipient: bostrom1c2xytkp3nj0yp049knmnj65c6zuur3au2kya4g\n", "\tamount: 1boot\n", - "\trecipient: bostrom14eluumf8clc9eu9jx790zhr96tvtv0f4d640jf\n", + "\trecipient: bostrom1dskcxlxwdw3wq7j0mvgpz2h7k6h468yq93hr9r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uaathhmtr5g3euk9d0zu26jwuka9nvqc7kaw20\n", + "\trecipient: bostrom1r5uuka7wk5m5nja3cq5ers56la5gepnfhjcn6g\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uml7z9lyulujgthn76hw6xr8mfynlmm2qzht8v\n", + "\trecipient: bostrom1200g56thtljw3n4rvh0z50nd96h356cmsa0js9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rq358dmvfjd49zq9rtg07su2tzpr0g8wd06rjx\n", + "\trecipient: bostrom1urjg5e6vgs8y7jhtualkm2fj0kx4206nh52hrg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jux0l38zhkarhj3zu27ulahm4rjrhxng9q0uf7\n", + "\trecipient: bostrom1vzm9tjfa96js7h3xqt5xqw8kyhpuduzpvnvt24\n", "\tamount: 1boot\n", - "\trecipient: bostrom1p5gnl3guvs8pm6yyeaav87xezg5xlnpg832484\n", + "\trecipient: bostrom19thy6d0fsdj3pfc5xwjk37zuahestag6qhqgkt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a9yxrfqvwpws3jnsjs0ylg0l8qhhxupelj8vzm\n", + "\trecipient: bostrom13670acutw64ms5dyhgz6jtwm9s24sc9jtu37va\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wqjjchvmupxcmqgq98yqu3s66ndhk3fkt29cm5\n", + "\trecipient: bostrom1xfr4gy9hltw5k0l7txsagujze3mupndpjy45sq\n", "\tamount: 1boot\n", - "\trecipient: bostrom10nz2c8mcra3zhk28gvawv3v30h4wzyfekjmqwt\n", + "\trecipient: bostrom1tdmhjrtwe72pcrvu9998nkda9kl5lzud6r86y6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qa9nc8wde7glu736ea65upz7lnxwpqaq73nxqm\n", + "\trecipient: bostrom1jgjtnkplk6pkemx7cv27ysd7cvhjzqutgum0vz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q6zq3hx8djgxuv8lkgy2l8e2jkwep96upt2pgd\n", + "\trecipient: bostrom1xgyhs4wake4w6uufwwek99g3dqnjd6fnd3cchn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u508yx46lyulnawc0d3839ur8tsnsaqvt7l3c8\n", + "\trecipient: bostrom1cp2ck5u758xjxs8j80mpxp3rteuvxjklur5tg7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eewuy8malwuylz5rn7cclfpsce32hpaz7r7rsn\n", + "\trecipient: bostrom1kuvtlrf4awdvf0yy8hs7hwjtdg9peyxj66nt38\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wc8hk5pzf4r7ndvwldnkedewn0jj6xmqw2txk2\n", + "\trecipient: bostrom1jm8j625qtz374el380s8p8nl0f3yew0jksqqvg\n", "\tamount: 1boot\n", - "\trecipient: bostrom147squjzjk9d3sxyrkvl7txa07q56fahn494te7\n", + "\trecipient: bostrom1vuep7lev6cdmj39ey0sxm929jp2pqsyg2k47cg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k4fa0h2qdwstpjhx6yfdfds4etmvtyu0hpf24a\n", + "\trecipient: bostrom1pgwkcsa0u27l2sgxx9h05wv6tzkwkucr0flzjn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1udvw8ygzg6s7xn2ne0xf54txhv773te8047whs\n", + "\trecipient: bostrom1n0jy5ekhm3j2az428m3hswfevwusl8h39hdaem\n", "\tamount: 1boot\n", - "\trecipient: bostrom1djy2l5uny3qfs40tym2zq28lwku56vdrglz9j0\n", + "\trecipient: bostrom1vxkcnm79xrt43u5vt64yrs78zrh8fdl0v889kx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yx2p9afwr9yw5uq3dt2y4d73sz9chre657twqd\n", + "\trecipient: bostrom15x69fvvfxhjdw2ad0rxzeanypetu6qzr78fug2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gw3xswcqcsyzlahtgp8tms9ynhx8mp0jtxg47c\n", + "\trecipient: bostrom13uzzwuk8fjpd3yt4ssnaevtvys5nx9l69gxs0z\n", "\tamount: 1boot\n", - "\trecipient: bostrom12rp4qdvhqk8k0gvvsyqzdzvwpcdku2pjcwahg8\n", + "\trecipient: bostrom13xwzhhq6m52z0ysk9lvyvgtr7d23e83hdshumv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1306923aatalvyl2ryngvm43ut3c0h7qkwkp0d7\n", + "\trecipient: bostrom1mnlqa632zpk5j86qcmtpwzqv6j6pfmgezagz4k\n", "\tamount: 1boot\n", - "\trecipient: bostrom1usfnlq7xeyk3f6mdrslkcgurddlf2uy3g978dl\n", + "\trecipient: bostrom1s7jgrqnvdmxcww43unnwkxy0faz4yaghkxmx8z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pns5ln7sj6qx99540nl6ty335p4xssqn2hx4y3\n", + "\trecipient: bostrom1apltlf8xqdtxx5jenjg7gzh33q8lajw0uakf7r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z50y7pw6mwkp74fvujne92cnkkwpd0nv2hgw27\n", + "\trecipient: bostrom10ltmfduusnps7utyy98jm5mwq5dgystjset5aa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xfxz9p6nwz853367j82lz5dkveht4mqdm8dd3q\n", + "\trecipient: bostrom1e8h6450m7fy643ykjadctv7htx5m8mmmn77vy7\n", "\tamount: 1boot\n", - "\trecipient: bostrom150mu8jtt8cmzgekrv8yy9axpp6gk563un4q759\n", + "\trecipient: bostrom1pa3eaj0zqrkmqw23v239upyq2w69u5sccztt7r\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fn58rdscdmtfprredcnuqupq5qqllj250jde79\n", + "\trecipient: bostrom1ezgjfhn44amsaxt70cxr3p0v9s3nspfuwtpf45\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c7f7c37rmgv8qlxpx58quc7t3tgj849435vjz2\n", + "\trecipient: bostrom1mxmken69ne82e8uhkmr4sfnar5km4knhvvfxe7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w4ulcj6nfw8q0wkdyynhy3wxpasxsha7plhdlv\n", + "\trecipient: bostrom1yqnd7d2kysaxwemxy5e5usl2hs842estjfrxn9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xufh63t6uwpmjax5r28jc5ng53x7vwjjdne65s\n", + "\trecipient: bostrom17cs0kucxvh5ag5jq0gqum47a63lvmq22shxaah\n", "\tamount: 1boot\n", - "\trecipient: bostrom1akz5990rrs23g54fxlv9wgpeq85sye7uvqd7g4\n", + "\trecipient: bostrom15rjd46x4s459v8a56w2cn4yh8325n53m82xdj8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1f5qmhuae9ufqdclsmc2qfm87x0mnjg9rmwhnek\n", + "\trecipient: bostrom1w24ux688apsuvmn5jv9tr86fuhtv36xv3960dp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wmyx62jsn4fju557k9utj5l9p6jgmj9ne0frp7\n", + "\trecipient: bostrom1j9dr3v423q7jypqw65w5ngpler6a8yrd6qy996\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x5zexspgdjuamz4v4a2s5qnvju8jn7u5k0ynlz\n", + "\trecipient: bostrom1nmulwukl393j7paknmgvuryg07rdx3m24wp23m\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s7sdqaujt7lf78xp0hxyxt4mtvp5yer2q330nm\n", + "\trecipient: bostrom1j306trvzjjtews0emn2qq6aw8caxwtzfwttw03\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dwdckxqr4t6ccuz5hv5d5wt43gg7wx2td50q8x\n", + "\trecipient: bostrom1snawqfy5ywfm0vgtsmqfvnsjlg7dqtlxgfjrtn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u2axhhfh9zt09m38d2daapau3vg22lejgdfk3v\n", + "\trecipient: bostrom1ja0jzdwrdq2pmt8j4cd8x3wu3kudaycajukgy4\n", "\tamount: 1boot\n", - "\trecipient: bostrom130y7ek0wfs2efyneptyte0ntjsn2fyxym8thm8\n", + "\trecipient: bostrom13pjrva4pc59dpvrvr2kdhdur3dxwn9ue5shqtm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d3daas0kc8chey5mjvr3gzuegnw6nnghmgpwpp\n", + "\trecipient: bostrom1tlzekltgjpdmes8var55s0g9famwg2kgp02xgj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qn6h3p87rkewktylguc3hlw3wjupu0tzl9nwcp\n", + "\trecipient: bostrom1r5hrrzqp5zt2t8j62a5ny3wz4fupgf9gfqeesc\n", "\tamount: 1boot\n", - "\trecipient: bostrom15dgr3zs2cl6fvdq57n6kqzrcmcca7z6fvnechx\n", + "\trecipient: bostrom19urdgfrr7g6h2zt2qarlaqhrkwgf7vkll82v7k\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k8yr06ve2v9k7jchjjxhhrvay50l8e2dzhyywc\n", + "\trecipient: bostrom1vktsw6aptxg8vg8ggfhf26l2csnyg9r9nlyke7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1l5n205g9dcggdc6ntlyajuve2nghwh8pecr4v4\n", + "\trecipient: bostrom1qs3dafgnnxqjy5da88l95rjnp2n27h9m0deaas\n", "\tamount: 1boot\n", - "\trecipient: bostrom12mx2secz6fdwz9c6d3hul6ckafgepuqx0tvyj3\n", + "\trecipient: bostrom10l2vfpsuruku7849d97970q8emds57pnah2xgu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d36chghzzqnwhe6ye7ewnj4hxp3hn57pjuqzjn\n", + "\trecipient: bostrom1zlywzyzt84490czkz6wchneu2wn4ckgzla8myc\n", "\tamount: 1boot\n", - "\trecipient: bostrom10vaz23ujjv4q39pf4snehne2eemjsuttm3ggv7\n", + "\trecipient: bostrom1kr6zx7lgyf33wk4ka7s0fs6yk69py83t38pndj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uhy3ju5mvyszs65nzmr4lych6a2r7ymn0py4m7\n", + "\trecipient: bostrom1vgwa3mxzrcsxhp0jn9j2j5fvq3lmru8n3x46lt\n", "\tamount: 1boot\n", - "\trecipient: bostrom17m9ghgm8m9djc279dwl945r5lynwjsyy752y4s\n", + "\trecipient: bostrom1pqpzd3tj8ut690lnwt8pupgp2ahlcn6vtl3pam\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ax0l3dxpgp0sgq0z8t0qpddparf8tkqp7mhf5m\n", + "\trecipient: bostrom17njkkr2rdwyds3lveq40fw7fp8yrrapu4czcth\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eta8yfu8ugqw0psre00xwkn44fxkxd0hpfr0fe\n", + "\trecipient: bostrom1xdnma52m5rv028efghsd00dugp9d6zhvty7wwf\n", "\tamount: 1boot\n", - "\trecipient: bostrom18ya38u8l3pfnrve246wms90959vzr8scsc2qwf\n", + "\trecipient: bostrom1wh2geykadw9le2xd6kvpe9srrj6tj9jvtzlrve\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z8nccpnz7kxaejsa2ur8qkzgt2rj2zkqa7m500\n", + "\trecipient: bostrom1ml5lpjrg0x5x0xvhug4fmfyy9dk257c4mck9yd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ng5hfk8ekr4gec6ysq94hn0jq98zfzfxy0hmj4\n", + "\trecipient: bostrom1wpguy6s4ef7g6yd0dlyzlaett98eq2yt7awfyw\n", "\tamount: 1boot\n", - "\trecipient: bostrom10ul4hj8ruxsllmtacuvx0g7ex0z3lm4asc3wjp\n", + "\trecipient: bostrom1u8qhdj3k7tjn7zscmvzwkq8rlncs7s4ccwj2ml\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ynsv60j2ha98xx90czjsq5t3ktvwx0ryxsqs58\n", + "\trecipient: bostrom1zj7e0f3hmzpwjwjzu0mwqqt2srdltwxq2zva2x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mjnp2lmaamjfeex76yfdj0g47mfxsnxw6v9fh2\n", + "\trecipient: bostrom12frw9dhzc8ryxl2rqdxg0erl926rge7thm7mrw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wq0r2hv3vuwfmg7ztaudg6fadsdvfuxpmzmuum\n", + "\trecipient: bostrom1n9fzyzfplkzm4jz9fpwngpjgn5ddxate4y33fv\n", "\tamount: 1boot\n", - "\trecipient: bostrom19jrrjh7vfvcjsejaf2a7nz5ma74uyszzl5nw7y\n", + "\trecipient: bostrom1zc8snhscjctnvjymggatqxs5eke9pn4y0ljper\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c2ecxdkwd0aq7g6ae079g6mqayjnmv0hk3ae4n\n", + "\trecipient: bostrom1l0d0cnykn39m47x7tfvqlxzqylrkmc4lm8ut49\n", "\tamount: 1boot\n", - "\trecipient: bostrom17f03k06ljf2z6t30kxqrjwuvqlj9lm77zgn47t\n", + "\trecipient: bostrom1qnawjghksz0mrpx299fy2e3f97zngd4p5zwlvn\n", "\tamount: 1boot\n", - "\trecipient: bostrom105zq3ak0nxaj28fxlrym8j2dxv9zk2utu5aj80\n", + "\trecipient: bostrom1704c3ekxzqt42g3za6erga7jz86g806e473rmt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a42umar69mpk5ywhmq26wm4qfhmkw8dh4rejwg\n", + "\trecipient: bostrom1m7y9wnmt8d4sh5vtpukyf70k0vpvqxlfx6aaym\n", "\tamount: 1boot\n", - "\trecipient: bostrom13af0qehfnh3q6hls77jq9qdkhjgez2ajdyapdz\n", + "\trecipient: bostrom1x3mp6qxh4mzy9zjd8mza04j7qkl7ntcjg0wzma\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cw3tw7xdglnyk2kmm86vvqpqla28j8xp9pap3y\n", + "\trecipient: bostrom1xeg7glznjkdykuex6gdvkmndzqegsrqqy6agwp\n", "\tamount: 1boot\n", - "\trecipient: bostrom172ntp6a98f8rntwqaady7240uk49tf7uer8r4h\n", + "\trecipient: bostrom1vvxfst5tpjc2pnup8pnhzshtkju25kd8jwafa6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1glyuupx0fudpjq5d26v600tw26gez5awltkmty\n", + "\trecipient: bostrom1qwcksk6lylzrzc6gq3mvn4f4w53c2fkqqdd06v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u06dqvyktywqv03g243gs9gdqf4vmt5lnvth5a\n", + "\trecipient: bostrom1l22c4m0eyrrzdhhrae0ksmj9avmye9hnfdlrv7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hcx8f644wn5dsx8qksy4zeanma5r53vckapjlh\n", + "\trecipient: bostrom1yl6fdg66ht48vtknp808k02w0y0hk4p4dwx23k\n", "\tamount: 1boot\n", - "\trecipient: bostrom195m54v3x7yp90q3r38qmuf9d6v5dkhhjutd9hj\n", + "\trecipient: bostrom14vhz2c3p7alchp8ur6vne6qlq8spsegcary4le\n", "\tamount: 1boot\n", - "\trecipient: bostrom1252q2pda6nw3e0yw07muh8snqxa9nw094g7gwf\n", + "\trecipient: bostrom13c7lpg4x9ay9cyfte9ypntauzan7evpl3nntqh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1e95d5rlstm6knyva9f5knyycarhlmfy8jmvy2f\n", + "\trecipient: bostrom1ehm3xxwkhq8ckgdfy9pz7pd4wp760nrhkwd0rw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rgxy79v8dw9sywxtu4zr04mhxxg72h6vgshngg\n", + "\trecipient: bostrom1r9d666ktmuetcg8l4phh6pj2vk2a9n4q5rj9zd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mfwa5an7aekyr0qktpq85q7lamdu792lx4206f\n", + "\trecipient: bostrom1nxqc60spf4c9lafc6a2aex95rd2sn2wqdgwvn3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nslz4gc8z4gznhdw0aajzehjv3j02rz7j85hlf\n", + "\trecipient: bostrom1lf7649u2syxwmxtx3wz6tznpggmcs9hda84srj\n", "\tamount: 1boot\n", - "\trecipient: bostrom16elkp7re55zdp9ulv7etqemp648vl8vhsmcjj6\n", + "\trecipient: bostrom1ef8w2fk7sgpf2y7szuks55fucr04wnstlf8har\n", "\tamount: 1boot\n", - "\trecipient: bostrom14hv98p0dlfz86282huqhjhxdv2keacn7wdq4sd\n", + "\trecipient: bostrom1xncdv47488k2aap7nlvx8fhlxxq2zm0c6cpl03\n", "\tamount: 1boot\n", - "\trecipient: bostrom15g86ngw0ue7y7r9kx8g6mylehcna3kx0suwvtj\n", + "\trecipient: bostrom1q2tuf5qn4fdaq09e0ejsacwv2r0etzxf0gk9jf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nu35zgs57sgt74cuj72yr04an299ytutyvddum\n", + "\trecipient: bostrom17vqcu60dhuzhj937m8zhxf0y276dzvtrwxwx4m\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ljzypf35u983tcgzeldxyjy82zgwxcjm5p65vx\n", + "\trecipient: bostrom1wgmaphzjkms2vp6mdxagx8pcr8yh4cdmp59q9d\n", "\tamount: 1boot\n", - "\trecipient: bostrom19afdrc6f6an9zu632tehwnq4uta96zkkyt4d4t\n", + "\trecipient: bostrom1tu4lmk954k68ygpa8r8k7q04yusxn0htv7ny0m\n", "\tamount: 1boot\n", - "\trecipient: bostrom12axvgl38dmpvx6t5gdxas3kcnp7eqsn8q5v0he\n", + "\trecipient: bostrom1qhkpjjup7v839tmhs4fvpq5usll7dlh5x064n8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hgu2sftchr7pz76xdr3eavlz8clqtl4dmrl62k\n", + "\trecipient: bostrom1ufy0kgt4hun0fww8wn6grg47cy0jev40tsaru7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t7jl3t0chamgyv3c3qgfkgu26358ve6kva65gy\n", + "\trecipient: bostrom1k4y0asr4y7um22nkzdmwt00f77al8dm5du3lc4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wa3920az2j4p0d3gqlznnft9akl3chw02rv2mp\n", + "\trecipient: bostrom1484h6x6k9jndeuudcf9z4nphupzzs4nxeljngf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1txa8llmcx57hsfuxy08ej7aay8pk0tm600q2ld\n", + "\trecipient: bostrom1x67ahx6zwvvvxlj4mh364s9gwjmgfcyazsljst\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a4hk6lgw3wtdkaatycy73fd7nw7s5c77narjdf\n", + "\trecipient: bostrom1qpz4l5pw667yjfupxjurq2ln5sqg2cz6f9l6eh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qfe96027kc2tnuvwspuwdx4p3sxcwzseu5atzh\n", + "\trecipient: bostrom1wdcs34dkrf8tw2xzw2v43e6rmuhjxermht8ajw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1f385nxfugtvljnnsmc8d7zufpld790ajnvuaqf\n", + "\trecipient: bostrom127wff4g9n0ll8k2gu96le6fltu7hqna2r9hy2m\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eseer0q2df2dte2erq7vfun5tt4xjtlkrmn2hj\n", + "\trecipient: bostrom1nvfhpudwujrc2zk7zy4jn7xazzu7pe7wy7fwnn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1seqg6rg3dh5wqj3u8364svnehm5j6xt5ml0wfj\n", + "\trecipient: bostrom1xch6wlnc5l7ywqh7l4spj4lcrf3hywazk7errz\n", "\tamount: 1boot\n", - "\trecipient: bostrom17sp99qljgcc5sapv02krdnwgzmqclru45lxza0\n", + "\trecipient: bostrom1uqmdaplmycrmurdspgvrxtndxp85l6pllf39hq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jr3l45lkqq0x0jpr74y6mhd6md8zpaaqafjgpv\n", + "\trecipient: bostrom1k2n0mzzu5y09yg9khfflqae8duu6csn9swl6wr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ax2dgjukvua8wyzrrctgdyrktx90f9daqznw0r\n", + "\trecipient: bostrom16640w60s7sgyec2qr666yhynhz4u03fwfpgccw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m77qd7cwp995pku2ld9x7cuj94mx5zp9kf2666\n", + "\trecipient: bostrom162xc3ekelegllz8gy8gtnpduefdzpw9sklzf33\n", "\tamount: 1boot\n", - "\trecipient: bostrom15ecleart6k66h7aul7uchgwm8pttxceurw8z3m\n", + "\trecipient: bostrom1zy8uxjaf50ljc909e9wegymuhc86yml328h5ec\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hvxm8h705wfuxn0gefgewzrpq8mfwdxyek5mtm\n", + "\trecipient: bostrom1h6y7tqmjkvlawkyqh6z8rqt677u4ffu2hr3rya\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xvrkhggvdeewakrs4tmsh50yr67t9sa0nxy7kt\n", + "\trecipient: bostrom17zv580da83k648rdnv3tgpxangswvxex2f6n3f\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tvukjxlc8urj83fqa00vh7ac37fc43yf4ac8n2\n", + "\trecipient: bostrom1cf4j4288hrmvrcxw60au4jamra50ay4l5v6kqy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nwmskjvvnxphz6nljjh9e2e35f2e7p7rxmw9zy\n", + "\trecipient: bostrom1cvfpx2ck6qfer53ah8eu4kpw5whv92gmtgsjqh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zxfcu9vu5a3fgy25zpuqrus9tqzfazqd76tuer\n", + "\trecipient: bostrom13nuaemd93px73gvqm9wka80scp8y2vtavsdj9a\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hnrulvwr609gxxgtv6e7xa2u6kcgga826al9da\n", + "\trecipient: bostrom1sxlsue6ekaakjjcx8n8hsmdpr7lj2q5pa70rjz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dsqe8988yssvxl3r78xs5ptevc3wgwmugr8vsl\n", + "\trecipient: bostrom14rrfmkmxtcfyjwr7q25kun8mx4r3apkvq5t5p8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uhcxuvv7dcrwarh6szy8e94vsmxvnfamulujkv\n", + "\trecipient: bostrom1c0tqcs30z0htkafxflh86aty4yvrjy7dctnx4k\n", "\tamount: 1boot\n", - "\trecipient: bostrom12c96k3np8uy8zjy3w78fzfksvs3pp38erjqmx7\n", + "\trecipient: bostrom1zc4gz32n74cjkc5c6upxe7hup69vx7hv8e5gtt\n", "\tamount: 1boot\n", - "\trecipient: bostrom194vkw8h4azautk5q5vvajl76pvpezmw3qz4ftq\n", + "\trecipient: bostrom157ayvflpqzc83gacv055vepm50uw0urll085an\n", "\tamount: 1boot\n", - "\trecipient: bostrom1er2ysyxkcklq0wg3klf0myp0fvq7z6yulgqqpg\n", + "\trecipient: bostrom1njh7ywsffzflfd79hwry5856e8h9crd0ph288r\n", "\tamount: 1boot\n", - "\trecipient: bostrom158p4llggzkhya5c9uane4vexqfj0h8rtknvpuw\n", + "\trecipient: bostrom12rv2dag2nxrfeyqr9skvp3gvmeda6t53k37cj2\n", "\tamount: 1boot\n", - "\trecipient: bostrom18r2de233t53wmyjwmu9vkjtn5mh0qzdd98zfe6\n", + "\trecipient: bostrom14s63706jgqh0stteajpc2ama0r8nypnp6ennhe\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sl6geynchv868junjepu3mjew2a3lc5sceyzrn\n", + "\trecipient: bostrom1lh7grjr07rzyyjtaqcl8ywnqdgua5h0tf5rygh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wz5ca69yyaykh0zpkxx9zlmwz90f589lu9gghc\n", + "\trecipient: bostrom1re0aw0ugy9fl8qgdddqgfg49ahmmux9rpnadj4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lnrmld6n5wvt5ew64myp80hvy96yuymshk2t7m\n", + "\trecipient: bostrom1cdcjpftgh0u3ac2fzmwar4fnx470fn53ys4rlk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1twsywg8vk6xgzmzsd3kr24z3dx9v5czw4e8pmm\n", + "\trecipient: bostrom1aqdurh4nru6rwhkt377nthznufsrp4u6nqf39x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rr882vtffxthtj4v56hwe7qujsxcseefg7jtam\n", + "\trecipient: bostrom1pk5e5q7evmpgnjj869zrjrjas4g7nek87vl5r9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kfazpp7r8txnfadl80wm5cxszgvqaxjp2yaeyd\n", + "\trecipient: bostrom14e2q07kpm9yc04cp720nu50ph3sfaccrrunz36\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kvpvy3e9ywjnmw2wnr9r8g4k372gaack90a3lm\n", + "\trecipient: bostrom1qf3h5et5056t99xck7pgfk5hdgypenp7wmck8v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tw2pvj7e94cphz3qchke6w5j6vpsu6hspt9z0g\n", + "\trecipient: bostrom1jcelm0lkrjflq3l3r5d0eaxxzfdjj9wtrsqnz3\n", "\tamount: 1boot\n", - "\trecipient: bostrom17m6jaul56s6n7phes0gkm9t8zel0e5vf6f55h6\n", + "\trecipient: bostrom1lgfv6mktluz24xfuvjmxw7nawlnf7ckj02gt39\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kmfh0aw3dywq5qxnetyslrv0rgfs5nh22ch8vl\n", + "\trecipient: bostrom1wjq76tk9gz9mh4v9z29zjcgjgv36mz84v333lg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n8cte7et2ypgypkeltae24x96f2yh4h6hhhye9\n", + "\trecipient: bostrom1uj22dv2y4ly96svnav09h4g44zf68k5md7cna7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pl23mjkc7khy2azmy8hxvjqqzhhkwd9ew393hw\n", + "\trecipient: bostrom1lef3zd3p75kk9jazqalqpefmtg5rp3ev5084zz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z98wluzyv3kl4a2lw48jg9j239699cxylaprtv\n", + "\trecipient: bostrom1a2y78n5340pjxtuksfehk7y0pfaw6fdardy87r\n", "\tamount: 1boot\n", - "\trecipient: bostrom18r64ldsyrgd8hel0pw8xaz9ugefnd7t8y2w7l0\n", + "\trecipient: bostrom1vuet4dhydtuemhguaj3awx8tvzaau56rkkqu82\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hj6vx8z02f6wa9tdypdetwh38ry4ke7na6lcr2\n", + "\trecipient: bostrom1n8hyrj9kam0zdtf6mcw25mrctjh6d7d3n5dgpc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lwkl9znu4g0qq6s0rmdxzt4cskrpazevs4lynr\n", + "\trecipient: bostrom1hs69gk7cmsqyez2n9ake4kfc452x8lsgnn9yv4\n", "\tamount: 1boot\n", - "\trecipient: bostrom19l5sd43qxl6wq9cz0qjc2rrzcmu82l9lte7p4y\n", + "\trecipient: bostrom1ghya49vuypsfvgxq9x9gcw6l9x4jnkxlrq8ql6\n", "\tamount: 1boot\n", - "\trecipient: bostrom183fg46tade68t7p77yn4zry4gurtsjuraxfdw4\n", + "\trecipient: bostrom1qzgpgtkk7thcmjr6heclgdejpy77w5rfdgm4x4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gwnlulu8392uvwcdsfeythm46kqrphqz6094r9\n", + "\trecipient: bostrom1qvsnlu53celffqlqru5k05gvzr70ew3lplvhjt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zh5jp54cgum7amzuhjxjy0gs9y6ekg5en79srf\n", + "\trecipient: bostrom1qn0lrdzyl2vw86vhrq6q9flycnc7xkc5kfxacz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m5wgk8a8wtu86ek8f94tahcstdpzlq4pj673y6\n", + "\trecipient: bostrom102ugpddahjj0cgtp8wn8uekvtt2ck3s8h5ltds\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z3p97l3ezu6jmfq0keyrxen5zlu2v8qfl6epq2\n", + "\trecipient: bostrom1k8g56xsch6ztwf2uz248uwwqx9dzn2falgp38t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fnu5cnftc2c80hxgsfz7rk0muc7n8w0g4av2gp\n", + "\trecipient: bostrom1qn4lw4ejgusdxeekecze36w3m9smqfywxqtf02\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h8n5gsmn5fy88thnn00tqmxfl55whm49k5c2gw\n", + "\trecipient: bostrom1hkx5f4cg3ra7e29fy9splv3fy3dqjym5c44g7e\n", "\tamount: 1boot\n", - "\trecipient: bostrom16k965hsaqnltlqnusln5u8g8483xz9ca6ux6yw\n", + "\trecipient: bostrom1kua4wtdsgd3jvx7drsmtwfzs7tasr54f3nt6vn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hve6c25ajcthysu9kz0u2duyzd4gpf5sw5gvh4\n", + "\trecipient: bostrom12jc4e76pm2t3cgad2fcgcvrsr4s6tcc0yvwdhy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lwpjmf0u7n86cxw0f3wv3fjq9a7rqxeq8fxydj\n", + "\trecipient: bostrom1qpffyu8t3rwgvr9ajtudspnl0376ny43cs28cm\n", "\tamount: 1boot\n", - "\trecipient: bostrom13pv2434qt9ez2uqwdggx8agujuk696jynj6le6\n", + "\trecipient: bostrom1hnzwwe8xhjgn23l3n5amgwtqjjj77r9ja7u4yj\n", "\tamount: 1boot\n", - "\trecipient: bostrom18hhw6nfwjn4n09fcd70weyv7zm4stm5xw6jvwe\n", + "\trecipient: bostrom1xfwdag64x7emsu5z9c0cc5cgw69hluchrnr0td\n", "\tamount: 1boot\n", - "\trecipient: bostrom13zpnfzu4xgxtlxyeex52a387c6d7pg64mpptk0\n", + "\trecipient: bostrom1gde0a76m58h4qp49wm5qexenn0lr9rfqay0cc6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1taaar7fsp4wlz40szl02z9jluluhhg5txy4zqv\n", + "\trecipient: bostrom1ycz6jq34ch9zwz53uksutqax7d0tzg4r4ptuz0\n", "\tamount: 1boot\n", - "\trecipient: bostrom16t5w7q32m7k9zjwaxrefknjlr4w0llfpclutx7\n", + "\trecipient: bostrom1hfjmtwh8f6u4guy43gec20paj3fpj28yna0a6v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gnpk2gnw75hrewnjw9vw6qxcyr0tkdrtha438f\n", + "\trecipient: bostrom14v89cvmam6e2l7ye69kln6wn7dthsy3wedfl7w\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pt767plvxgxkdxlq6tultkn4ghewpu26ccj3ae\n", + "\trecipient: bostrom14xaq0xndppzctkajv9u7vmr78sm5dkrw8pealk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pspcsc8ktyeezzrt7y4gc4aa4g4uyeyh5k9zz3\n", + "\trecipient: bostrom13swa4d4tds8ke7rfjkt3g9hkftz0hhs9fr2g9h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1aagxzrs5sdwpzv7y4l7csxnzcftky22m2e7me4\n", + "\trecipient: bostrom1az9amg5j7h5udxnflchdpea86admanh980np3z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1270dznuxukmwldm5y9qs0k37fqmwvhgldhvf36\n", + "\trecipient: bostrom1jsmxeh782fwdj26h8xfqyxtuy6zkqst9k0gn8u\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nrw8mdgxwkjq70jcd8qlq3w2dgl07886f7lfq5\n", + "\trecipient: bostrom1h4c0awvycvhq4rfzstrup20z8wwy2kd44mmxme\n", "\tamount: 1boot\n", - "\trecipient: bostrom149e9hzvmhr2cn4gnqxaz07h7rqf85f4qe2y6zl\n", + "\trecipient: bostrom1ntnhdn59j0w5p3h8ql2tpjcuaddgwvc6sdm0dy\n", "\tamount: 1boot\n", - "\trecipient: bostrom187fh40fpvuft2lxt7maea79hqlg77umk04aces\n", + "\trecipient: bostrom1420k0ct4cyjscyscay0ze6dcd3aq7rxq04y68x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d2v5hp544300ydqeadx3nrdfn0zmuxk6zqgm8q\n", + "\trecipient: bostrom19md2lvewcpqrc2j2a0vnr4n69j0wrcf6whvt0c\n", "\tamount: 1boot\n", - "\trecipient: bostrom109kpv2eapwldu5vdjfe9x4dknul79z6j0pjztd\n", + "\trecipient: bostrom1hhg04rxah2q4ax03fsr4mq5mkg2fsn0n8epg3j\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q55j8m8249dgcmstmh9x7vaysjvuaqda2m7y4n\n", + "\trecipient: bostrom1jk20x6myytts4295k8n5l890hh68gptmnmpcx8\n", "\tamount: 1boot\n", - "\trecipient: bostrom13r0v52gujksfcq2zra63takypemfx2dg5xn5ed\n", + "\trecipient: bostrom10t22t79yfyxe5lquv78d25vxmun7q9e5s6xxsx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1yq3d9hsgankr0njdartuv3vr780yg88dsk0xc8\n", + "\trecipient: bostrom150v7qu5uarz9d85k2d50ejl9zdw4k044r0y9wy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r0qlnghtuj65kt220vjjeknl4vu2827rfa33p2\n", + "\trecipient: bostrom12965cpvwlghw3jvts7qdwkkam0j5p44y687d5x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z747yem8ndw5hkgu0c48t6k4gle20gq89pfwaa\n", + "\trecipient: bostrom1duy4aps80ha9wcg2ql2sv55sac09n885yfc7rd\n", "\tamount: 1boot\n", - "\trecipient: bostrom15l5ynjwnf5vhfzjqx2u0ja787psl6ytwf6xmyl\n", + "\trecipient: bostrom1rw0alcdzvxqjvnjaz0kxsjme0jkezxg2u0j425\n", "\tamount: 1boot\n", - "\trecipient: bostrom1le2zw5u5rckpn8apwg6l3yu374ltjz3sts63ej\n", + "\trecipient: bostrom1gm4gtmjxj6292zc75c7nvuwk93kkj0q0qupw0z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1htmclu8cx3dw2pmz9a22nwm8xtmelcursrhjjr\n", + "\trecipient: bostrom1nxklnj8ywc2rpq023qd8dhd0xz9cndjy3mahxn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lccxp00cskjkzr2njtw4pajja89hxh3cxmm329\n", + "\trecipient: bostrom1utfmzk3f4k5pe0lchqvuwxl0fzvd7leur2m4km\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n5qjt5xx45x8qmmxawf9qy7xevr9pnamqds4c2\n", + "\trecipient: bostrom1zyuupqv5kuszull7ugw55al34w09scwludfrwr\n", "\tamount: 1boot\n", - "\trecipient: bostrom16hghws8nqqheqv2j34ctpsp4a7kv6wmjrckjcv\n", + "\trecipient: bostrom1h4kz9ze0q7g4jz2hwafazgtms6luwz8u6st4td\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x52zv3zxfcsk5vfgplu8cer3thy8a0kjl75l2x\n", + "\trecipient: bostrom1usfstj0qm7jdgj6evhh05up4wx604dz7qj87ac\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hmw48qn3usz5jqsx3v3scacdl6qszafw46dh33\n", + "\trecipient: bostrom1zmytua9j77wgfgmm40wgttegva7sc4mvwzsjsl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c8ltyd9mwgw02ljq6e73yhvwdd8vhmhagzy7ty\n", + "\trecipient: bostrom1ee56dns037jw5cvgpuu8zp9c2lzgkr5gh70cwt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wnrdz00q83a804aflxq2syejhp4gd3sncu55cx\n", + "\trecipient: bostrom1z76ffeaayhaeqcel279y65ttztrqwj28l0c804\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w2w6z4fen6y46xxpglxz7rf4tk0f98zxv953un\n", + "\trecipient: bostrom1zesngstg95a2a8v7lz7r4crwfv9zxcmqtltrcc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u3c3t2dmukr8v0earp78c33hpm6frt20gz9krf\n", + "\trecipient: bostrom103zeyaftmlxla0j4jtc006uh3mmjrcjjhvtvgq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dw5gvw2znmpn2dzm7847yrsrcfv3fxfhfxr2l5\n", + "\trecipient: bostrom1udygx4wvxueu7x2qzl43gt5n9dajkwp3ygz40l\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hty2hzwt8uk057p3gc3zdskvt5qpmvcxsh4r0d\n", + "\trecipient: bostrom1tvwcry63vlzv8wekau09treh55r3ydvq3t4tgv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qa906vq70gf26aalhkc6ky32zttc9q6xaafh5a\n", + "\trecipient: bostrom1t0fsme3l2gzh3z939clswhug0yvqum09e9v8rs\n", "\tamount: 1boot\n", - "\trecipient: bostrom163euvcrmrpq4u2sgs9en5puyazch7tm33plp92\n", + "\trecipient: bostrom1e8q37cxgmfwvlwu5dj8xgzm6pj9fgmfgju6a0e\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vxq9y87hr4a4kqhn37y3zhjdnjtjwnzh7ycmyj\n", + "\trecipient: bostrom1qy7xa6rzcg4jszrlhmka9rp56eaz93gesapdvx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1n5tvmq0mjq28ldhplwx9uj8asqav3kdqup26jf\n", + "\trecipient: bostrom1fvuvnhazucfflj8s5cufy9q97plag674sguvu7\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sk5rzappl90hes5kyyruqrrgpkq6y5j982jsfx\n", + "\trecipient: bostrom1aqllssuy97nezjp6xhw4c8twu6jts559tqzssl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a40vz6ryf3tprzxa7andajphf0kdvy73w2523l\n", + "\trecipient: bostrom1t5szzerqjhnx3nj8t97zcx8ts5nnsskyu2dyus\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k8xgyhenw3069mkp0qlmm26hs8c3s99ker9f5w\n", + "\trecipient: bostrom1vveyk0teh2nsndeg57mpmhnd5u9yawfvdswecg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ek0sdnv86m9hne9g805ldhv63fr879z9ry6j8u\n", + "\trecipient: bostrom1zwe7u6kkqcymhk8yp2pmhswt04j7dd8qku47z2\n", "\tamount: 1boot\n", - "\trecipient: bostrom14p8y3tumsvm0xmhx9f5565zc83ksv2nvtzt68r\n", + "\trecipient: bostrom1w7y3g0r9adese8knyp277mhx07sruxxgpcmz88\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hhvxsz30r3qery449x9p8muxfcep2fh0capksj\n", + "\trecipient: bostrom13nfegxehxp7kh723vj2s04cpy0s60qndlsau8r\n", "\tamount: 1boot\n", - "\trecipient: bostrom16jactzz062ljndpx8w7kcr5p8kru68y6cmzekx\n", + "\trecipient: bostrom1ds9knerx4cq7sf5qz9grtxavldt7tmz7yuvral\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rqp2s9ctwr5ecp68etp3vgg73v7w8dhumgqwus\n", + "\trecipient: bostrom1n00meh6k0essqaxfl6776rjuxulkff9fynsqq4\n", "\tamount: 1boot\n", - "\trecipient: bostrom16tc25mskkukxlu40m3twlxx2c2prdvlq7jqaux\n", + "\trecipient: bostrom1tmntgg36jmhxvdxsp54rd5yj9523v6xpk5cnqt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tlxepn4ekapvmaqx3zj2n4pjp65zjcspk25n6e\n", + "\trecipient: bostrom1w2kwm7p7zzzzfvxax8jqvm9vgp9p7fhhxmqgz2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1689nqy43u6zzer77armmu9syrzcy3vmqt7drkn\n", + "\trecipient: bostrom1hxz2usyugcmj38frhrzlc2aqmwekkcfj33t2uf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pl6fxlfa2493edmeef5z6upspl2t8pm53gwg6j\n", + "\trecipient: bostrom1me6p7njrz8rlw5vjgya5h5hf60q8xj8t9evfy2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pn39dy7v3g3ej2zastqqx5tvp3yfn7rfgul30d\n", + "\trecipient: bostrom14s7k32z48550t7qju0ruvz36agjrvy9rpt255h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qnyzxz6jf3d9k4qr8l8nhlq3d7tcf90fr7de0e\n", + "\trecipient: bostrom12fdx3aesgunjkh30jpagd0zsfan0qnuhjmlskr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ykhypxnmklmxj80z6rkjr092kcn4hxmqnfx9f5\n", + "\trecipient: bostrom1w4lm6dth2wa3a36avxqf7amps2mqtp2eyx8p79\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nh9mmag4svhx052r7744k69txzyqrypj9f8xk7\n", + "\trecipient: bostrom1l97gg8q4d8qcsem6rt05r365q8fx5usuz6c9wk\n", "\tamount: 1boot\n", - "\trecipient: bostrom16w9z3klshzxdmmejlwnlqjsxq4h7tuseycyc3w\n", + "\trecipient: bostrom1dppda4tsrvdrnptkewd0epq08mj4e6e2m8ay7m\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zyf3s6c0asag4a0p7dfxe2wc37e0654vnuh92z\n", + "\trecipient: bostrom1uzd7y2s0yj8ghtg55nummu6hu7pljknt4md5h5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1znd0lyxr9pmn8gk2nmfqzf9fwkrv5audlgn86t\n", + "\trecipient: bostrom1hyqw4y85xcvqnd2hudx24daplkeyjftv4ya8qt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ld0ldqyql2x80fju0u07s5nxuxunrpey5cn6aq\n", + "\trecipient: bostrom1uw8jryssgtyxdh8kumwz7gl26e78l0njkyvh7z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c22frcfqxg3rc6nlf575aeks5adn300jwstnzw\n", + "\trecipient: bostrom1j6m6rf607k96ckgyyesexex9ckec3g5u04xgqs\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ehr45fwxja4j5aeltlfpfjasxltz66xmxx23wq\n", + "\trecipient: bostrom1n4zal3f2pzts85a289akzqugcsv6fw4qg2gv3d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ezfcypqgt7mcgyfqpl6zdnxcfanf8r2v5pklxw\n", + "\trecipient: bostrom1hx82zjwku06jqdhhkcg99zcuzwjnax79xa54ph\n", "\tamount: 1boot\n", - "\trecipient: bostrom1epdpeeqwcwjw6apr9unj3vvfagjdag6mu4j8hh\n", + "\trecipient: bostrom1q0zkt55npcsyhnj4akrc8hwepctn9kdfly3rh0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kukr2tfgup0haemgw4wev9k8fc42jvkmhjtctv\n", + "\trecipient: bostrom16snytks732s9qy8z3ffh9wjvygrfl8zr7jrjdl\n", "\tamount: 1boot\n", - "\trecipient: bostrom192989dgun24403r4ug7fvre5758fkxv8qp776m\n", + "\trecipient: bostrom1vtvsevpe8e9kp9m2qgsrh8vqt9hgqardh0ljaw\n", "\tamount: 1boot\n", - "\trecipient: bostrom17s7un6flln4mqw8gh58kcr3s0j8qy9gth6mdta\n", + "\trecipient: bostrom1u7hxgfh927cmxfsqguxy8x3sat3908jt6mh488\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sp7trm678m7fp26kdga72vgyuvcuvq3cjdmykq\n", + "\trecipient: bostrom1z50v0rww3f4u2zhyeyfhg7gsj2kzr00gx8xrlk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vrwlgwpumy48ygn9n0u86wc3vrd834u7z5yqd3\n", + "\trecipient: bostrom18hkau2vr25l60uhndelhfyu2jcatn9gf0rfnw6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gceqa7838eeflmy0reywjwc0r4y03u2lkwn5vr\n", + "\trecipient: bostrom1w8num65va5cn6pe0lpgzegwu4sh5ak3jm8mssn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rqcnk27uh3uzajp3g3pye2g7p26smyqnu0qwp8\n", + "\trecipient: bostrom1vkecldpz2phuexa8e3v6kv5gz9xwss6h3lqm2l\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rmlcsa5ljhsqrmedqzd5gdy2qa5z87q0amlhu7\n", + "\trecipient: bostrom1javxf250ts85tq97tk9vtngu6fnq6fg8dfagp4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jd56hz2z2wy283ywf2fynnpyn7rqcqf8qq2rgk\n", + "\trecipient: bostrom13hkqre84xkrhacxk4xwwq69cw79zdzh3f0wneq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ut48eym8n9f5ral5mk6hdhjgxh96hkwjj27ejm\n", + "\trecipient: bostrom1gwlg44nwpvs0zhwa9vq4uthrmhtd6tharaprwe\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sefkewd7yjnayc6asv9dzf6wcx37jkcru2llg3\n", + "\trecipient: bostrom1maxrr892zvy8r9utdfzfz9tzl36cvmkuyl9szp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a4jqwt9jag0sv9sdgv08k2usv0vyeudwfefkas\n", + "\trecipient: bostrom1ze0mmxfqylm7qrf6c9zprhc2snzz9vd9dmn6ap\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x8zf8dch0qe9shlrud6wwgllpr9aqfzfll48ht\n", + "\trecipient: bostrom1wldkljur7xp6a3rsxtehrz09y9ktjje9hewf54\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tcu8u7f4exml5ws3xmm77flfr5ysk55ratywka\n", + "\trecipient: bostrom15lazwhkgymm96fplzthleld9cevt85metwzgyr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qdcrt85sjjklnt7yl7lujr6jr3k47dy7nk0pj2\n", + "\trecipient: bostrom14jr8clptyx7jewpgffdeaxwl0xe6snl3u95nll\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kqcj3wf4rd4vyjykhfwgc8kzjd42pqt5qr03tc\n", + "\trecipient: bostrom1l9csn2zrh4gx0gvk3rp7mu5d2l5pq6zsed8p7h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q2s73vjr5ld3kf7w2hny2kqthj06elaccwdnt2\n", + "\trecipient: bostrom17ptuyehdfycyuahszhfhu7uludtpppgnyd6pql\n", "\tamount: 1boot\n", - "\trecipient: bostrom1d294aj94vd7fwfjl7rj56edfkrdwp8q7clpvsw\n", + "\trecipient: bostrom1pfkmv8tkam06k3mve9q9wfdm2egve87vz7pmna\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wq2fq7550egvxpmjqq4nd6qpqgqrf62tw8xx32\n", + "\trecipient: bostrom10hhnlax5g6exslfmrltdx9k5z9h2208lfl66lj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dd90687zeqymgdpntrqrm75ux067lzq93kcxuf\n", + "\trecipient: bostrom1p4xaa6n6lrrgkgxcne3uk5l7ezq3nljwj594s0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1uz8c9f9ymnw5quxwcq27vxlpspuqq0e8mqlnkd\n", + "\trecipient: bostrom1xj773wmacfgavwtavcqsafmncfwed9csrk0h2j\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cwxd5gqjtml42ysdumzrp8f44lrnvlvdsuku2r\n", + "\trecipient: bostrom120uqk7p4u3hy4kz6fdx2xzm0vnq6tnfynk4gve\n", "\tamount: 1boot\n", - "\trecipient: bostrom137dyn6lravnwrvp0xdarjpp3shs9eq9qayqrsj\n", + "\trecipient: bostrom130lxdw346e70t2ntplnm94aksyke6q0f52vclv\n", "\tamount: 1boot\n", - "\trecipient: bostrom17wsucxdknweka82d2gat0226zng3ecj5ewyznc\n", + "\trecipient: bostrom1vq6gsql23nyx0p8c0uluzgdtz0d5kelxa5n9az\n", "\tamount: 1boot\n", - "\trecipient: bostrom13h8exd4ssfpnsl3lsuwzvpn4fm4c8lsxrlt497\n", + "\trecipient: bostrom1uu2aede7c5hz0pcxafwrv7gkf9wcm2k7dhqwf2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1w65z68mrj90k22tyfgxn9gq0uaw5yseehx6rm9\n", + "\trecipient: bostrom1lvsykp30405aauwg5ceqp7kf4ed9lnllwsnrh8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ewn92s68uaw3p2pxgvewp2hlm7rqupvtjnng6y\n", + "\trecipient: bostrom1ste4edvr5cc8mz7cvuxxtcq5frj08tyj2zlxue\n", "\tamount: 1boot\n", - "\trecipient: bostrom14u79amxfg52efqsmgmya5az45th2ke6h9nwcvd\n", + "\trecipient: bostrom1dkpf8dqeuf39chpq0wephyfzc6nvh4js6ew7a5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rdgd7lzq2vp6cksxmyym42x9dw7pqkwa2x7vpx\n", + "\trecipient: bostrom17j4ugdqq3lwxdhx2qvn8e20cm6vz05ld3jdewl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m5n49zvpjmmtsgay3u0kd252007jwp7clwjrxc\n", + "\trecipient: bostrom1agpj2xahtv6ytcta9njctyyl4scty8tcnpkjpr\n", "\tamount: 1boot\n", - "\trecipient: bostrom15yk89rxy67zeskvr3ymq0ujkrx5lhy53d9s449\n", + "\trecipient: bostrom1wmpzyecfrc35ewqqgw7yl28ay7a8tua57a7xx5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a5m8zz8v903akelndpazkqdu0975e8yrrsn7w7\n", + "\trecipient: bostrom1mur9er5tj5ysuwzp955arsqf4qysp77fe43twz\n", "\tamount: 1boot\n", - "\trecipient: bostrom14qyvmxkzgt6y0gv04r5w5avq0m2ejr84hclxm2\n", + "\trecipient: bostrom128phu969lkd2vfdkxatam8hhggsa2tf2w056q3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1va2hlrht4w22e49ge59zvur7j7pdv0z73z3yvn\n", + "\trecipient: bostrom1pugqses5qxcqe6hvqumnxulq54e5exwvs0nhv8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pkxnqde9gzuycm8u6wftl74rprgxa5svct80mz\n", + "\trecipient: bostrom1thjcavhuwvam9nug8kp0mr5al0f3rsdcrpykja\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pay43f7gwje57d56ewyzjrvg0gs5fzrjludtz3\n", + "\trecipient: bostrom1h6yhxunxl8k5tmx2fd9t57h50dh99mkxegtrnz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1z6tm06hwxqldg6j455tepqjz4nvrktengx4gc4\n", + "\trecipient: bostrom1r7w5yhuxmgzg9qvucr59kr7avad248xcy5xerd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xtry5m4ntucu3zpc9y4kskttt43kzlewkylyfs\n", + "\trecipient: bostrom17zsauzyd7y7mmqm667cjvf3c8ls0ez7ue52vym\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ut4vqupek9ya6907kfc4k86sul6xnm5y70s0sa\n", + "\trecipient: bostrom18spep23f9m7h9vprqpluyzm5ymhrpmakylljz0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a0rclkxqknqj4pc6872rth99yyw3px5kgx2mv6\n", + "\trecipient: bostrom14uqc6ufhh0mgrkt4aqsa68ghj55v0hy0kyzxc2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k5ezayyv45fshxuekmr7erk664z2wa7t7v5hdx\n", + "\trecipient: bostrom15slyfr29qu8u927gu2pmd2gwur5xp0v34e5qdj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r4nhckpyk5fpk4hnvvtx47wg0mznqpj5kfjw5n\n", + "\trecipient: bostrom15k4cnvx90hd9c88atk8vvy3qedvfxyl64qpf8t\n", "\tamount: 1boot\n", - "\trecipient: bostrom15wshxjqt3zy3m0muxf6gll3pjsgnnnsgc4qaex\n", + "\trecipient: bostrom175eqknqcxywthmcdks8r0kq3d8vfmgyzfqv0ee\n", "\tamount: 1boot\n", - "\trecipient: bostrom19jk6d5jkrc3k9yck02z3d5ug9ezj576lp485k9\n", + "\trecipient: bostrom1jsk5e0yujj9gcwvphdlwssahpsdkxw0ld3ck4m\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r0j3spku6m45ueyac7se5a2dr2qfztwrjrz8v8\n", + "\trecipient: bostrom1zlaa2u9z56r0jnthmuzezss5fd8tf70vp9qhr4\n", "\tamount: 1boot\n", - "\trecipient: bostrom13d634j7nzc3qq2lly9wtmldz66pkrw4cnec75l\n", + "\trecipient: bostrom1jtlahs0cvj8q57k8cqnufpt5qhu30smychv645\n", "\tamount: 1boot\n", - "\trecipient: bostrom18rfg7r82hckclmfce2lgz9qv0yurqtxpnfcjtl\n", + "\trecipient: bostrom18d82hzpqvd899ygwerxme2yw5350w4vylgy3ft\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tya8kn5d8u7ndwary6djm9k7fjljhfghrq8525\n", + "\trecipient: bostrom108wlz2utdyu00qmxjyyc8xd2fpqyewlnqfgd8l\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tw6pksuktay4cpwj0j9xwu4dv996z4ulyvh9eh\n", + "\trecipient: bostrom18cdndsvh7nh5hvsgw7gulle5d8m2l29w530sfa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ng573t0mdqhufkfe9hw4gypavdjudecukhw7g7\n", + "\trecipient: bostrom1swdwjgs43k40r9kj85kffgph4p2c05wwgnlq3z\n", "\tamount: 1boot\n", - "\trecipient: bostrom16sps06qur4gktqthhe6glywj3m40djjeefzvsy\n", + "\trecipient: bostrom1hgp2qhz69ca0slwzeulvyrjy4r32cpryx4d7yk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jh9l0sumr3fulpyh5c7hn4rq2uj9dpv9tc7ple\n", + "\trecipient: bostrom1zs9x7d3zcepsmmmckk4z3u72y5luukpyrx6hzz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s72wt3lwdvdkrn74q4uu84zwt0ykukwuderwum\n", + "\trecipient: bostrom1526r2wjwn7cg893g4jks5dqwkua9xje8lzef0x\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r895jfagyeyqu7jxxz90t3rfhqqtmtjud4acyy\n", + "\trecipient: bostrom1rmda3yu8kskzkwvsrmr6dte2fnxs305mnn9re4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m83hk5syetahgc0549trxcqecpcj0dglms2vhk\n", + "\trecipient: bostrom15q79jgx0mnq0fnsd6apxz6c529az5zvwadle3d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wasws7fvtf2ncv9cxqqp9u78ys6029733se78g\n", + "\trecipient: bostrom1u67tpqc5akxcvcl3z3wk7qcsnqchldghcx67pr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1y3dey0f54x6g53dtgtlfrhvqacvpmmycapqwn2\n", + "\trecipient: bostrom1y68yvak6790m8z809p9a3x0jt8r5rpn0yhnzvc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1f9e4vrcxysj6g8xk94pzgx5v5ljxyrk65xzs5n\n", + "\trecipient: bostrom1y0rvl59q0vspfjzygh8eznq2aca6djgzruafa6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ktp3zgtf5fmxyc928ydvwgkt8mekkn4hwk4wrk\n", + "\trecipient: bostrom1psj8hzygflyqv6m4wty72dvt97cs3jqmvqvkfy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1maez3a26d792yvsskk569n7dxdc6xz4cergn5n\n", + "\trecipient: bostrom1eu3jxwjfl3akdazvefjuye57v93mh7fm2ueqgu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h8mw9l2y7xzu5e5yg2e6eyw7vmmn657ewf59r7\n", + "\trecipient: bostrom1z96rlvaq3v3ckm8vv5xa07qlj8cwly4ldnze2p\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g4amj4fwe0h9707he8gpp06e0ccrplydef3w4x\n", + "\trecipient: bostrom17msp24exdfg8d238rqckjes5lu2yz8p0ekqzke\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ahfpl4z6458uj633le5wfywjj04q4y29xcf8ve\n", + "\trecipient: bostrom1qs2ltedptmhf99fj0sv842w0e037gg02qzywk4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lphhr6phdv0s8xl697jn3k96d5m4q4fjl0ec0k\n", + "\trecipient: bostrom1ys6mdm7s5ummfgzqt5wgm9ngpexg8namqj44ea\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s4zu2runz5wrveh56q9zd6txrm644r8xwu6c3e\n", + "\trecipient: bostrom1r69jy0zy03wzq67j4532evqk7p3l2qtmgkzvdj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r7p4mgwsxddkgq5s8ladtfapupetjl8483sc0d\n", + "\trecipient: bostrom1y9kz9676d7gvv9n7ygkvu3mrf4audmg5w4fgxn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ensep7runynht2atdwlss6crnty6l9wfmjglp5\n", + "\trecipient: bostrom19velk6646sgwsmwjsh2k8x848ev9ravl2qcpje\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jpumajy0pu4u9q6exr6fw579kt2gpfxqtg3l7u\n", + "\trecipient: bostrom1wd27x5kfrlj4uzmq3qkz4lhgrlz0cpy437lkxc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zzm9c009ngrcyawhwft7qwky9emul4ywsjg82s\n", + "\trecipient: bostrom1jjkdpuqn6fez4fv4gzjntttv6sughevppwlayx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wuv8z8ntgrffuyeqlpj3xk9xy0fkupynvkmj59\n", + "\trecipient: bostrom1qhz3xt0daf64u5wm2l0zcnjp8f4xjwwnchc4pj\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kgc327fmq497qcz033w5au7340hznhhtanf53y\n", + "\trecipient: bostrom1gagjy687fwwvqfepdf3n3jc73v5673vm3feccr\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xlplr27jfkm5gshc3nzuzfcu5w99x682698g0k\n", + "\trecipient: bostrom1deza7hzf8un3hj8wf3ghrk30gce229exes6kzq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ked9k8qy6q63g3fa6urh7z5kl9vxfwmekpcj5p\n", + "\trecipient: bostrom1c43waxk5gzxctvdakyn8s8qwgxqphpmnleqr6f\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fa8uyq5mfag090t2rh7tyquxp28wp0mh7qzd85\n", + "\trecipient: bostrom1yvppm8v0yzqnc3e99ecs7dprpx27ydp9jqkhqv\n", "\tamount: 1boot\n", - "\trecipient: bostrom18ljrs2jjesp9r2pc4lm2rpy62rn3md69m28f9g\n", + "\trecipient: bostrom14w4q8h028aqmcrv90tpa2jl69mr7sylerlcdc8\n", "\tamount: 1boot\n", - "\trecipient: bostrom17gt2kyd9shmdwxpvk0wjhvnvmdxsge972nkaep\n", + "\trecipient: bostrom1cj4smplwksvyaz5xhxf348dnwjvv4yg7pk3vh5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pnvfx8rv3xnhs3qqs904ffs5pggh5g9f0pp980\n", + "\trecipient: bostrom16ja5hd6qe0l8jj2cf2kvqzkp06qqde8uwjre4d\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gchhn3nyaemnygaugmmt7ad6cgs5n6ayswulrn\n", + "\trecipient: bostrom10lkpg9wwfmu9snshu5dawjwaagmjg934zmwrwp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kjh3mvr2anxvt6p4hw7zqdczud06zmtk3fd5e5\n", + "\trecipient: bostrom17np703zwam49gv03l8wdgs5zp7yhhpefycy548\n", "\tamount: 1boot\n", - "\trecipient: bostrom10ax2tzudhd5hy3ggmtrdhx5sve5fatjmgyvqen\n", + "\trecipient: bostrom14m0f7r50semu7m287whhtgnd5zqsk8nvt9xp78\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tegw6mt90x6c7xxt00vfsc8dtc5wy93u66a5lf\n", + "\trecipient: bostrom192plmtfxwwanum8ypfg3txl6kyzn8y07tvnrgk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kdh2wdln3fmsr90ctdkuspdlkp79h7plgn8x40\n", + "\trecipient: bostrom1v5003m4u4c2eukmxp8h0k3zkfmw25vzj48pxra\n", "\tamount: 1boot\n", - "\trecipient: bostrom15fav0dz94gquve0sp7ph7qcg39z98j47c8mdfd\n", + "\trecipient: bostrom1lx64l9jvh7pvn769s3tp5u4xpzznjm6zcvr0xd\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ylhupuee3dl52rqrp0k6zum4rhzjjss6h37me6\n", + "\trecipient: bostrom1746aw07my8pu6ry4t95qhrypttm2ck4ca66xwc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ttmveuhuqvjlx0jvfpk9avv7eqadl9cf5pgcu0\n", + "\trecipient: bostrom1hf8cyh6yzkae6ugdp3fngzh7kckt78me9kmfth\n", "\tamount: 1boot\n", - "\trecipient: bostrom1phj32ay82kv3tawftn5twhnqzfyf8aa60qadt2\n", + "\trecipient: bostrom19d52ssjysmkq8lj09nm8ajlsl539xswfe4ydwg\n", "\tamount: 1boot\n", - "\trecipient: bostrom18cydujcvq3mrtvyuz7gjv6yjlsx76qxtqk3k4z\n", + "\trecipient: bostrom1pq9q64mfgp3cssaugsd5av6rf67efyzpykq6td\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xh5cqhxfarjmnmquhlynjyh9xd2j5nxrrzkak8\n", + "\trecipient: bostrom1n3h8m0e0xy5axv2xkttyyhjttaa49qpv6nlwxt\n", "\tamount: 1boot\n", - "\trecipient: bostrom1kkszf9376x2wmx4hx6jnqteufrcfu4y7zmjm88\n", + "\trecipient: bostrom1fknfe5qczrmkm9q6dx6d63hh5v9nztkdk6xj95\n", "\tamount: 1boot\n", - "\trecipient: bostrom1tx4npp655y8kfe80t5065mjtfukfwscd2g75lq\n", + "\trecipient: bostrom1lggvwqa68hggmvx6ceyhanxegu4wx867pu6tlm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1f7edss94wcw7d75wn9le4ufzcrh9c7xg8emc6x\n", + "\trecipient: bostrom156gwt6ahk5jfptp8jcg56jwwvumhtucwzx48yx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zdsuc6c90dj7g6ckw8fsdjjyvmgv6wp48p06l6\n", + "\trecipient: bostrom1mymsz36xshe4jtvhc6reammaas9g33cxaks7pm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rra6lpczdl4dssggwh0xsja28g8stg6rks9z9r\n", + "\trecipient: bostrom1nyudwhlnjk07rky937rrep6pnr6r4h4zrfvepk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ywea3k3pr2csf42fa2074nq0fzzzl47mc3hlu8\n", + "\trecipient: bostrom1792g90xakq55tssa6rsphdqsjx642h3mmgprhu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k7vwk8pdka0j044l3qxzdu7jkzgsjrefujk7g2\n", + "\trecipient: bostrom1njz353ta8j753t8dh3wks945w7fzzes6cr6e9t\n", "\tamount: 1boot\n", - "\trecipient: bostrom10ujmghscue3rg5mtejuf83ejedgqgdx3tm67hq\n", + "\trecipient: bostrom1u50h7w60k6uxa2jnppzkadl5qyjpz9vlwf684p\n", "\tamount: 1boot\n", - "\trecipient: bostrom1j9z5dnnehwnmdnxyyrkwaaygtwls5xghar0rh6\n", + "\trecipient: bostrom1r36crsyv8avj70q3wc558ktadh5pd52yx00umu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1pmvdmwuqxu6egdqwv4dwm4elajkrlrqtu4kgx4\n", + "\trecipient: bostrom17rcc77lajfky9djyy9nxw9vcenvj7pylstx3ck\n", "\tamount: 1boot\n", - "\trecipient: bostrom19ammktlj7932y92us00rfql7654cudzk6grw0s\n", + "\trecipient: bostrom1aphxaergxtkwzs0ycgz98hnu6r8a3jl7h90atw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1clzzdsxs8g2ctnex4dme4pwlwmhsjgfm4fate4\n", + "\trecipient: bostrom1d20udnnmncnsca606uynmsyx9xqxe9720ra8fv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dzmpm0jw65hktgxq7uu4q087hgpm9tag6hlc2q\n", + "\trecipient: bostrom1wskuqwvaf9634w6e2959vejjgy6t566sq34ljy\n", "\tamount: 1boot\n", - "\trecipient: bostrom12g7utasjrj7274efgakdu474fj3extwfugw420\n", + "\trecipient: bostrom16h0ld0vsa03yg3ylvhy3f4rlm45n3vwe0ytj4q\n", "\tamount: 1boot\n", - "\trecipient: bostrom105v8lx7nm9f5vevczvkvr4zzmyg5t6pc2sd3sx\n", + "\trecipient: bostrom1yvaugena35tsy8e5ama4mwc5qegpx0qz6h95fl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1709z6pvf2zfpstfpg0gzx7ynhzjd7ltzkjz3yz\n", + "\trecipient: bostrom1zw8e9xysdzzyx2ahqhg8d0jdhj3tu6hafzfzt6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1a0j5kggusr6330ut53yrklkuwpqzfftuqx6q7c\n", + "\trecipient: bostrom1kxxca2zpv535nxmxnndks8g0lpqg8hcjdk6xfv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wqtycyff3cw6n57p43z035wwq08j6xl6dgusfx\n", + "\trecipient: bostrom18jmej4pg9pu89qfx0ejnjfuz88krarsct32at8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k5npar4f8thuw8f9asgc37r7gftdjw62v2046d\n", + "\trecipient: bostrom1dctr5yx33rpn6ypkcw3xlhnr48jhunxyftw6ha\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hp4fldang8nuhxue47h06rragd83a3sk45pyda\n", + "\trecipient: bostrom1g4wxykswk5ryzaefpwehj5xz0vsc7wkfsl5xv6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jtlxeczgaakga4mxlfz3fl6wx5zwfccg40keq8\n", + "\trecipient: bostrom1n9wp5seymgsezk83hu6p2xfngd87cwy2nuwv0u\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c07dt4q9rlt05rark6krfxtq6dm2frzwrzzca2\n", + "\trecipient: bostrom1uw5c9p9pctt9ev6cmw43sat0cnm9gu4lsp3d3c\n", "\tamount: 1boot\n", - "\trecipient: bostrom12t7cev3l42pdqch6j2lj7pujl2g2xausgf3ncp\n", + "\trecipient: bostrom1r8vyekjnpdcenatks2fwfvw5t7yz3shq4uxqnf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sa94a793d63agfelm9jqr5pfs9gtwtsl0ve7dj\n", + "\trecipient: bostrom12uq7s2pfes8d3vysv7djrs9qle4nap47r94ye3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1sxjhktsmrrjehra8y6tkp0yemp9329e4k22n6p\n", + "\trecipient: bostrom1497fcs4twl5qznsu3l98j3qrturkdmjwqkkvpf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1enerfqhgn9sz7nj4ufqxgnfwyfv8zprq7t5297\n", + "\trecipient: bostrom1vx86z4ypvf3jsutvy9yp4mh0rsn3vy6q02s82h\n", "\tamount: 1boot\n", - "\trecipient: bostrom153dy50w36822ahp5g0zs42pljjqqwufh925ngf\n", + "\trecipient: bostrom1ky33actq9gl30pp4jml4rm9a0c8qtq9gfr6nhk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fe3sc5cnfhnsv6yg3l4pnmdywgal2d8wvs5xt0\n", + "\trecipient: bostrom1ef0e5gx2nc678swx5q6344zh4pauxaztdzhlsy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ge42amv45yrx3ash6rn3fg0zzcvvv0m8zgd4ek\n", + "\trecipient: bostrom1rg3e57ev38c926aqkf54afwjpnudhduvg3keec\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xdjpwj3ydm8w6dfuw36plwuv4nfp0gc4lj3vc6\n", + "\trecipient: bostrom1nwf2pkq2uxe4dt2zhfntlyg730cw2wpqzl4g53\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u2zdyfrwgmvyt6ed7vkuah0zfz89qwer44s39y\n", + "\trecipient: bostrom1kasvauw405gk5jm09rh9m4002lm2z3skkyr5r3\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s2plvnt0k2z5auvzemd30j8g276l93www7zdgd\n", + "\trecipient: bostrom1t4hsvvwp0gq2hysgyvdxeajn5ssydps3z3929v\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vw432hg3v9q3khj26ds7hz8nhh82yxsmrcpxxd\n", + "\trecipient: bostrom1ermktsh35vk52mjkq6eq5uxgdky7754vmjkwwn\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fggn95fv7yvph4vt8gyhlyjpqpp00hqdtt6h2k\n", + "\trecipient: bostrom1w4zqtwhckj9jqxyqzxsjkuluhwfk5wvwp4734n\n", "\tamount: 1boot\n", - "\trecipient: bostrom1utvgrw4zy90u3sax9es5mmyu59nqcgsn9nlh07\n", + "\trecipient: bostrom1pu8ehac4yd4gj0j9mdxfq0uqtl5cefvu3lkc3t\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c9n67utln9ecu57wffs2g34py8rl7jfy7cuefw\n", + "\trecipient: bostrom1x2f2cltlg93vhnjujxstt8zrckf7w0va2ywgcg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wr34r06hta64l929dytd66zg5ga8274gquey7r\n", + "\trecipient: bostrom145pvyfwsaqxky637feh3lwuf0qdyumzhdz375z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1k2n45jwm2ar3ljc9antrrtla5dlrlm4e7u3yz8\n", + "\trecipient: bostrom1xnh686fa06w9dpwmm6ezxfkzhl7rtx0u244r5l\n", "\tamount: 1boot\n", - "\trecipient: bostrom15ymvalestg9y05d70nt40y20lkmxu7stv0ccu8\n", + "\trecipient: bostrom1t093fgarjjdj6z0n0en3mcq7xwx3zu6uvy6xxs\n", "\tamount: 1boot\n", - "\trecipient: bostrom150dkpr90jdedqta9hy2838dddrkak4qvj4grqz\n", + "\trecipient: bostrom1wld2mu70sh0pvx7jvd5hs3msar4d0xzrqnmp0p\n", "\tamount: 1boot\n", - "\trecipient: bostrom16nf839y69wes3yacvzycvygppdws3q6833x7wg\n", + "\trecipient: bostrom1xk42c5qh290rru7djmdqcvph0d0aelc4a6sjsm\n", "\tamount: 1boot\n", - "\trecipient: bostrom14ecd2guw3unfka39vwnxfcgsjm0l63lfl60jm4\n", + "\trecipient: bostrom1eyzahe7hntu7xqnrgp4uncy324yyt0q5dtjv8z\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fj5wuge24w5tm3s38mn3qgvuhqqsvu4ulw749e\n", + "\trecipient: bostrom1c24ue0sf2l00yjtcu8aqth52jduz04g8g86cvg\n", "\tamount: 1boot\n", - "\trecipient: bostrom1e872ga9svc8hxk7g83dcq52dsdcdduxzdf8vxt\n", + "\trecipient: bostrom1x23w3zfnts4lcsjm278da8vmttn2veqqk6x0d0\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hdxxrmt62z6h6x8xtwydwsem70fhcn20yxkktx\n", + "\trecipient: bostrom1lyg8txla0kjtfdnvrz7hk9795plkuzlqc3qegk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xlurnyeqj8a424htf2nupz4sfd672729jpeqga\n", + "\trecipient: bostrom1zrppsufpqwe85wz84rx3suvq6dnhjva2n2dh5h\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g9d64h8rz2drcngqfl2ma2z6xuuv5xerpnykq0\n", + "\trecipient: bostrom1q9ct6x5ls5kt3jvz966kekruuvkvp2e70ffhva\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m7ds2kuk0xnew9t873wd2e3jkeuh75s7xrzxha\n", + "\trecipient: bostrom18dmj57ym5dgkj76t9fzfjrqan4hpvpkzfjlv3c\n", "\tamount: 1boot\n", - "\trecipient: bostrom1m4864rvulxglmvm5m8hfld2tw6vzgyxks7rcqa\n", + "\trecipient: bostrom13ydgcwayysassa667rn7qwfcesdnslujfqw3c9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1s8usms2lzeha9u2cmd3cddr3vtukynru8cgu8a\n", + "\trecipient: bostrom13f6z70qjdgnn33u7xa589zd5eq9e4r5k2pe9pu\n", "\tamount: 1boot\n", - "\trecipient: bostrom1dn2jxeqs2zlnj5ckef2h08xy8q3k7yyktlyt2n\n", + "\trecipient: bostrom1wsk3ygqft8n3llkflg0rdfazmzr0c070hy5rfz\n", "\tamount: 1boot\n", - "\trecipient: bostrom1px35jkfus2r679qtv3284f2rnalwp3d6k72p0n\n", + "\trecipient: bostrom1hwj645su247x7htrcnrjcmfsh98utlxwkcgmgx\n", "\tamount: 1boot\n", - "\trecipient: bostrom1gc5gg6l43jeny53f5kcfxsrr2rd5txgw0sly8w\n", + "\trecipient: bostrom1vqyvyvfykmgpv2y6pjgas5r4s4nevdavga2rxr\n", "\tamount: 1boot\n", - "\trecipient: bostrom149nfnp3yam0ytw3nwhcl9er4wxgnz5mpgaxkk5\n", + "\trecipient: bostrom1t4676xaylec5lhhcc36yv4cft3ntulehrgqpn8\n", "\tamount: 1boot\n", - "\trecipient: bostrom178lk25e0rh9lcwu8ldvprfertgtlm7smr7hw9l\n", + "\trecipient: bostrom13r9kdchp7kfxq8vcsytlh8p8sn0ud5rfltmhuw\n", "\tamount: 1boot\n", - "\trecipient: bostrom175p56xpedhye0kz9ua3ccsgsd4pcajc04ku9ye\n", + "\trecipient: bostrom1nzu22p38j78gay8ulnu0d76zktzwcr7vvm2zp4\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jzfelqvuzyfrrwatc9edphdmal9gqdyw8sltnp\n", + "\trecipient: bostrom10mprxc007p2ufy69nandme0n7hc2r07vwfu3dm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wd8662mm0vak4p6zv4jjysw9ttsm2mezk5048a\n", + "\trecipient: bostrom188yymw0u8puwruyzzs2ugrcnumalejuct0srxc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ucst888jvkfp0qzgwesqs26f9uj5dhz62pgllv\n", + "\trecipient: bostrom1vz3djtm4gz6hdr5apu4g5d69z58svxyr0kt8vh\n", "\tamount: 1boot\n", - "\trecipient: bostrom1723m85tp04k0v3w3vkqr3a4pu3wz7dt8u9e2ql\n", + "\trecipient: bostrom1r90j8ydquk3505a2wd84a43s2szqzw96u9f36f\n", "\tamount: 1boot\n", - "\trecipient: bostrom154wgd8qmg70cuqaszspflqc9tz03z82gt2yrd6\n", + "\trecipient: bostrom1xv5cxzkmfkm36vx3ul4gmt5sgsej2aypd3vgyc\n", "\tamount: 1boot\n", - "\trecipient: bostrom12qznnamf4ptvc8qn6ywm5wjjnvmtahyznmyalf\n", + "\trecipient: bostrom1u4d2vcwfj0h4a3mvw3tvup8fwdp597ypg0v8cl\n", "\tamount: 1boot\n", - "\trecipient: bostrom1e9rh6uz2a8qw3wwaedf8g2d8s6d8t9p92ljs47\n", + "\trecipient: bostrom1slapuzuja5g34efnz09qe822vrjys8gza0s2h9\n", "\tamount: 1boot\n", - "\trecipient: bostrom16mngktkvqewm4afpcc2m7r06y65403dqevxfcu\n", + "\trecipient: bostrom10kmed8fujy5pnqvv9a6y9jffcu2uvzjycygj5h\n", "\tamount: 1boot\n", - "\trecipient: bostrom14x6c0nt3l7e4xxvufapmdpch8gq6ysepwc79qu\n", + "\trecipient: bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850\n", "\tamount: 1boot\n", - "\trecipient: bostrom18605553ld5nvw5yvf37n20asz5uy62xaxqpyxw\n", + "\trecipient: bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ywr569ke6tgpwc03t36uz7f73aweg6u6tdckcm\n", + "\trecipient: bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49\n", "\tamount: 1boot\n", - "\trecipient: bostrom1g8hyw4rf3zdl2t2pwz62l0lxygfn9ghg5q2vh3\n", + "\trecipient: bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8\n", "\tamount: 1boot\n", - "\trecipient: bostrom1cccky3u8au0qvqt2d3z4kj74wuzfaknlll6v98\n", + "\trecipient: bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n\n", "\tamount: 1boot\n", "Gas used: 21,524,229\n", - "Tx hash: E6406B670BD8BA09F59E5FC3377EE93A9D5069AD332639C409D7AF2E95D2E0B3\n" + "Tx hash: EAD801AF7819E0502EA2DCFEA965283FE39366F3BCB649E6D1F428B369589FF6\n" ] } ], @@ -6757,7 +6757,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "90621c73ae9240b2ab1661ed8298923c" + "model_id": "964252621e7d49b3b996548fa85ac7ce" } }, "metadata": {}, @@ -6775,8 +6775,8 @@ "\tNickname -> Passport Owner Address\n", "\tneuron: Name Subgraph Contract\n", "\n", - "\tPassport Owner Address -> Avatar\n", - "\tAvatar -> Passport Owner Address\n", + "\tNickname -> Avatar\n", + "\tAvatar -> Nickname\n", "\tneuron: Avatar Subgraph Contract\n", "\n", "\n", @@ -6785,19 +6785,15 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Passport Contract\n", - "\treply contract: Passport Contract\n", + "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 209\n", - "Gas used: 407,208\n", - "Tx hash: 27F13AB3DB73EE25DB27004DF1ECA791905623AD426FC5571F83EB03AFD5B054\n" + "\ttoken_id: 1\n", + "Gas used: 401,597\n", + "Tx hash: CB3467E0E041673A0B49CBB18D8DAD3E84321DD0FE17021CBE54B32A630B51A1\n" ] } ], @@ -6846,7 +6842,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "44ae19bb83ec47bc98336b28b8b191e0" + "model_id": "654620dcfb9d44f2b877dca215c405e2" } }, "metadata": {}, @@ -6860,8 +6856,8 @@ "Events\n", "\n", "cyberlinks\n", - "\tPassport Owner Address -> Ethereum Address\n", - "\tEthereum Address -> Passport Owner Address\n", + "\tNickname -> Ethereum Address\n", + "\tEthereum Address -> Nickname\n", "\tneuron: Proof Subgraph Contract\n", "\n", "\n", @@ -6869,24 +6865,21 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Passport Contract\n", + "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16491805421\n", - "\taddress: 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6\n", - "Gas used: 265,000\n", - "Tx hash: 4AB4ADD58241DD2B3007503FD7F8A457AB88CE06055FE268CD73BF3E70FFA0FE\n", + "\tnickname: john16492448011\n", + "\taddress: 0xc054139731e52960f8074be8a5e95f3fcd721cf3\n", + "Gas used: 263,051\n", + "Tx hash: 93FAC9D24252A5D9C22E2B611BB2B96BCED9775DDAD508CCE34D0E3EBB3BA9A0\n", "\n", "Events\n", "\n", "cyberlinks\n", - "\tPassport Owner Address -> Cosmos Address\n", - "\tCosmos Address -> Passport Owner Address\n", + "\tNickname -> Cosmos Address\n", + "\tCosmos Address -> Nickname\n", "\tneuron: Proof Subgraph Contract\n", "\n", "\n", @@ -6894,18 +6887,15 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Passport Contract\n", + "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16491805421\n", - "\taddress: cosmos19t84mv54avulkj5uhelnklnaq3j256j80nw2tw\n", - "Gas used: 267,449\n", - "Tx hash: 4BCACA235148FE82E33A0B0490ED2E055FAD0296FEEACE3DF494F05331596E81\n" + "\tnickname: john16492448011\n", + "\taddress: cosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4\n", + "Gas used: 266,485\n", + "Tx hash: E5459A5C15203880593BB18D4A232536837E2325C90086BE6174818E2FE3B4FA\n" ] } ], @@ -6958,7 +6948,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "5c60515d83444280a90564ef28257325" + "model_id": "ddb60057a5a74ac6a2a280ca5390e56c" } }, "metadata": {}, @@ -6968,13 +6958,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "MsgExecuteContract(sender='bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5', contract='bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8', execute_msg={'claim': {'nickname': 'john16491805420', 'gift_claiming_address': '0x53aab6fbd57f81474d5f982b7283db51de3c8317', 'gift_amount': '1000000', 'proof': ['161e04d67252fe71120c2e00d55501f8c22a95564d5d8ebc6bf48b10caad8d07', '7d8103c81cfc5d4787dca5edcc490b5ca19829f2daaba858fc983db84cbe6257', 'a8b9da4bf8622363d383156a88f4bcca3f819b0b339236cd49a9962e94be623c', '430baa2e4dae09ead61ba3402bbd621bf3acf4c0feb58e1ac88dcdaa3e99d08f', '11412ddba6be38b853cd84edceebacbe02165e8b597f7fd5f16c21c3c923b6ed', 'a321051347d21c788bbd54c192521857733fbcbdda8b645107478bca464099cd', '622dbee85410571169ead48be8946571f462b26c34405540d0899d874dea15fb', '36e3fa2c87986f4db50710458ce13451846a4caf9b4f07d6bfd7b3954f0788d8', 'b568a56dbdd8bdf3813edfa0b447ed4b0fa6d4febde8778119a652bde0c58d29', '5cdc291d151b402713a47d46c6467a39be9048c2337419006554f5bb73320cd2', '900600ed0bb58aaa44ad898473b129a36b2e1a44f6362cbe9800f8802d34cd9d']}}, coins=Coins())\n", - "Tx(body=TxBody(messages=[MsgExecuteContract(sender='bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5', contract='bostrom16mmtey75hqg7z48hyddvrrqs6xpaa78yq82zczmk4y7w60fj60ds56q6n8', execute_msg={'claim': {'nickname': 'john16491805420', 'gift_claiming_address': '0x53aab6fbd57f81474d5f982b7283db51de3c8317', 'gift_amount': '1000000', 'proof': ['161e04d67252fe71120c2e00d55501f8c22a95564d5d8ebc6bf48b10caad8d07', '7d8103c81cfc5d4787dca5edcc490b5ca19829f2daaba858fc983db84cbe6257', 'a8b9da4bf8622363d383156a88f4bcca3f819b0b339236cd49a9962e94be623c', '430baa2e4dae09ead61ba3402bbd621bf3acf4c0feb58e1ac88dcdaa3e99d08f', '11412ddba6be38b853cd84edceebacbe02165e8b597f7fd5f16c21c3c923b6ed', 'a321051347d21c788bbd54c192521857733fbcbdda8b645107478bca464099cd', '622dbee85410571169ead48be8946571f462b26c34405540d0899d874dea15fb', '36e3fa2c87986f4db50710458ce13451846a4caf9b4f07d6bfd7b3954f0788d8', 'b568a56dbdd8bdf3813edfa0b447ed4b0fa6d4febde8778119a652bde0c58d29', '5cdc291d151b402713a47d46c6467a39be9048c2337419006554f5bb73320cd2', '900600ed0bb58aaa44ad898473b129a36b2e1a44f6362cbe9800f8802d34cd9d']}}, coins=Coins())], memo='', timeout_height=0), auth_info=AuthInfo(signer_infos=[SignerInfo(public_key=SimplePublicKey(key=b'\\x03X&\\xe9h\\x88\\r6\\x1e#+}A$\\x86q\\xab\\x98)\\xbd\\xf98 \\x9f\\xc9(\\x07\\xf8\\xec\\xc2o\\xd2k'), mode_info=ModeInfo(single=ModeInfoSingle(mode=), multi=None), sequence=3)], fee=Fee(gas_limit=400000, amount=Coins('0boot'), payer='', granter='')), signatures=[b\"\\xcf/\\xe1=\\x00\\xe1\\x8a5+\\xdd4F\\x1f\\xac\\t0'\\x84\\xeb-\\x9f\\xa4\\xe3\\xe5\\xc1\\x14\\xbb\\x81\\xde\\t\\r\\xea(\\xab!qx\\xb3\\xf3\\xb1\\xc68\\x89\\x91\\xdbdK\\x0e\\xae\\x91445\\xce?\\x17\\x9dB\\xa8\\xc7\\x13\\x9a\\xc8\\x8f\"])\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -6984,26 +6972,26 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x53aab6fbd57f81474d5f982b7283db51de3c8317\n", - "\ttarget: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\toriginal: 0x9652c5b6b5fbb66725d04a9c60910bddeffea626\n", + "\ttarget: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 13000000\n", - "Gas used: 310,199\n", - "Tx hash: CC8C9E3F8353C549144824D669D4D36777C873E96DE0FD39DE771B1C05501075\n", + "Gas used: 310,343\n", + "Tx hash: 5AE306D03DD911C82973226B687DDA5FF5FF397E9149F3FF7D4F7B19165CFF83\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7013,26 +7001,26 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn\n", - "\ttarget: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\toriginal: cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz\n", + "\ttarget: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 13000000\n", - "Gas used: 310,547\n", - "Tx hash: 8BA6A38131511F1DCFE2A2F1310295C0CDA79DA5FEE598781388C94E6221DDF3\n", + "Gas used: 310,692\n", + "Tx hash: 3F52991D99F42665DF688254C8DF7C7B2FD6C92AFC431A71D0F97EBDFB7D8E2D\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\treceiver: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7042,31 +7030,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\trecipient: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xde48fb7fcd78f33ebdef4956fb79e02bc70c97d6\n", - "\ttarget: bostrom19t84mv54avulkj5uhelnklnaq3j256j8vq6e4f\n", + "\toriginal: 0xc054139731e52960f8074be8a5e95f3fcd721cf3\n", + "\ttarget: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", "\tamount: 12922000\n", - "Gas used: 310,479\n", - "Tx hash: 40A0841C726084DB9A03F3576FDF0F06900B42A4C6510F32575671AB8D72EDE5\n", + "Gas used: 310,623\n", + "Tx hash: 574BCAF88C406B4FB07790D7C57F2ED2885B7554D94DB6E80D7DAB84842B2CD7\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: EC68880EB505E40ECD0A74271068790FEB994335C534D79DE3AD945A9ECE6D63\n", + "Tx hash: 2B7BB9AADA7345CA037C7BD490C87EF9975BD785191611743B7E4DE6E21C37EA\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\treceiver: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7076,31 +7064,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\trecipient: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x00ef128fe6552bbdbaa9ccd799348cf0bfc09004\n", - "\ttarget: bostrom1j7zq5gs74hlx0v0wlkfueuz2agdnm0jd95hlu3\n", + "\toriginal: 0x28ad7d9904c8b3e114251b273e7d5ca5a875110c\n", + "\ttarget: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", "\tamount: 12844000\n", - "Gas used: 310,674\n", - "Tx hash: 0B235947D22B802B97DF2EA756BCE11D395937973C12B9EFF983FE7ED7152360\n", + "Gas used: 310,818\n", + "Tx hash: E9572F449CA4E33B6966AF409F91E23833088B9725455451CAA0A1B708CE7EA3\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: 842364CF7C276D36DCB37FFB1973EEB4E5DAD8E7F1B518DF64148919E15047B7\n", + "Tx hash: 8EF7D441474F29913F0B598F6A5E5D3EA4458C713C663FA96BFE6127CFF5A1EE\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\treceiver: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7110,31 +7098,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\trecipient: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xbbe13e3406d7eed71c67cffb687459f3b217bf9f\n", - "\ttarget: bostrom183y9le3eqqy058fjkk2l23f54gxv2vkycg85qh\n", + "\toriginal: 0x3bdac6c42a44eb2945089ce04c2ae76d421b8e32\n", + "\ttarget: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", "\tamount: 12766468\n", - "Gas used: 310,684\n", - "Tx hash: DF61211AC78B2DCD9EB5625366165FF91F1EE9D2930470EEB6A3F4641BAFC7BA\n", + "Gas used: 310,827\n", + "Tx hash: CC66342420C049A56D1BE48C71F3779EF7D7AB692B61F8AEF5B4DA64898ADBE1\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: C28DD7D5657EF068466C9AC1C17196C8F92572254AA244C2F0128D12D9226034\n", + "Tx hash: 11494CDEEE38C95908280B829855F5DF7976CB64E2AB172F4B4A7BD3F5FDD437\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\treceiver: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7144,31 +7132,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\trecipient: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xc176ebd88f87b19f73d6bbcc638e9ca3e49c418d\n", - "\ttarget: bostrom1c22rcy7lq55qrcllvyxy0d4dm8we7h3ulkxe6v\n", + "\toriginal: 0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a\n", + "\ttarget: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", "\tamount: 12689404\n", - "Gas used: 310,878\n", - "Tx hash: E47C17A482291C8CE360FD2DF5BD4EEB36D206C9B764841B9676B54A9DBB4680\n", + "Gas used: 311,022\n", + "Tx hash: AFAC97C94DAF406CE8F7F7A669112A1A8AB9187DDF27468EBB6E0F628CFF8D80\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: 6CC3B1ACBC38BBC6D979D700724B673181AAFB75BED93AD6C00E716226368EC2\n", + "Tx hash: C9F181106949C1A438ECEBC4BE22859662F8F4E2FD47C997CF870228830A761B\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\treceiver: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7178,31 +7166,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\trecipient: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xa976c37b314928a7fc061098625d78be3dbad1ab\n", - "\ttarget: bostrom1wumyzej3ncvzqd90vda0f3d3jztqe9mu32krz3\n", + "\toriginal: 0x90abd3fd0b89318573e9fa3da0834d56845c112c\n", + "\ttarget: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", "\tamount: 12612805\n", - "Gas used: 310,888\n", - "Tx hash: 5706EC51DD518AA5A224F1C2D6DA2EBAD50C65DCFDB97CE18175741D8CCE014B\n", + "Gas used: 311,032\n", + "Tx hash: 777550E405258580FE3FACF92ECE7AE4F6A94580AB380BC406BD5237595700A5\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: D3C25AE8D08EAF75B84C20077EDC52D6E1660BBD2A992F7D7F65068D59A5CF23\n", + "Tx hash: CA21205F978BC5B8742585364E6814FC3CF1427D215624F9F7CAB0863F8CC7AF\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\treceiver: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7212,31 +7200,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\trecipient: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xbff1ad5a5511ef3c6fe5683937912f0fa6d34c89\n", - "\ttarget: bostrom1xc2uekvacet25macjd4pqayy6g9pvfd8ww62fq\n", + "\toriginal: 0x72b3b5c92c89f120a4d3c4a84035c2eeba180737\n", + "\ttarget: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", "\tamount: 12536668\n", - "Gas used: 310,888\n", - "Tx hash: 20C794F3BE27706718511E1980B03169D478367136BE735F93C653B22F71D9F3\n", + "Gas used: 311,032\n", + "Tx hash: 2DACF644B45030E4CFD576C3CD540A07AC46E03B31698985311334E540F5C282\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: 07308B777EC6465FF000E15CADF011225B883AE59221306995E1728B506158AE\n", + "Tx hash: 87AB42C4D1561B4A82499425BA3CCA7B6BC0B5B794E24F9D9041EDD8C8654DFD\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\treceiver: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7246,31 +7234,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\trecipient: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x13a6d4fc41ca46afdc996347de596d1ead851e06\n", - "\ttarget: bostrom1tm9zvye855mjnadwhg2flktgvlqqr7n93gsr8z\n", + "\toriginal: 0xe434035fc9ae52f8dce75d26dd1e833820a84699\n", + "\ttarget: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", "\tamount: 12460991\n", - "Gas used: 310,824\n", - "Tx hash: 8138FD45E59DED9926C28159F689514362046F540167EFE33EF3C17CDC4EFE0E\n", + "Gas used: 310,968\n", + "Tx hash: 5BA2D8CC30CC56B812DA90DCD2FC926E5746B529DCD80C4E25A465F7E576327F\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: 0E4AD4261CC7DB39D2693941D8F5123C25370A9DD35160C9968A8C9D2F727719\n", + "Tx hash: 7F2BF6A43DE46D1D77A7F58668A1862628149F5795D1831BF374D1218C44035D\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\treceiver: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7280,31 +7268,31 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\trecipient: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x14ddef964c20f8168925182da98972c07c087183\n", - "\ttarget: bostrom1mdcrs5h696qs8e258wthgmjtc7exezg48tez9e\n", + "\toriginal: 0xc63f139910f4bebfedd16546b6f4255d09c0acf0\n", + "\ttarget: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", "\tamount: 12385771\n", - "Gas used: 310,915\n", - "Tx hash: 848B2B36E322FEC987C260E5C854EC42B76C5F4C5CCB8EE527C4FFF3F31E50B6\n", + "Gas used: 311,059\n", + "Tx hash: 6F7681DA5D76114136220FD852A39DDEB907025315377AD40801873ED485101B\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: 340DB9F6A0470FA611169F1592BE6F2E31338939FA9C3BE3B15F6DDD1EFE375E\n", + "Tx hash: E67F4272FBF3CF2029F001A3E931D4229C1A289C6A8A4908C42999AA2E0B2C9B\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\treceiver: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7314,26 +7302,26 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\trecipient: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x0f0e5356a63582853dff914466ee60173c88ab27\n", - "\ttarget: bostrom1z9xd2hvvkce23anurs0vnkxxf98ukwh7wprzl2\n", + "\toriginal: 0x17c3728c4b01f4d705d460c8f26e2ab4dd26542e\n", + "\ttarget: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", "\tamount: 12311005\n", - "Gas used: 310,955\n", - "Tx hash: 862A1EF87296555047A81CEE885529B372564F12E34B06A2D4CB6ED1C4DE9803\n", + "Gas used: 311,104\n", + "Tx hash: A1B4D991603434C0C1A18196BA40B2A1A7A75FB15A7E0217AEFFF280767B8C4E\n", "\n", "Events\n", "msg json: invalid\n", "Gas used: 6,489\n", - "Tx hash: 56ADE9D8DB523A84B7A525256B86F241F9E408CA4A2000D425E687B82BAC7E13\n" + "Tx hash: FBEE553D534CF19DF68131EAE0676FB64F5A5BE58319EE8E5CED4D49647B2756\n" ] } ], @@ -7348,7 +7336,7 @@ "\n", "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " claim_ethereum_json = claim(row, display_data=True)\n", + " claim_ethereum_json = claim(row, display_data=DISPLAY_TX_EXECUTION)\n", " parse_output.parse_contract_execution_json(claim_ethereum_json)\n", "\n", " claim_cosmos_json = claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", @@ -7390,7 +7378,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "610dba4da8594c7a9b63a3dfb4c5c642" + "model_id": "e8861f049a504a429322d354e623254a" } }, "metadata": {}, @@ -7404,7 +7392,7 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 1290000boot\n", "\n", "coin spent\n", @@ -7414,27 +7402,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tsender: Gift Contract\n", "\tamount: 1290000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", - "\tgift_address: 0x53aab6fbd57f81474d5f982b7283db51de3c8317\n", + "\taddress: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\tgift_address: 0x9652c5b6b5fbb66725d04a9c60910bddeffea626\n", "\tstage: 9\n", "\tamount: 1290000\n", "Gas used: 148,799\n", - "Tx hash: E1C3B0B2FFFB35A11A144B2A03655F20BBBF52743B978CAEF0D8B9399C25F462\n", + "Tx hash: 0D0A73B6A255239B5A1310F54B25B178F2256F6F4C3311EFB176778245BFD2AB\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tamount: 1290000boot\n", "\n", "coin spent\n", @@ -7444,22 +7432,22 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", + "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", "\tsender: Gift Contract\n", "\tamount: 1290000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom1k7expqvjs3d9d02vveca4ugx2dhenprusq09v5\n", - "\tgift_address: cosmos1k7expqvjs3d9d02vveca4ugx2dhenprunnmkjn\n", + "\taddress: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\tgift_address: cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz\n", "\tstage: 9\n", "\tamount: 1290000\n", "Gas used: 148,870\n", - "Tx hash: 6966BA09DC1303EEC73C41D17BF245E141D324A488C2B2D0D87C1E69AAF11444\n" + "Tx hash: EAAED45ADCF12F321C22853C96C759A0DBCFF10DB843D2F567A1DD1903DB3142\n" ] } ], @@ -7506,20 +7494,11 @@ { "cell_type": "code", "execution_count": 20, - "outputs": [ - { - "data": { - "text/plain": "218" - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "def get_passport_id(bostrom_address: str) -> str:\n", - " return query_contract(query=f'''{{\"portid\": {{\"portid\": \"{bostrom_address}\"}}}}''',\n", - " contract_address=passport_contract_address)['data']['portid']" + " return query_contract(query=f'''{{\"tokens\": {{\"owner\": \"{bostrom_address}\"}}}}''',\n", + " contract_address=passport_contract_address)['data']['tokens'][0]" ], "metadata": { "collapsed": false, @@ -7530,7 +7509,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 23, "outputs": [ { "data": { @@ -7538,7 +7517,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "bf7b886e7ec64cd894f1072bec6acba3" + "model_id": "bc98d0ebe0fa45de8e3c618c658b8187" } }, "metadata": {}, @@ -7550,9 +7529,31 @@ "text": [ "\n", "Events\n", - "failed to execute message; message index: 0: Unauthorized: execute wasm contract failed\n", - "Gas used: 136,631\n", - "Tx hash: 62BCE1E432161B2351BFE4F76B001A2C961E10C22FC99F6FBD45FC92D3CD74B9\n" + "\n", + "cyberlinks\n", + "\tQmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji -> Nickname\n", + "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Avatar Subgraph Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: transfer_nft\n", + "\tsender: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", + "\trecipient: Passport Owner Address\n", + "\ttoken_id: 2\n", + "Gas used: 359,234\n", + "Tx hash: A3D07D45E0FF6B9B3BFF9A152D4056AD392AF3DEDB3C3825F4148C5AF153311E\n" ] } ], @@ -7571,18 +7572,18 @@ "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 1:\n", " transfer_passport_json = transfer_passport(\n", - " row, \n", - " token_id=get_passport_id(row['bostrom_address']), \n", - " to_address=WALLET_ADDRESS, \n", + " row,\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " to_address=WALLET_ADDRESS,\n", " display_data=DISPLAY_TX_EXECUTION)\n", " parse_output.parse_contract_execution_json(\n", - " transfer_passport_json, \n", + " transfer_passport_json,\n", " row=row)\n", " break\n", " else:\n", " transfer_passport_json = transfer_passport(\n", - " row, \n", - " token_id=get_passport_id(WALLET_ADDRESS), \n", + " row,\n", + " token_id=get_passport_id(row['bostrom_address']),\n", " to_address=WALLET_ADDRESS)" ], "metadata": { @@ -7592,32 +7593,6 @@ } } }, - { - "cell_type": "code", - "execution_count": 24, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'transfer_passport_json' is not defined", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m/var/folders/_p/6pbh6qrj09s5tmd__ndznj3m0000gn/T/ipykernel_62161/3523452160.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m \u001B[0mparse_output\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mparse_contract_execution_json\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtransfer_passport_json\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mrow\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mrow\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", - "\u001B[0;31mNameError\u001B[0m: name 'transfer_passport_json' is not defined" - ] - } - ], - "source": [ - "parse_output.parse_contract_execution_json(transfer_passport_json, row=row)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, { "cell_type": "markdown", "source": [ @@ -7632,7 +7607,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "outputs": [ { "data": { @@ -7640,7 +7615,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "aab2b27687fc48a987f5c3bc7098d05d" + "model_id": "60437183466945e5bc1aa8a49d4bba7e" } }, "metadata": {}, @@ -7652,26 +7627,50 @@ "text": [ "\n", "Events\n", - "failed to execute message; message index: 0: Unauthorized: execute wasm contract failed\n", - "Gas used: 130,402\n", - "Tx hash: 474F39DA3CF33F7328144D8F0C744DC54ED4E17E4500EF75C21D87CF64603A7D\n" + "\n", + "cyberlinks\n", + "\tcyberhole -> Nickname\n", + "\tNickname -> cyberhole\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tcyberhole -> Avatar\n", + "\tAvatar -> cyberhole\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: burn\n", + "\tsender: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", + "\ttoken_id: 3\n", + "Gas used: 360,228\n", + "Tx hash: FAC929AE542165D6ABEEE76841A0D15E2BC67935B5257B9AA25D79583D3CBC34\n" ] } ], "source": [ "def burn_passport(claim_row: pd.Series, token_id: str, display_data: bool = False):\n", - " return execute_contract(execute_query=f'''{{\"burn\":{{\"token_id\":\"{token_id}\"}}}}''',\n", - " contract_address=passport_contract_address,\n", - " gas=400000,\n", - " display_data=display_data)\n", + " return execute_contract_sdk(\n", + " execute_msg={\"burn\": {\"token_id\": token_id}},\n", + " contract_address=passport_contract_address,\n", + " mnemonic=claim_row['cosmos_seed'],\n", + " gas=400000,\n", + " display_data=display_data)\n", "\n", - "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", - " if index == 1:\n", - " burn_passport_json = burn_passport(row, token_id=str(int(get_passport_id(WALLET_ADDRESS)) - 1), display_data=DISPLAY_TX_EXECUTION)\n", + "for index, row in tqdm(claims_with_proofs_df[2:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 2:\n", + " burn_passport_json = burn_passport(row, token_id=get_passport_id(row['bostrom_address']), display_data=DISPLAY_TX_EXECUTION)\n", " parse_output.parse_contract_execution_json(burn_passport_json, row=row)\n", " break\n", " else:\n", - " create_passport_json = burn_passport(row, token_id=get_passport_id(WALLET_ADDRESS))" + " burn_passport_json_2 = burn_passport(row, token_id=get_passport_id(row['bostrom_address']))" ], "metadata": { "collapsed": false, From 08f9a5e758c23b160cbe95405ec55d60d2020f33 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Apr 2022 22:11:58 +0800 Subject: [PATCH 29/69] Fixed eth ledger, added labeled address to passport --- contracts/cw-cyber-airdrop/examples/schema.rs | 5 +- .../schema/claim_response.json | 27 ++++++++ .../schema/instantiate_msg.json | 6 +- .../cw-cyber-airdrop/schema/query_msg.json | 20 ++++++ contracts/cw-cyber-airdrop/src/contract.rs | 3 +- contracts/cw-cyber-airdrop/src/execute.rs | 62 ++++++++++++------- contracts/cw-cyber-airdrop/src/msg.rs | 7 +++ contracts/cw-cyber-airdrop/src/query.rs | 19 +++++- contracts/cw-cyber-airdrop/src/state.rs | 8 ++- .../cw-cyber-passport/schema/execute_msg.json | 49 ++++++++++++++- .../schema/passport_metadata.json | 21 ++++++- contracts/cw-cyber-passport/src/contract.rs | 7 ++- contracts/cw-cyber-passport/src/error.rs | 3 + contracts/cw-cyber-passport/src/execute.rs | 60 ++++++++++++++++-- contracts/cw-cyber-passport/src/helpers.rs | 4 +- contracts/cw-cyber-passport/src/msg.rs | 5 ++ contracts/cw-cyber-passport/src/query.rs | 2 +- contracts/cw-cyber-passport/src/state.rs | 8 ++- 18 files changed, 272 insertions(+), 44 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/schema/claim_response.json diff --git a/contracts/cw-cyber-airdrop/examples/schema.rs b/contracts/cw-cyber-airdrop/examples/schema.rs index d0fd8b4..893fbef 100644 --- a/contracts/cw-cyber-airdrop/examples/schema.rs +++ b/contracts/cw-cyber-airdrop/examples/schema.rs @@ -2,9 +2,7 @@ use std::env::current_dir; use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_airdrop::msg::{ - ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, MerkleRootResponse, QueryMsg, -}; +use cw_cyber_airdrop::msg::{ClaimResponse, ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, MerkleRootResponse, QueryMsg}; fn main() { let mut out_dir = current_dir().unwrap(); @@ -17,5 +15,6 @@ fn main() { export_schema(&schema_for!(QueryMsg), &out_dir); export_schema(&schema_for!(MerkleRootResponse), &out_dir); export_schema(&schema_for!(IsClaimedResponse), &out_dir); + export_schema(&schema_for!(ClaimResponse), &out_dir); export_schema(&schema_for!(ConfigResponse), &out_dir); } diff --git a/contracts/cw-cyber-airdrop/schema/claim_response.json b/contracts/cw-cyber-airdrop/schema/claim_response.json new file mode 100644 index 0000000..546a97b --- /dev/null +++ b/contracts/cw-cyber-airdrop/schema/claim_response.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ClaimResponse", + "type": "object", + "required": [ + "claim", + "multiplier" + ], + "properties": { + "claim": { + "$ref": "#/definitions/Uint128" + }, + "multiplier": { + "$ref": "#/definitions/Decimal" + } + }, + "definitions": { + "Decimal": { + "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", + "type": "string" + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json index 7b58752..b1c4c3e 100644 --- a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json +++ b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json @@ -9,7 +9,8 @@ "coefficient_up", "initial_balance", "passport", - "target_claim" + "target_claim", + "treasury" ], "properties": { "allowed_native": { @@ -39,6 +40,9 @@ }, "target_claim": { "$ref": "#/definitions/Uint64" + }, + "treasury": { + "type": "string" } }, "definitions": { diff --git a/contracts/cw-cyber-airdrop/schema/query_msg.json b/contracts/cw-cyber-airdrop/schema/query_msg.json index 0831b4a..2c83f6c 100644 --- a/contracts/cw-cyber-airdrop/schema/query_msg.json +++ b/contracts/cw-cyber-airdrop/schema/query_msg.json @@ -46,6 +46,26 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs index d662830..a7601a1 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -7,7 +7,7 @@ use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target}; -use crate::query::{query_config, query_is_claimed, query_merkle_root, query_release_state}; +use crate::query::{query_claim, query_config, query_is_claimed, query_merkle_root, query_release_state}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; // Version info, for migration info @@ -90,6 +90,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { QueryMsg::Config {} => to_binary(&query_config(deps)?), QueryMsg::MerkleRoot {} => to_binary(&query_merkle_root(deps)?), QueryMsg::IsClaimed { address } => to_binary(&query_is_claimed(deps, address)?), + QueryMsg::Claim { address } => to_binary(&query_claim(deps, address)?), QueryMsg::ReleaseState { address } => to_binary(&query_release_state(deps, address)?), } } diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 08ae69e..88224f0 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -2,7 +2,7 @@ use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; -use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; +use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState}; use cw_utils::{Expiration, DAY, HOUR}; use std::ops::{Add, Mul}; use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; @@ -158,7 +158,7 @@ pub fn execute_claim( )?; // only claim once by given verified address - CLAIM.save(deps.storage, gift_claiming_address.clone(), &true)?; + CLAIM.save(deps.storage, gift_claiming_address.clone(), &ClaimState{ claim: claim_amount, multiplier: config.coefficient })?; update_coefficient(deps.storage, claim_amount, &mut config)?; @@ -190,17 +190,24 @@ pub fn execute_claim( // send funds from treasury controlled by Congress Ok(Response::new() - .add_message(WasmMsg::Execute { - contract_addr: config.treasury_addr.to_string(), - msg: to_binary(&BankMsg::Send { - to_address: res.address.clone(), - amount: vec![Coin { - denom: config.allowed_native, - amount: Uint128::new(CLAIM_BOUNTY), - }], - })?, - funds: vec![] - }) + // .add_message(WasmMsg::Execute { + // contract_addr: config.treasury_addr.to_string(), + // msg: to_binary(&BankMsg::Send { + // to_address: res.address.clone(), + // amount: vec![Coin { + // denom: config.allowed_native, + // amount: Uint128::new(CLAIM_BOUNTY), + // }], + // })?, + // funds: vec![] + // }) + .add_message(BankMsg::Send { + to_address: res.address.clone(), + amount: vec![Coin { + denom: config.allowed_native, + amount: Uint128::new(CLAIM_BOUNTY), + }], + }) .add_attributes(vec![ attr("action", "claim"), attr("original", gift_claiming_address), @@ -278,17 +285,24 @@ pub fn execute_release( // send funds from treasury controlled by Congress Ok(Response::new() - .add_message(WasmMsg::Execute { - contract_addr: config.treasury_addr.to_string(), - msg: to_binary(&BankMsg::Send { - to_address: release_state.clone().address.into(), - amount: vec![Coin { - denom: config.allowed_native, - amount - }], - })?, - funds: vec![] - }) + // .add_message(WasmMsg::Execute { + // contract_addr: config.treasury_addr.to_string(), + // msg: to_binary(&BankMsg::Send { + // to_address: release_state.clone().address.into(), + // amount: vec![Coin { + // denom: config.allowed_native, + // amount + // }], + // })?, + // funds: vec![] + // }) + .add_message(BankMsg::Send { + to_address: release_state.clone().address.into(), + amount: vec![Coin { + denom: config.allowed_native, + amount + }], + }) .add_attributes(vec![ attr("action", "release"), attr("address", release_state.clone().address.to_string()), diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index c8cfccf..55b8b15 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -54,6 +54,7 @@ pub enum QueryMsg { Config {}, MerkleRoot {}, IsClaimed { address: String }, + Claim { address: String }, ReleaseState { address: String }, } @@ -84,6 +85,12 @@ pub struct IsClaimedResponse { pub is_claimed: bool, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ClaimResponse { + pub claim: Uint128, + pub multiplier: Decimal +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct ReleaseStateResponse { pub address: String, diff --git a/contracts/cw-cyber-airdrop/src/query.rs b/contracts/cw-cyber-airdrop/src/query.rs index 0024861..705f1eb 100644 --- a/contracts/cw-cyber-airdrop/src/query.rs +++ b/contracts/cw-cyber-airdrop/src/query.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{Deps, StdResult}; -use crate::msg::{ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStateResponse}; +use crate::msg::{ClaimResponse, ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStateResponse}; use crate::state::{CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; pub fn query_config(deps: Deps) -> StdResult { @@ -27,12 +27,27 @@ pub fn query_merkle_root(deps: Deps) -> StdResult { } pub fn query_is_claimed(deps: Deps, address: String) -> StdResult { - let is_claimed = CLAIM.may_load(deps.storage, address)?.unwrap_or(false); + let claim = CLAIM.may_load(deps.storage, address)?; + let mut is_claimed = false; + if claim.is_some() { + is_claimed = true; + } let resp = IsClaimedResponse { is_claimed }; Ok(resp) } +pub fn query_claim(deps: Deps, address: String) -> StdResult { + let claim = CLAIM.load(deps.storage, address)?; + + let resp = ClaimResponse { + claim: claim.claim, + multiplier: claim.multiplier + }; + + Ok(resp) +} + pub fn query_release_state(deps: Deps, address: String) -> StdResult { let release_state = RELEASE.load(deps.storage, address)?; let resp = ReleaseStateResponse { diff --git a/contracts/cw-cyber-airdrop/src/state.rs b/contracts/cw-cyber-airdrop/src/state.rs index e9b8bef..e8eadce 100644 --- a/contracts/cw-cyber-airdrop/src/state.rs +++ b/contracts/cw-cyber-airdrop/src/state.rs @@ -34,6 +34,12 @@ pub struct ReleaseState { pub stage_expiration: Expiration, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ClaimState { + pub claim: Uint128, + pub multiplier: Decimal, +} + pub const CONFIG_KEY: &str = "config"; pub const CONFIG: Item = Item::new(CONFIG_KEY); @@ -41,7 +47,7 @@ pub const MERKLE_ROOT_PREFIX: &str = "merkle_root"; pub const MERKLE_ROOT: Item = Item::new(MERKLE_ROOT_PREFIX); pub const CLAIM_PREFIX: &str = "claim"; -pub const CLAIM: Map = Map::new(CLAIM_PREFIX); +pub const CLAIM: Map = Map::new(CLAIM_PREFIX); pub const RELEASE_PREFIX: &str = "release"; pub const RELEASE: Map = Map::new(RELEASE_PREFIX); diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index 19c720d..f371448 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -214,6 +214,36 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "set_address_label" + ], + "properties": { + "set_address_label": { + "type": "object", + "required": [ + "address", + "nickname" + ], + "properties": { + "address": { + "type": "string" + }, + "label": { + "type": [ + "string", + "null" + ] + }, + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "description": "Transfer is a base message to move a token to another account without triggering actions", "type": "object", @@ -466,6 +496,23 @@ } ] }, + "LabeledAddress": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "label": { + "type": [ + "string", + "null" + ] + } + } + }, "MintMsg_for_PassportMetadata": { "type": "object", "required": [ @@ -512,7 +559,7 @@ "null" ], "items": { - "type": "string" + "$ref": "#/definitions/LabeledAddress" } }, "avatar": { diff --git a/contracts/cw-cyber-passport/schema/passport_metadata.json b/contracts/cw-cyber-passport/schema/passport_metadata.json index f276cee..1782b47 100644 --- a/contracts/cw-cyber-passport/schema/passport_metadata.json +++ b/contracts/cw-cyber-passport/schema/passport_metadata.json @@ -13,7 +13,7 @@ "null" ], "items": { - "type": "string" + "$ref": "#/definitions/LabeledAddress" } }, "avatar": { @@ -22,5 +22,24 @@ "nickname": { "type": "string" } + }, + "definitions": { + "LabeledAddress": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "label": { + "type": [ + "string", + "null" + ] + } + } + } } } diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 2b5cc58..b8b8623 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -4,7 +4,7 @@ use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to use cyber_std::CyberMsgWrapper; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERLINK_ID_MSG}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERLINK_ID_MSG, execute_set_address_label}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; @@ -52,6 +52,11 @@ pub fn execute( avatar_subspace, proof_subspace } => execute_set_subspaces(deps, env, info, name_subspace, avatar_subspace, proof_subspace), + ExecuteMsg::SetAddressLabel { + nickname, + address, + label + } => execute_set_address_label(deps, env, info, nickname, address, label), // Overwrite CW721 methods ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index ca755f2..6ae4eb6 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -22,6 +22,9 @@ pub enum ContractError { #[error("Approval not found for: {spender}")] ApprovalNotFound { spender: String }, + #[error("Address not found")] + AddressNotFound {}, + // ----- #[error("Got a submessage reply with unknown id: {id}")] diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 20e9d58..fb08990 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -13,7 +13,7 @@ use cyber_std::{CyberMsgWrapper, Link}; use crate::error::ContractError; use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address, prepare_cyberlink_submsg}; -use crate::state::{ACTIVE, AddressPortID, Extension, NICKNAMES, PassportContract, PassportMetadata, PORTID}; +use crate::state::{ACTIVE, AddressPortID, Extension, LabeledAddress, NICKNAMES, PassportContract, PassportMetadata, PORTID}; use crate::state::{Config, CONFIG}; type Response = cosmwasm_std::Response; @@ -344,15 +344,15 @@ pub fn execute_proof_address( msg: "Too many addresses".to_string(), }); } - if addresses.iter().position(|x| *x == address.clone()).is_some() { + if addresses.iter().position(|x| *x.address == address.clone()).is_some() { return Err(ContractError::IsNotEligible { msg: "Address already exist".to_string(), }); } - addresses.push(address.clone()); + addresses.push(LabeledAddress { label: None, address: address.clone() }); token_info.extension.addresses = Some(addresses); } else { - token_info.extension.addresses = Some(vec![address.clone()]); + token_info.extension.addresses = Some(vec![LabeledAddress { label: None, address: address.clone() }]); }; cw721_contract.tokens.save(deps.storage, &address_portid.clone().portid, &token_info)?; } else { @@ -414,8 +414,11 @@ pub fn execute_remove_address( .update(deps.storage, &address_portid.clone().portid, |token| match token { Some(mut token_info) => { let mut addresses = token_info.clone().extension.addresses.unwrap(); - let index = addresses.iter().position(|x| *x == address.clone()).unwrap(); - addresses.remove(index); + let index = addresses.iter().position(|x| *x.address == address.clone()); + if index.is_none() { + return Err(ContractError::AddressNotFound {}) + } + addresses.remove(index.unwrap()); if addresses.len() == 0 { token_info.extension.addresses = None; } else { @@ -764,6 +767,51 @@ pub fn execute_set_subspaces( ])) } +pub fn execute_set_address_label( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + address: String, + label: Option, +) -> Result { + + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &nickname.clone())?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env, address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + // find needed address and save label + cw721_contract + .tokens + .update(deps.storage, &address_portid.clone().portid, |token| match token { + Some(mut token_info) => { + let mut addresses = token_info.clone().extension.addresses.unwrap(); + let index = addresses.iter().position(|x| *x.address == address.clone()); + if index.is_none() { + return Err(ContractError::AddressNotFound {}); + } + addresses[index.unwrap()].label = label.clone(); + token_info.extension.addresses = Some(addresses); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "set_address_label"), + attr("nickname", nickname), + attr("address", address), + attr("label", label.unwrap_or_else(|| "".to_string())), + ])) +} + pub fn try_migrate( deps: DepsMut, version: String, diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index c077455..85bf79e 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -60,9 +60,11 @@ pub fn proof_address_ethereum( fn get_recovery_param(v: u8) -> StdResult { match v { + 0 => Ok(0), + 1 => Ok(1), 27 => Ok(0), 28 => Ok(1), - _ => Err(StdError::generic_err("Values of v other than 27 and 28 not supported. Replay protection (EIP-155) cannot be used here.")) + _ => Err(StdError::generic_err("Values of v other than 0, 1, 27 and 28 not supported")) } } diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index a46a16a..8c1a5f0 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -76,6 +76,11 @@ pub enum ExecuteMsg { avatar_subspace: String, proof_subspace: String, }, + SetAddressLabel { + nickname: String, + address: String, + label: Option, + }, // Overwrite Standard CW721 ExecuteMsg diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index 1fb5300..3903735 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -62,7 +62,7 @@ pub fn query_passort_signed( .load(deps.storage, address_portid.portid.as_str())?; let mut result = false; if token_info.clone().extension.addresses.is_some() { - result = token_info.clone().extension.addresses.unwrap().iter().any(|i| i.as_ref() == address); + result = token_info.clone().extension.addresses.unwrap().iter().any(|i| i.address == address); } Ok(SignatureResponse { signed: result }) } diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index e022adf..502f1c5 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -22,6 +22,12 @@ pub struct AddressPortID { pub portid: String, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct LabeledAddress { + pub label: Option, + pub address: String, +} + pub const CONFIG: Item = Item::new("config"); pub const PORTID: Item = Item::new("portid"); @@ -31,7 +37,7 @@ pub const NICKNAMES: Map<&str, AddressPortID> = Map::new("nicknames"); #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)] #[serde(rename_all = "snake_case")] pub struct PassportMetadata { - pub addresses: Option>, + pub addresses: Option>, pub avatar: String, pub nickname: String, } From a722eab345c2e3faebcbba9742014a34db0b4366 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Apr 2022 22:19:11 +0800 Subject: [PATCH 30/69] Updated subgraph to use submessages --- contracts/cw-cyber-subgraph/src/contract.rs | 13 +++++++++++-- contracts/cw-cyber-subgraph/src/error.rs | 3 +++ contracts/cw-cyber-subgraph/src/execute.rs | 5 +++-- contracts/cw-cyber-subgraph/src/msg.rs | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/contracts/cw-cyber-subgraph/src/contract.rs b/contracts/cw-cyber-subgraph/src/contract.rs index 45f1efa..e918169 100644 --- a/contracts/cw-cyber-subgraph/src/contract.rs +++ b/contracts/cw-cyber-subgraph/src/contract.rs @@ -1,12 +1,12 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo}; +use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; -use crate::execute::{execute_cyberlink, execute_update_executer, execute_update_owner}; +use crate::execute::{CYBERLINK_ID_MSG, execute_cyberlink, execute_update_executer, execute_update_owner}; use crate::query::query_config; use cyber_std::CyberMsgWrapper; @@ -55,6 +55,15 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { } } +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn reply(_deps: DepsMut, _env: Env, reply: Reply) -> Result { + if reply.id != CYBERLINK_ID_MSG { + return Err(ContractError::UnknownReplyId { id: reply.id }); + } + Ok(Response::new()) +} + + #[cfg_attr(not(feature = "library"), entry_point)] pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { let version = get_contract_version(deps.storage)?; diff --git a/contracts/cw-cyber-subgraph/src/error.rs b/contracts/cw-cyber-subgraph/src/error.rs index 5914335..64f603e 100644 --- a/contracts/cw-cyber-subgraph/src/error.rs +++ b/contracts/cw-cyber-subgraph/src/error.rs @@ -11,4 +11,7 @@ pub enum ContractError { #[error("Cannot migrate from different contract type: {previous_contract}")] CannotMigrate { previous_contract: String }, + + #[error("Got a submessage reply with unknown id: {id}")] + UnknownReplyId { id: u64 }, } diff --git a/contracts/cw-cyber-subgraph/src/execute.rs b/contracts/cw-cyber-subgraph/src/execute.rs index b0e3d3f..5e6537d 100644 --- a/contracts/cw-cyber-subgraph/src/execute.rs +++ b/contracts/cw-cyber-subgraph/src/execute.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{attr, DepsMut, Env, MessageInfo, StdResult}; +use cosmwasm_std::{attr, DepsMut, Env, MessageInfo, StdResult, SubMsg}; use crate::error::ContractError; use crate::state::CONFIG; @@ -6,6 +6,7 @@ use cyber_std::{create_cyberlink_msg, Link, CyberMsgWrapper}; type Response = cosmwasm_std::Response; +pub const CYBERLINK_ID_MSG: u64 = 42; pub fn execute_update_owner( deps: DepsMut, @@ -59,6 +60,6 @@ pub fn execute_cyberlink( } let msg = create_cyberlink_msg(env.contract.address.to_string(), cyberlink); - Ok(Response::new().add_message(msg)) + Ok(Response::new().add_submessage(SubMsg::reply_on_error(msg, CYBERLINK_ID_MSG))) } diff --git a/contracts/cw-cyber-subgraph/src/msg.rs b/contracts/cw-cyber-subgraph/src/msg.rs index 1f54e2e..00a0191 100644 --- a/contracts/cw-cyber-subgraph/src/msg.rs +++ b/contracts/cw-cyber-subgraph/src/msg.rs @@ -2,7 +2,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use cyber_std::Link; -#[derive(Serialize, Deserialize, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { pub owner: String, pub executer: String, From ddfd32dd95410331aaa258ea86eb57b40410e005 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Sun, 10 Apr 2022 14:21:51 +0800 Subject: [PATCH 31/69] - add multiprocessing load testing - refactor contracts testing - refactor contract utils --- .../testdata/generate_test_data/.env.example | 3 +- .../generate_test_data/contract_utils.py | 192 +- .../create_passport_and_claim_job.py | 61 + ..._and_passport_contracts_load_testing.ipynb | 4152 ++++++++++ .../gift_and_passport_contracts_testing.ipynb | 6973 ++--------------- 5 files changed, 4782 insertions(+), 6599 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example index 0aa3665..a6dc265 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example @@ -1,2 +1,3 @@ WALLET_SEED='correct lens reopen movie practice harsh blush satisfy ecology action unlock feed begin deny trouble timber bulb infant gun test steel bid rate input' -WALLET_ADDRESS='bostrom1ywemhcrla7f9lkktfsu3cnqv2mapw82a5yf5fc' \ No newline at end of file +WALLET_ADDRESS='bostrom1ywemhcrla7f9lkktfsu3cnqv2mapw82a5yf5fc' +PYTHON_PATH='python3' \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 75ddb25..34c3f2d 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -1,6 +1,7 @@ import json import base58 import hashlib +import pandas as pd from subprocess import Popen, PIPE from cyber_sdk.client.lcd import LCDClient @@ -16,35 +17,6 @@ NETWORK = 'space-pussy-1' -bostrom_lcd_client = LCDClient( - url=LCD_URL, - chain_id=NETWORK -) - - -def execute_contract_sdk(execute_msg: json, contract_address: str, mnemonic: str, - gas: int = 500000, gas_price: int = 0, display_data: bool = False) -> str: - _key = MnemonicKey(mnemonic=mnemonic) - _wallet = bostrom_lcd_client.wallet(key=_key) - - _msg = MsgExecuteContract( - sender=_wallet.key.acc_address, - contract=AccAddress(contract_address), - execute_msg=execute_msg) - - _tx = _wallet.create_and_sign_tx( - CreateTxOptions( - msgs=[_msg], - gas_prices=str(gas_price)+'boot', - gas=str(gas) - ) - ) - if display_data: - print(_msg) - print(_tx) - return bostrom_lcd_client.tx.broadcast(_tx).to_json() - - def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate() if _error: @@ -81,8 +53,8 @@ def instantiate_contract(init_query: str, contract_code_id: str, contract_label: if event['type'] == 'instantiate'][0] -def execute_contract(execute_query: str, contract_address: str, from_address: str = '$WALLET', gas: int = 300000, - display_data: bool = False) -> str: +def execute_contract_bash(execute_query: str, contract_address: str, from_address: str = '$WALLET', gas: int = 300000, + display_data: bool = False) -> str: _execute_output, _execute_error = execute_bash( f'''EXECUTE='{execute_query}' \ && CONTRACT="{contract_address}" \ @@ -143,41 +115,132 @@ def get_proofs(input_file: str, return False -def send_coins(from_seed: str, to_addresses: list, amounts: list, gas: int = 70999, denom: str = 'boot', - display_data: bool = False) -> str: - _mk = MnemonicKey(mnemonic=from_seed) - _wallet = bostrom_lcd_client.wallet(key=_mk) - - _msg = MsgMultiSend( - inputs=[ - MultiSendInput(address=_wallet.key.acc_address, coins=Coins(boot=_amount)) - for _amount in amounts - ], - outputs=[ - MultiSendOutput(address=_to_address, coins=Coins(boot=_amount)) - for _to_address, _amount in zip(to_addresses, amounts) - ], - ) - - _tx = _wallet.create_and_sign_tx( - CreateTxOptions( - msgs=[_msg], - gas_prices="0boot", - gas=str(gas), - fee_denoms=["boot"], +class ContractUtils: + + def __init__(self, ipfs_client, address_dict: dict, url: str = LCD_URL, chain_id: str = NETWORK): + self.ipfs_client = ipfs_client + self.address_dict = address_dict + self.name_dict = {v: k for k, v in address_dict.items()} + self.bostrom_lcd_client = LCDClient( + url=url, + chain_id=chain_id ) - ) - if display_data: - print(_msg) - print('\n', _tx) - return bostrom_lcd_client.tx.broadcast(_tx).to_json() + def set_address_dict(self, address_dict): + self.address_dict = address_dict + self.name_dict = {v: k for k, v in address_dict.items()} -class ParseOutput: + def send_coins(self, from_seed: str, to_addresses: list, amounts: list, gas: int = 70999, denom: str = 'boot', + display_data: bool = False) -> str: + _mk = MnemonicKey(mnemonic=from_seed) + _wallet = self.bostrom_lcd_client.wallet(key=_mk) - def __init__(self, ipfs_client, address_dict): - self.ipfs_client = ipfs_client - self.address_dict = address_dict + _msg = MsgMultiSend( + inputs=[ + MultiSendInput(address=_wallet.key.acc_address, coins=Coins(boot=_amount)) + for _amount in amounts + ], + outputs=[ + MultiSendOutput(address=_to_address, coins=Coins(boot=_amount)) + for _to_address, _amount in zip(to_addresses, amounts) + ], + ) + + _tx = _wallet.create_and_sign_tx( + CreateTxOptions( + msgs=[_msg], + gas_prices="0boot", + gas=str(gas), + fee_denoms=["boot"], + ) + ) + if display_data: + print(_msg) + print('\n', _tx) + return self.bostrom_lcd_client.tx.broadcast(_tx).to_json() + + # def query_contract(self, query_msg: dict, contract_address: str) -> json: + # return self.bostrom_lcd_client.wasm.contract_query(contract_address=contract_address, query_msg=query_msg) + + def execute_contract(self, execute_msg: json, contract_address: str, mnemonic: str, + gas: int = 500000, gas_price: int = 0, display_data: bool = False) -> str: + _key = MnemonicKey(mnemonic=mnemonic) + _wallet = self.bostrom_lcd_client.wallet(key=_key) + + _msg = MsgExecuteContract( + sender=_wallet.key.acc_address, + contract=AccAddress(contract_address), + execute_msg=execute_msg) + + _tx = _wallet.create_and_sign_tx( + CreateTxOptions( + msgs=[_msg], + gas_prices=str(gas_price) + 'boot', + gas=str(gas) + ) + ) + if display_data: + print(_msg) + print(_tx) + return self.bostrom_lcd_client.tx.broadcast(_tx).to_json() + + def create_passport(self, claim_row: pd.Series, display_data: bool = False): + return self.execute_contract( + execute_msg={"create_passport": {"avatar": claim_row["avatar"], "nickname": claim_row["nickname"]}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=500000, + display_data=display_data) + + def proof_address(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): + return self.execute_contract( + execute_msg={ + "proof_address": {"address": claim_row[network + "_address"], "nickname": claim_row["nickname"], + "signature": claim_row[network + "_message_signature"]}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) + + def claim(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): + print({"claim": {"nickname": claim_row['nickname'], + "gift_claiming_address": claim_row[network + "_address"], + "gift_amount": str(claim_row['amount']), + "proof": claim_row[network + "_proof"]}}) + return self.execute_contract( + execute_msg={ + "claim": {"nickname": claim_row['nickname'], "gift_claiming_address": claim_row[network + "_address"], + "gift_amount": str(claim_row['amount']), "proof": claim_row[network + "_proof"]}}, + contract_address=self.name_dict['Gift Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) + + def release(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): + return self.execute_contract( + execute_msg={"release": {"gift_address": claim_row[network + "_address"]}}, + contract_address=self.name_dict['Gift Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) + + def transfer_passport(self, claim_row: pd.Series, token_id: str, to_address: str = '', display_data: bool = False): + if to_address == '': + to_address = claim_row['bostrom_address'] + return self.execute_contract( + execute_msg={"transfer_nft": {"recipient": to_address, "token_id": str(token_id)}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=500000, + display_data=display_data) + + def burn_passport(self, claim_row: pd.Series, token_id: str, display_data: bool = False): + return self.execute_contract( + execute_msg={"burn": {"token_id": token_id}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) def get_contract_name(self, contract_address: str) -> str: try: @@ -255,7 +318,10 @@ def parse_contract_execution_json(self, contract_execution_json: str, row=None) elif event_item['type'] == 'wasm': print('wasm') for attr_item in event_item["attributes"]: - print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + if attr_item["key"] == 'amount': + print(f'\t{attr_item["key"]}: {int(attr_item["value"]):>,}') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') elif event_item['type'] == 'transfer': print('transfer') for attr_item in event_item["attributes"]: diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py new file mode 100644 index 0000000..b6aa7e5 --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -0,0 +1,61 @@ +import pandas as pd +import sys +import json +import ipfshttpclient +from contract_utils import ContractUtils +import warnings +from time import sleep + +warnings.filterwarnings("ignore") + +DISPLAY_TX_EXECUTION = False + + +def participation(row: pd.Series, address_dict: dict, release_bool: bool = False) -> dict: + ipfs_client = ipfshttpclient.connect() + contract_utils = ContractUtils(ipfs_client=ipfs_client, address_dict=address_dict) + _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION) + _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION) + _proof_cosmos_address_json = contract_utils.proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) + sleep(2) + _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION) + _claim_cosmos_json = contract_utils.claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) + if release_bool: + _release_ethereum_json = contract_utils.release(row, display_data=DISPLAY_TX_EXECUTION) + _release_cosmos_json = contract_utils.release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) + return { + 'create': _create_passport_json, + 'proof_ethereum': _proof_ethereum_address_json, + 'proof_cosmos': _proof_cosmos_address_json, + 'claim_ethereum': _claim_ethereum_json, + 'claim_cosmos': _claim_cosmos_json, + 'release_ethereum': _release_ethereum_json, + 'release_cosmos': _release_cosmos_json + } + else: + return { + 'create': _create_passport_json, + 'proof_ethereum': _proof_ethereum_address_json, + 'proof_cosmos': _proof_cosmos_address_json, + 'claim_ethereum': _claim_ethereum_json, + 'claim_cosmos': _claim_cosmos_json + } + + +if __name__ == '__main__': + + source_file_name = sys.argv[1] + index_number = sys.argv[2] + gift_contract_address = sys.argv[3] + + address_dict = {gift_contract_address: 'Gift Contract', + 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8': 'Passport Contract'} + row = pd.read_csv(source_file_name).iloc[int(index_number)] + row['ethereum_proof'] = row['ethereum_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') + row['cosmos_proof'] = row['cosmos_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') + + res = participation(row, address_dict) + + with open(f'temp/contract_execution_log_{index_number}.txt', 'w') as convert_file: + convert_file.write(json.dumps(res)) + print(f"{row['bostrom_address']}: done") diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb new file mode 100644 index 0000000..d33aa5e --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -0,0 +1,4152 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## Gift Contract Testing" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 1, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/sergenedashkovsky/Library/Python/3.8/lib/python/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.10.0' (not in range: 0.5.0 ≤ … < 0.9.0)\n", + " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" + ] + } + ], + "source": [ + "from web3.auto import w3\n", + "import pandas as pd\n", + "from cyberpy import generate_wallet, address_to_address\n", + "from cyberpy._message_signer import Message\n", + "from cyberpy._wallet import seed_to_privkey\n", + "from eth_account.messages import encode_defunct\n", + "import json\n", + "from time import time, sleep\n", + "import ipfshttpclient\n", + "from tqdm.notebook import tqdm\n", + "from base64 import b64encode\n", + "from multiprocess import Pool\n", + "from math import ceil\n", + "from dotenv import dotenv_values\n", + "from IPython.core.display import display, HTML\n", + "\n", + "from contract_utils import execute_bash, instantiate_contract, execute_contract_bash, query_contract, get_ipfs_cid_from_str, get_proofs, ContractUtils\n", + "\n", + "\n", + "ipfs_client = ipfshttpclient.connect()\n", + "\n", + "NUMBER_OF_PARTICIPANTS = 500\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 40\n", + "KEY_PHRASE = 'KEY PHRASE'\n", + "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", + "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", + "CLAIM_AMOUNT_LIST = [1_000_000] * NUMBER_OF_PARTICIPANTS\n", + "\n", + "INITIAL_BALANCE = str(1_000_000_000)\n", + "COEF_UP = str(13)\n", + "COEF_DOWN = str(7)\n", + "TARGET_CLAIM = str(2)\n", + "\n", + "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", + "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", + "PYTHON_PATH = dotenv_values('.env')['PYTHON_PATH']\n", + "DISPLAY_TX_EXECUTION = False\n", + "TEST_ACCOUNT_ADDRESS = 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'\n", + "TEST_ACCOUNT_SEED = 'end spread blind steak install glare pride pony switch exit zone faint opinion march layer illness can nest fence top debate monitor supreme noble'\n", + "\n", + "INIT_SUBGRAPH_CONTRACTS = False\n", + "SUBGRAPH_CODE_ID = str(40)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", + "\n", + "INIT_PASSPORT_CONTRACT = False\n", + "PASSPORT_CODE_ID = str(43)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8'\n", + "\n", + "INIT_GIFT_CONTRACT = True\n", + "GIFT_CODE_ID = str(20)\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", + "\n", + "PARTICIPANTS_FILE_NAME = 'participants_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv'\n", + "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "PROOF_FILE_NAME = 'proof_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Generate addresses and sign messages" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [ + { + "data": { + "text/plain": " 0%| | 0/500 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16495701710QmV25axme4qJsqbYMoYZx9GQHXT25WHWBZYJ7YNUCmMpbf0xd1f01c98c6361b15c7176a08f248da306370fdd70x3a751d5df5c358f471edcc21c25d5f43b6dc3c37444d...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02cosmos1dth5c37g5zdq7mmxfr8l9sheyz35xmwer2qn3dnoodle prosper reflect donor bright inquiry co...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02...0x9dc5c14774bfb1d0ac9c3f61d4a274e0d220119b44e9...{'pub_key': 'A6j9IYOmx1Jt5DSedDgVNujK1nGLD5yNG...eyJwdWJfa2V5IjoiQTZqOUlZT214MUp0NURTZWREZ1ZOdW...
11000000john16495701711QmRdzvAKiWs4H6TpBJ3Q3QeqRAaY2wsguU1txJkPYJ7vcJ0x35176878370e039ccb8ba09a142358aad40c0be80xc6b2f06c863cb25e56499bc6f42a1543f8cecdf68072...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6vcosmos1wmapx0neuech3yw4ts3s75e7qck2ndhafc8qytthey upper require oval finish kitchen clog th...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v...0x14c6650cd3df447645eaa00f60ba673d921977b79a52...{'pub_key': 'ApLKDuuSXoLP1PqHVU34IHkv3v43PSoNs...eyJwdWJfa2V5IjoiQXBMS0R1dVNYb0xQMVBxSFZVMzRJSG...
21000000john16495701712QmPtY3cM1umfPHfV2ZfxBh8UKEfYFgq1Gfcvji3DVnMeU70x89101a2024e06f71724d4dc190ef5fdbc1370cd80x4345c4447770e2820312a60c7d2da29da0e4b2bafc22...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmqcosmos1m0j0gg27c9cjphsvw5fq3j794twtaddlk2qj98thank ski machine undo jewel neither replace s...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq...0x82314aa409cffe5148f822af633c85f9f1bd0c0192b7...{'pub_key': 'AhUCI1w0U4MSfkteLrwLM3EhUaQVWTFJ5...eyJwdWJfa2V5IjoiQWhVQ0kxdzBVNE1TZmt0ZUxyd0xNM0...
31000000john16495701713QmRHLv4J2Z6y2BFwZMrfoF3aujBk1rjshZkdmgdSsNCc290x34f1174d3717ac670f6751fcc036b34fc4a892ff0x4799e12d14b529d627b7ad608312abe3abe911e7c38f...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9cosmos1nnj8ud45p4ev7chg8m870jtv67d0sa8ee66x9zwoman bless wear chaos stereo grace inner firs...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9...0xb38bdf095218cbb8bc9c35601d25ca09170002b54f2d...{'pub_key': 'A1jQg1Ww8e2FsilUNNTH0gyAETzFp2Dn2...eyJwdWJfa2V5IjoiQTFqUWcxV3c4ZTJGc2lsVU5OVEgwZ3...
41000000john16495701714QmXPTPH9onvwMGECfC2a315jR5yHv1xc1AA24zo49KPDwA0x85c4291e76ca7d3c1d5dbe19778146653e1496430xd007d9f8286e6a49c4e1751ef67ca8462096b38d38e9...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrjcosmos1djhnjvl6rhfcqj60yw8sh8s8286jfsy85zzta4neither reopen hammer jazz smile muscle split ...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj...0x1d0ed6dc4c2d1c890d3d9e164aae5ca6a0380c2ff635...{'pub_key': 'AwJh/dhAK9yJo/yJO1G9LqpnaRSd9P0dt...eyJwdWJfa2V5IjoiQXdKaC9kaEFLOXlKby95Sk8xRzlMcX...
.......................................
4951000000john1649570171495QmR1PAbXT5yLAyFGDU1V2aiKwGKBeDTPppy4Xbtg2CaLKo0xaf9b15039827b9368bad79abcc3114b8626cd3200xac52e86a9d533d035f90151739db65a15d1f6795ecc8...bostrom1rq0957kew7kv8hj4sg3h2v9zsxad6y823cy7zncosmos1rq0957kew7kv8hj4sg3h2v9zsxad6y82jtsdu5bag sure walk battle rail exist sleep reject a...bostrom1rq0957kew7kv8hj4sg3h2v9zsxad6y823cy7zn...0xada4052d7140cbbac8e2236e0a613b0c7a2be5b2c60b...{'pub_key': 'AqtPOHbxslsnXFkwLV8Y5r+cpfZWEST51...eyJwdWJfa2V5IjoiQXF0UE9IYnhzbHNuWEZrd0xWOFk1ci...
4961000000john1649570171496QmdSW9gUSozfPae5fcogkScvp8gpP9n4patmJDHq1JBuLr0xba98748b4cb34b76c10440db31e89a1d88e3080f0x64fb49296e3ec3b797f0b7c71a9c7fb539312b06e4c9...bostrom1daedzeftlasfparuxka4qe25wckh9v8ewglz5rcosmos1daedzeftlasfparuxka4qe25wckh9v8edmt32yauction love lion dutch giant miracle vote sec...bostrom1daedzeftlasfparuxka4qe25wckh9v8ewglz5r...0x5e17c5615bec52860e55cb24c288fa55727a30d495e9...{'pub_key': 'AixjLGYWsjJ0ZdCYdYqvpzq1oiDJPMZn1...eyJwdWJfa2V5IjoiQWl4akxHWVdzakowWmRDWWRZcXZwen...
4971000000john1649570171497QmY4dLukHTJPphV1Wdx86GkXLc9zXKJkHBGAVQnfEeZSBG0x98668ddb798d94ce47038c9e15ce058fa3e7f96d0x02263b35db1b757f850e4ce29cb97d13583892a55300...bostrom1069t0hne60792r4lykss8nffphcw7p65z3n9y6cosmos1069t0hne60792r4lykss8nffphcw7p65pz8k6avendor bind grief rotate mutual question drink...bostrom1069t0hne60792r4lykss8nffphcw7p65z3n9y6...0x5473f9a13909829f6cff4889c6eae02ae7dd766555e4...{'pub_key': 'AtRi/+Fx+aWv39lxDJ3g1NfV+9bxT+CXr...eyJwdWJfa2V5IjoiQXRSaS8rRngrYVd2MzlseERKM2cxTm...
4981000000john1649570171498QmUFtq1nfsVHz4PN3R5H6wbBAcpiukDwcs7DZtceZPnf2L0x74252106af6f9d03f6cb704981fee915b8ad59320x5d648bdb2dfa020c2fc392ad2b6b8de4e704afe25caf...bostrom1p32r7340fgymndvwns3y46eys5gge5czpaf772cosmos1p32r7340fgymndvwns3y46eys5gge5czzwadqdplunge reward habit pond loyal bleak hat palm ...bostrom1p32r7340fgymndvwns3y46eys5gge5czpaf772...0x81adb9a1d38f53aebe3d1a7a662d36129205fa97bcc6...{'pub_key': 'Ar/QWRqPQp+UUvMQtCincdMoA+9umUX+J...eyJwdWJfa2V5IjoiQXIvUVdScVBRcCtVVXZNUXRDaW5jZE...
4991000000john1649570171499QmUJtBi64gaej9onAZvUkcnwkoXEWt2WE6yby3FuxNwuiC0x40218c89aa9400428589b82bc9b44828803926390x785a66fb878ec0293dfbad3ed97120f82898b3a068fe...bostrom1auqhx64tf60ccf8h9287xelke8cwpra7gnegg0cosmos1auqhx64tf60ccf8h9287xelke8cwpra7tqdmkgpurchase powder book much exhibit conduct scou...bostrom1auqhx64tf60ccf8h9287xelke8cwpra7gnegg0...0x7da30cfb7b493c4f15bdaaa8b59db793f3bd6c9bb5c4...{'pub_key': 'AvDB6dSq+iHovxrW0LWShEGPWYU0hQF4a...eyJwdWJfa2V5IjoiQXZEQjZkU3EraUhvdnhyVzBMV1NoRU...
\n

500 rows × 12 columns

\n" + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "claims_list = []\n", + "for i in tqdm(range(NUMBER_OF_PARTICIPANTS)):\n", + " claim_item = {'amount': CLAIM_AMOUNT_LIST[i],\n", + " 'nickname': NICKNAME_LIST[i],\n", + " 'avatar': AVATAR_CID_LIST[i]}\n", + "\n", + " # Generate Ethereum wallet\n", + " ethereum_wallet = w3.eth.account.create(KEY_PHRASE)\n", + " claim_item['ethereum_address'] = ethereum_wallet.address.lower()\n", + " claim_item['ethereum_private_key'] = ethereum_wallet.privateKey.hex()\n", + "\n", + " # Generate Bostrom and Cosmos wallet\n", + " bostrom_wallet = generate_wallet()\n", + " claim_item['bostrom_address'] = bostrom_wallet['address']\n", + " claim_item['cosmos_address'] = address_to_address(bostrom_wallet['address'], 'cosmos')\n", + " claim_item['cosmos_seed'] = bostrom_wallet['seed']\n", + "\n", + " # Create message\n", + " claim_item['message'] = f\"{claim_item['bostrom_address']}:QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV\"\n", + "\n", + " # Sign message form Ethereum address\n", + " ethereum_signed_message = \\\n", + " w3.eth.account.sign_message(\n", + " signable_message=encode_defunct(text=claim_item['message']),\n", + " private_key=ethereum_wallet.privateKey)\n", + " # print(signed_message.signature)\n", + " claim_item['ethereum_message_signature'] = ethereum_signed_message.signature.hex()\n", + "\n", + " # Sign message form Cosmos address\n", + " cosmos_msg = Message(privkey=seed_to_privkey(seed=claim_item['cosmos_seed']))\n", + " cosmos_msg.add_message(signing_message=claim_item['message'], signer_prefix='cosmos')\n", + " claim_item['cosmos_message_signed_row'] = cosmos_msg.get_signed_message()\n", + " claim_item['cosmos_message_signature'] = b64encode(json.dumps(claim_item['cosmos_message_signed_row']).replace('\\n', '').replace(' ', '').encode('utf-8')).decode(\"utf-8\")\n", + "\n", + " # Verify message\n", + " assert claim_item['ethereum_address'] == w3.eth.account.recover_message(\n", + " signable_message=encode_defunct(text=claim_item['message']),\n", + " signature=claim_item['ethereum_message_signature']).lower()\n", + "\n", + " claims_list.append(claim_item)\n", + "\n", + "claims_df = pd.DataFrame(claims_list)\n", + "claims_df.to_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create Merkle Tree, Get Root and Proofs" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [], + "source": [ + "root_source_list = [{'address': _item['ethereum_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", + " [{'address': _item['cosmos_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]\n", + "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", + "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{('root_testing_source_500_addresses.json', 'temp/proofs_0.json', 0, 1001)}\n", + "yarn run v1.22.17\n", + "$ ts-node index.ts --input root_testing_source_500_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 1001\n", + "Merkle root: b40fa6d3d0ffdc7a746792841507786fc00d4e64c8a22d090c6afe08e64ab4e0\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 2.68s.\n", + "\n" + ] + } + ], + "source": [ + "NUMBER_OF_THREADS = 10\n", + "BASH_SIZE = 1000\n", + "\n", + "tasks = set(\n", + " (\n", + " (ROOT_SOURCE_FILE_NAME,\n", + " f'temp/proofs_{i}.json',\n", + " i * BASH_SIZE,\n", + " min(NUMBER_OF_PARTICIPANTS * 2 + 1, (i + 1) * BASH_SIZE + 1))\n", + " for i in range(ceil(2 * NUMBER_OF_PARTICIPANTS/BASH_SIZE))\n", + " )\n", + ")\n", + "print(tasks)\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(get_proofs, tasks)\n", + "assert res == [True] * len(res)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [ + { + "data": { + "text/plain": " address amount \\\n0 0xd1f01c98c6361b15c7176a08f248da306370fdd7 1000000 \n1 0x35176878370e039ccb8ba09a142358aad40c0be8 1000000 \n2 0x89101a2024e06f71724d4dc190ef5fdbc1370cd8 1000000 \n3 0x34f1174d3717ac670f6751fcc036b34fc4a892ff 1000000 \n4 0x85c4291e76ca7d3c1d5dbe19778146653e149643 1000000 \n... ... ... \n996 cosmos1daedzeftlasfparuxka4qe25wckh9v8edmt32y 1000000 \n997 cosmos1069t0hne60792r4lykss8nffphcw7p65pz8k6a 1000000 \n998 cosmos1p32r7340fgymndvwns3y46eys5gge5czzwadqd 1000000 \n999 cosmos1auqhx64tf60ccf8h9287xelke8cwpra7tqdmkg 1000000 \n1000 0xf2749114feaad68854e01c8ee762c7170532fdfd 10000000 \n\n proof \n0 [3eac5929d5872721fe1e2828d9373a1c62cfebf90cd8b... \n1 [1579595b7b694fbc1ac5abebad21bcceb43614c7d927c... \n2 [c560b5e2f62a4c4c889c3537b6977b2204d4af1a98254... \n3 [2cbbe2be547e8618c958a984b7c1dfedd982a5ba197ce... \n4 [cfe5030a7cad4140c112a510605c171c192347aba5619... \n... ... \n996 [da14fbcae7ae4c22f5d5deb5c2258cc51081c0127f99c... \n997 [0de2c489263dca24232b7d009a00f270eed06bc04f9df... \n998 [a5f816610fa05b805e2ad12edea93366f7bc60e438cd1... \n999 [ea364902c359b1e2c6ab41843473482ee9adc6dcd6eb9... \n1000 [78730b5dcd34ceae74b3f8ebfe2fe376582a621069d15... \n\n[1001 rows x 3 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00xd1f01c98c6361b15c7176a08f248da306370fdd71000000[3eac5929d5872721fe1e2828d9373a1c62cfebf90cd8b...
10x35176878370e039ccb8ba09a142358aad40c0be81000000[1579595b7b694fbc1ac5abebad21bcceb43614c7d927c...
20x89101a2024e06f71724d4dc190ef5fdbc1370cd81000000[c560b5e2f62a4c4c889c3537b6977b2204d4af1a98254...
30x34f1174d3717ac670f6751fcc036b34fc4a892ff1000000[2cbbe2be547e8618c958a984b7c1dfedd982a5ba197ce...
40x85c4291e76ca7d3c1d5dbe19778146653e1496431000000[cfe5030a7cad4140c112a510605c171c192347aba5619...
............
996cosmos1daedzeftlasfparuxka4qe25wckh9v8edmt32y1000000[da14fbcae7ae4c22f5d5deb5c2258cc51081c0127f99c...
997cosmos1069t0hne60792r4lykss8nffphcw7p65pz8k6a1000000[0de2c489263dca24232b7d009a00f270eed06bc04f9df...
998cosmos1p32r7340fgymndvwns3y46eys5gge5czzwadqd1000000[a5f816610fa05b805e2ad12edea93366f7bc60e438cd1...
999cosmos1auqhx64tf60ccf8h9287xelke8cwpra7tqdmkg1000000[ea364902c359b1e2c6ab41843473482ee9adc6dcd6eb9...
10000xf2749114feaad68854e01c8ee762c7170532fdfd10000000[78730b5dcd34ceae74b3f8ebfe2fe376582a621069d15...
\n

1001 rows × 3 columns

\n
" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roots = []\n", + "proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + "for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = proofs_df.append(pd.DataFrame(root_and_proof_json['proofs']), ignore_index=True)\n", + "assert roots == [roots[0]] * len(roots)\n", + "root = roots[0]\n", + "proofs_df" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "data": { + "text/plain": " amount nickname avatar \\\n0 1000000 john16495701710 QmV25axme4qJsqbYMoYZx9GQHXT25WHWBZYJ7YNUCmMpbf \n1 1000000 john16495701711 QmRdzvAKiWs4H6TpBJ3Q3QeqRAaY2wsguU1txJkPYJ7vcJ \n2 1000000 john16495701712 QmPtY3cM1umfPHfV2ZfxBh8UKEfYFgq1Gfcvji3DVnMeU7 \n3 1000000 john16495701713 QmRHLv4J2Z6y2BFwZMrfoF3aujBk1rjshZkdmgdSsNCc29 \n4 1000000 john16495701714 QmXPTPH9onvwMGECfC2a315jR5yHv1xc1AA24zo49KPDwA \n\n ethereum_address \\\n0 0xd1f01c98c6361b15c7176a08f248da306370fdd7 \n1 0x35176878370e039ccb8ba09a142358aad40c0be8 \n2 0x89101a2024e06f71724d4dc190ef5fdbc1370cd8 \n3 0x34f1174d3717ac670f6751fcc036b34fc4a892ff \n4 0x85c4291e76ca7d3c1d5dbe19778146653e149643 \n\n ethereum_private_key \\\n0 0x3a751d5df5c358f471edcc21c25d5f43b6dc3c37444d... \n1 0xc6b2f06c863cb25e56499bc6f42a1543f8cecdf68072... \n2 0x4345c4447770e2820312a60c7d2da29da0e4b2bafc22... \n3 0x4799e12d14b529d627b7ad608312abe3abe911e7c38f... \n4 0xd007d9f8286e6a49c4e1751ef67ca8462096b38d38e9... \n\n bostrom_address \\\n0 bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02 \n1 bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v \n2 bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq \n3 bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9 \n4 bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj \n\n cosmos_address \\\n0 cosmos1dth5c37g5zdq7mmxfr8l9sheyz35xmwer2qn3d \n1 cosmos1wmapx0neuech3yw4ts3s75e7qck2ndhafc8qyt \n2 cosmos1m0j0gg27c9cjphsvw5fq3j794twtaddlk2qj98 \n3 cosmos1nnj8ud45p4ev7chg8m870jtv67d0sa8ee66x9z \n4 cosmos1djhnjvl6rhfcqj60yw8sh8s8286jfsy85zzta4 \n\n cosmos_seed \\\n0 noodle prosper reflect donor bright inquiry co... \n1 they upper require oval finish kitchen clog th... \n2 thank ski machine undo jewel neither replace s... \n3 woman bless wear chaos stereo grace inner firs... \n4 neither reopen hammer jazz smile muscle split ... \n\n message \\\n0 bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02... \n1 bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v... \n2 bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq... \n3 bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9... \n4 bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj... \n\n ethereum_message_signature \\\n0 0x9dc5c14774bfb1d0ac9c3f61d4a274e0d220119b44e9... \n1 0x14c6650cd3df447645eaa00f60ba673d921977b79a52... \n2 0x82314aa409cffe5148f822af633c85f9f1bd0c0192b7... \n3 0xb38bdf095218cbb8bc9c35601d25ca09170002b54f2d... \n4 0x1d0ed6dc4c2d1c890d3d9e164aae5ca6a0380c2ff635... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A6j9IYOmx1Jt5DSedDgVNujK1nGLD5yNG... \n1 {'pub_key': 'ApLKDuuSXoLP1PqHVU34IHkv3v43PSoNs... \n2 {'pub_key': 'AhUCI1w0U4MSfkteLrwLM3EhUaQVWTFJ5... \n3 {'pub_key': 'A1jQg1Ww8e2FsilUNNTH0gyAETzFp2Dn2... \n4 {'pub_key': 'AwJh/dhAK9yJo/yJO1G9LqpnaRSd9P0dt... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTZqOUlZT214MUp0NURTZWREZ1ZOdW... \n1 eyJwdWJfa2V5IjoiQXBMS0R1dVNYb0xQMVBxSFZVMzRJSG... \n2 eyJwdWJfa2V5IjoiQWhVQ0kxdzBVNE1TZmt0ZUxyd0xNM0... \n3 eyJwdWJfa2V5IjoiQTFqUWcxV3c4ZTJGc2lsVU5OVEgwZ3... \n4 eyJwdWJfa2V5IjoiQXdKaC9kaEFLOXlKby95Sk8xRzlMcX... \n\n ethereum_proof \\\n0 [3eac5929d5872721fe1e2828d9373a1c62cfebf90cd8b... \n1 [1579595b7b694fbc1ac5abebad21bcceb43614c7d927c... \n2 [c560b5e2f62a4c4c889c3537b6977b2204d4af1a98254... \n3 [2cbbe2be547e8618c958a984b7c1dfedd982a5ba197ce... \n4 [cfe5030a7cad4140c112a510605c171c192347aba5619... \n\n cosmos_proof \n0 [f05c1c3ed43f2f73c930b4077562375c55e42716cb11e... \n1 [298a35ac9c7a1531a22d63608124d52ae946bf16478ba... \n2 [fadaf81d5a751a0cd4a17c23fbfc84cc3da759d7b04f4... \n3 [ad20470a308fe5746c97802dc8785e7c0c683fc8de7c1... \n4 [728628f60cfcd64001c2c23a523c6de169fa40feb1600... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16495701710QmV25axme4qJsqbYMoYZx9GQHXT25WHWBZYJ7YNUCmMpbf0xd1f01c98c6361b15c7176a08f248da306370fdd70x3a751d5df5c358f471edcc21c25d5f43b6dc3c37444d...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02cosmos1dth5c37g5zdq7mmxfr8l9sheyz35xmwer2qn3dnoodle prosper reflect donor bright inquiry co...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02...0x9dc5c14774bfb1d0ac9c3f61d4a274e0d220119b44e9...{'pub_key': 'A6j9IYOmx1Jt5DSedDgVNujK1nGLD5yNG...eyJwdWJfa2V5IjoiQTZqOUlZT214MUp0NURTZWREZ1ZOdW...[3eac5929d5872721fe1e2828d9373a1c62cfebf90cd8b...[f05c1c3ed43f2f73c930b4077562375c55e42716cb11e...
11000000john16495701711QmRdzvAKiWs4H6TpBJ3Q3QeqRAaY2wsguU1txJkPYJ7vcJ0x35176878370e039ccb8ba09a142358aad40c0be80xc6b2f06c863cb25e56499bc6f42a1543f8cecdf68072...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6vcosmos1wmapx0neuech3yw4ts3s75e7qck2ndhafc8qytthey upper require oval finish kitchen clog th...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v...0x14c6650cd3df447645eaa00f60ba673d921977b79a52...{'pub_key': 'ApLKDuuSXoLP1PqHVU34IHkv3v43PSoNs...eyJwdWJfa2V5IjoiQXBMS0R1dVNYb0xQMVBxSFZVMzRJSG...[1579595b7b694fbc1ac5abebad21bcceb43614c7d927c...[298a35ac9c7a1531a22d63608124d52ae946bf16478ba...
21000000john16495701712QmPtY3cM1umfPHfV2ZfxBh8UKEfYFgq1Gfcvji3DVnMeU70x89101a2024e06f71724d4dc190ef5fdbc1370cd80x4345c4447770e2820312a60c7d2da29da0e4b2bafc22...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmqcosmos1m0j0gg27c9cjphsvw5fq3j794twtaddlk2qj98thank ski machine undo jewel neither replace s...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq...0x82314aa409cffe5148f822af633c85f9f1bd0c0192b7...{'pub_key': 'AhUCI1w0U4MSfkteLrwLM3EhUaQVWTFJ5...eyJwdWJfa2V5IjoiQWhVQ0kxdzBVNE1TZmt0ZUxyd0xNM0...[c560b5e2f62a4c4c889c3537b6977b2204d4af1a98254...[fadaf81d5a751a0cd4a17c23fbfc84cc3da759d7b04f4...
31000000john16495701713QmRHLv4J2Z6y2BFwZMrfoF3aujBk1rjshZkdmgdSsNCc290x34f1174d3717ac670f6751fcc036b34fc4a892ff0x4799e12d14b529d627b7ad608312abe3abe911e7c38f...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9cosmos1nnj8ud45p4ev7chg8m870jtv67d0sa8ee66x9zwoman bless wear chaos stereo grace inner firs...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9...0xb38bdf095218cbb8bc9c35601d25ca09170002b54f2d...{'pub_key': 'A1jQg1Ww8e2FsilUNNTH0gyAETzFp2Dn2...eyJwdWJfa2V5IjoiQTFqUWcxV3c4ZTJGc2lsVU5OVEgwZ3...[2cbbe2be547e8618c958a984b7c1dfedd982a5ba197ce...[ad20470a308fe5746c97802dc8785e7c0c683fc8de7c1...
41000000john16495701714QmXPTPH9onvwMGECfC2a315jR5yHv1xc1AA24zo49KPDwA0x85c4291e76ca7d3c1d5dbe19778146653e1496430xd007d9f8286e6a49c4e1751ef67ca8462096b38d38e9...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrjcosmos1djhnjvl6rhfcqj60yw8sh8s8286jfsy85zzta4neither reopen hammer jazz smile muscle split ...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj...0x1d0ed6dc4c2d1c890d3d9e164aae5ca6a0380c2ff635...{'pub_key': 'AwJh/dhAK9yJo/yJO1G9LqpnaRSd9P0dt...eyJwdWJfa2V5IjoiQXdKaC9kaEFLOXlKby95Sk8xRzlMcX...[cfe5030a7cad4140c112a510605c171c192347aba5619...[728628f60cfcd64001c2c23a523c6de169fa40feb1600...
\n
" + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cosmos_proofs_df = proofs_df[proofs_df.address.str.startswith('cosmos')][['address', 'proof']]\n", + "ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + "\n", + "claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='left',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='left',\n", + " on='cosmos_address')\n", + "\n", + "claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", + "claims_with_proofs_df.head()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", + "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", + "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" + ] + } + ], + "source": [ + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph')\n", + " proof_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph')\n", + "else:\n", + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Passport Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passport contract address: bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\n" + ] + } + ], + "source": [ + "if INIT_PASSPORT_CONTRACT:\n", + " passport_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport')\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subgraph Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 9, + "outputs": [], + "source": [ + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom14d067652qyney947evnlllydm9mxhg3wq4r3k585tc2dt5x2qrdsgxhm06\n" + ] + } + ], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift')\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Initiate Class of Output Parsing" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [], + "source": [ + "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", + " address_dict= {\n", + " gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + "proof_subgraph_contract_address: 'Proof Subgraph Contract'})" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 12, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: register_merkle_root\n", + "\tmerkle_root: b40fa6d3d0ffdc7a746792841507786fc00d4e64c8a22d090c6afe08e64ab4e0\n", + "Gas used: 121,492\n", + "Tx hash: 310C6BBFB39E1FD6AF4375D90030700ED4AC7A509B9DFF12805391C030697FB1\n" + ] + } + ], + "source": [ + "root_register_output = contract_utils.execute_contract(\n", + " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", + " mnemonic=WALLET_SEED,\n", + " contract_address=gift_contract_address)\n", + "contract_utils.parse_contract_execution_json(root_register_output)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Get Merkle Root form the Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "execution_count": 156 + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract bostrom14d067652qyney947evnlllydm9mxhg3wq4r3k585tc2dt5x2qrdsgxhm06\n", + "{'data': {'merkle_root': 'b40fa6d3d0ffdc7a746792841507786fc00d4e64c8a22d090c6afe08e64ab4e0'}}\n" + ] + } + ], + "source": [ + "print(f'Gift contract {gift_contract_address}')\n", + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Send coins to new addresses" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 14, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lv6x3yfzj3fx6cjgruqa8s2mjruptugtleetmf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aadd4jt2cl6unmjt8yvcgq8wcksqaftqpyy4mj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom149h0exg24jn762y9lmv3jqese99kre2n85pex5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rqp8smjcr6xrpq49y8akuxlx7a0zhavc2nneul\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pnkvcx2wm8t3x9n6sa34f6zlrkvtj4g3ntj6wx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16yqfnptnzywemafzan9mwkv5me7k655dwh36pk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e0pzyst8pskh7s3zzdrwc0tlxf9tdzh9qj0q9y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nzu2dvvxjm9glfl0gy7cekxtajuxhhc9u4fugg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nw0eak6x0qpxge2t29ch0yzyp9qgjfx3fu528j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10kv6av9c8ga755vk4kcwte904mxpeuzrhk2nyd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13t90dwpufurafesw7nr4hfnzqffcu7a34958eg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19z2y47c6aa4tknm4c500u5kahhkw2mcgf549ce\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u0p6qlv9m2w3yz5gwxqr2970yj0sca338llk03\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jaf2dk2rsngavud20xkj59dfc85fs24ky9mjy8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1078l7neg7tfae8e0dqpdptjn03xdkn7slx0xjd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qn0ffve5xdcxcv495n95dzrdrskzzf6asna2ct\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15y9ut4zal8anmakyq3geakshzjfnack27483x6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xa9thz2elpq3slszxvdwumhxzg9jz8x5kawpe2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e5xk5jn6969afusgnf32xfszft6r7dj2zxsg2l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yzwkg34uny3k6zm3afpxpejndgxnk49378d5nm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gcqxaze3v8cyafhrp57ep9vzhcjkmcsdsa2yfh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1atvwh2dd0qr0n7er6aygzs49ddqmuzspkrj33q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zxpkqe0d3cvwcr5dffkdpev9y8xkk9z3u5wtnm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1usv0az46mv752j5g7kw7sprudshknr6q5qngcs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sz7yswnjpep75cmpf5xnqm65wgl6fcgwy285g4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f40fnk4qhxq9feh4ggjh8tjp22u5um98cpct00\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cmj7q3pqhcz0cgrlv79g0wrn0pevtrcy6het07\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ndqt74r0kveh6ye6a8c5yhlj9uusmyuf7k8fr2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d5kc0kwuu2yuu5uuwv6tdy2prj2czk2kju0u6n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gz807dgums76nhc7x68pdkqv64q2pwlyxvew50\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eg80jj22rpgr4t9dxmznwp6f5kxnplrjd655w6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12w3ypnrdn4c7ehml43pzjrp9eajr8htmvcd5w6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13dyyvdl2pll37hnexft92zkgfl0hknjj6x3juc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f0j3j9l9xkzr5hhrrnlxun0220e3gvuc2ha9vz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n7kzsy3k7erq4eczuequ9g94qcxn498gtd59px\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gt5zu7ccmkv067ngvdmzcezz30qrrtnzu0txlu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cpwtq6x5lqw768pq8gtkwu0cx0vl0j93844zf3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ug5df3zjcexxunx3zdpktlla959juuxyte7dnt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rdugyu4e2ltcwwng5xrmhe3wq0wxk0vuvp0rwa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ppmzay3n0q589k3zngq65gt2t0adsjq3xl3a2l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jfqhyaf95cdueekunx5t57pchzhk4mfpjxsxzw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m6g3smrtc4ne8anynhm7p4yzjmltr079hmsakh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hdk3h0ke7wx2z97e8aaarzs8e7ujpeetx33j0y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s3thnygyu50phtpvecdppxgd2cz0uuu8hfjxly\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14k8us4cfa67xva6ek8aktk38ntttujspv3q3v0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nafpc64rv5whyztmyxxcxhlg80h4zugj8e2q7n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1824z69h4mzmw6qgvvuykxpx2hz40ssf0hdfxk8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hrpaleg05wktnpftwuewqyzq0t7htffsufyugw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w8u78s2zwqqujkcqqz6d0zqsdhfy5ugaum2wzk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mtzfsqz2xnyxj2pa9f8m6qdese6t4fprhre4hk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cz4w28jv2h07mgqkr6up5gum9mklmvku8fu95t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xwr0vdekhyt76alm6zh6vm4qfuhywkp5yf9ltz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gahqxgnm2ly6srvapcy90snt2pnfh6qwep25ft\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ja2e3c84xn6zmaruyy7y2wcya2wmnkvvuf7ay0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v75rm9xdrf6hgl8lvu83dedkegzfsxde87dwa8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cre8we2v9fgg5tv6qa8vsacuyllufej5ehj4uw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nxfw357kjwt98jrv799hy5xm6mp6rznc3dp9w0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1602n7zasghae8y3s5tr8x66h33lh20krx6rgdq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13wsqm9f2a7eq7pvwxzsmesqj9w8kch3k9rl78h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom103uwcdmjhtmspezdysnxuseznl6l7gsx5fyecf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jmgnjqkhvadxsu3p8r9z25rh0wxqatrj5w4349\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16q7mvqk8adyzxpevgve83jjqkuce57y6rlqeku\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p6ve5n5yq89zr44rngmh20glxvp66pl2qkyx9v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hccnrlltl5g6cxg37w3xdwfcwang2xa6wg3se9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p76vfp7h3jxfqq9c6jh2sw5ttu4vae2rzycl7c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15d82asrcsquye365lcacqz34w9rlvyagvk6w9s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s7tmea39yvq7qydhfgmlrrtlnnaeyhls99d0n2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1plpjvqdrn64nqa6upznqhna53lgk2wdq8yeds3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m8mjjt7wr060lc3vllknf90eyh4g8eyeue8hfd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uxdqvxm8naan4tkyszamnlef8hmevhk2fzjv2j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c8k2w5djf6f2zn9djn95utghln4ttpc0ycwsew\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ayxevyw22aldflheq6suvwp2t78kzh4hhpz2my\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18r0kr4qh59fzggxppld48rgh6sdca9ugqnfsyc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kszt4p3djszm3uy3rjhpzqqcqhpmvk9jn70g6v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1asgd5276d49jpwq48qda4850z7zxytt95mxpnc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q6jcg7jssn4yn67mdaadgy640fj5pmjw2xtay6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1judqxfl9a2ylgk0rdyarcxtp5zqfquq2xw52kx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c832k85p23z6h9ak0jyw2fl3mcwreqxumse3vt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1farn6mjfdsvpzz5em4nk08wneqx6lrlz723hc4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1alht2j535m2k587etht4m9tjvt7aysf3e7mwz3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yj8aghuekf0gt3ygdsdn7pus8k2xr7zztp6rjt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v54nm9820g3xnm0p6r3yge5z356zd5xt758stx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15synnmzhuaj473htdrufv0vtwx3m4ql0kqqawu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qv7y45k4nwwykd5ppdgcsk0eys3hlfstz2ve0s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom123m9kleq5pstd9v9sx3l988668pw7r4vzhd4nf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yu5yqwtj82j9rxg8lwfkft8l9cl2mgpjl2q3v9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qfrfr9qmlekmumdn6lg3d87v69srhcmcrkef9d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qqxxwtkpghhk4ffcre0e7ax0g8eflx5lspd9th\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l2hjfglkfq8t9ddq3yqrd0v8g7lvvye3ld05t7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jy6ewf2gqgm3syejyyzy48nj07tnlxh93kagap\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ejxvkmhaxnyy7jvvgqpfluqxwre7lfvp7gd0ee\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q4873nch2y23jtmq9ewqwz0xmqx7pa9hrxhl0h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10zxwdk5njdqvvz5t2akaqr5j3nxd9n4ksq3r37\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1featctvqw5wft900u2ue3t8t5swacr7hjhr4d8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lx5levkfz0z3a85grnef4kvzm6adgjdpkmdxtz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12caj3yuuqfrk84685ctcsgyf8ydky987g6q8a2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qw0fa5mjdjg536s63th9xxcw9ylp8jmmdwtl3a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c4l4pw22pqw0tnxtrznjs89ljzdtm6atdwymwt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10wxjxx9gdgmampgwvnrnmsvtf2myly2ur70ts0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d7latm49rnmavpavwlmha8cpca975pwzu0aqjl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15fl6gep6s7rvwawuuurtah7e2s05m4ayxjj58f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ejvrsdnjm0dd9v9sfr9kpsnznh8wscq0ftprtc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ce2rxf57vfu9xue8xlrdfd0gwkn4rhrudljh7c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom132k79qd9g2rmjlnzkh90s4fz2um3ve3ccfhq7c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zv3hq25u20kweyf6lkhgmc6duaxrcc9p4x7aj3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1al6dkqpkdpyr2mvcaut3ww9hut9hf6hwgptzpf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hejww8kfgqdyzndkg4u3slkuvt3r0an8mag26w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aynhht0duv0m4v977z5l4swzppjr00r2t9rcha\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1744pr5ldnmsvgevs5euyem3g39xpw7lmsyfapt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mflaqr7fj5zu2fn4gvex76zrkhtmx2ksvhl7ne\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g84tx3zuv7f50sfl4u5893hlvsdktc56zk36eh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom124gtgld6763ceqaxff0eyj0wdqj2r9g45r58nv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ssma2q0asv238awrat6jqf05x3gy7r067zq4sa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17pecqfspzfhhe8fvwr3flzg9p0vtc9np493k5a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l67w2qyw4jw9fpc4m7vdv2djlkuewts20dfczf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w9fs726u5etnwlfj2ntuuexv775y9yuwnqquqm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1795uk3ygfa6q7ehlat3zu2ymha77n39xe54tld\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vagluyyzn7tgz8l3n408rgeapaudfcwh2x93zw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sawcqd49ypnsv4kwx5cvajedpatf0amdusewpr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eue6qm5fm6x0txx98day73rnt38cwcqcwu8pg3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12wv5vvlmkadys3yglukrnw53t9smh8n56s2ztt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zzn2r50gzps50ph566m5r596rdpfn48cxrjvsm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13mu6a0k3j7xeca03v52tuzrqy6n5t048cmlaxg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z84dmzg3va6el094urq5k8ers0uy0dtuhvvlxv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19kxgajer20yhvdnmvtlpmsfq7rz0aknkfk5zd5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1knkpgdupena082dnawn85t9ur48rhqg79mp7d0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uaaw2lx3yal30rjhf9v7hcz59wta5e3hv4xz42\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13qy3yevynq8dv0syt0g0jrwwlf7u8ku5jp6ynj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17l5qhfa8mp57yuku3mzuhdvc72z7nh9j8j6nrh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cexqmtkz8etzpt46cqng79zuh5u524gm0pr9rm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tvhc2648axv5n4ynkezfcsqgvsapr4uyd3efhh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom180keadjzcdwk3ezmy5lkmjxme7282zst6zpakr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ngzq62h7902pjqr93jv2elaheevgutdgkcp5hq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1js98mx55t0gd9f2hqyl89h6jce5wc9pjuphezu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sfxxqr3lewy77fgjcm8r087jtkantpxhrssmh7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qyqfvqgx9gcz7l0cu4g0n37cymj40n84x5hks2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1unnyx608n8fnz05knvypujspez6ksyy78s5ssh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1acm7d9y0k8rg030fsgr3naar86544lkrwsft99\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18lf3j0k9elws9jzgue4ken4ek9spclxdpqwqrf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yg3dd43w77rdnsmm7w8mcgkhtvwtaer2ll60mn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q58qefu3y5avs9fr84rjzhxzua8gxhqxyl7sym\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13c4wu8pe9eppqmy2f9acej7xry0rq4kxg9ndnf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1laavmhhucz9cfnqrunp4awkul7x0f5zgk9kake\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uy6udy9sym20u4w7n283epuxlummqt2veddjl6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jdet00t9y2frz8c99aarh9gxewnasv3e50xmkl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kpcd9xa9nnv3q539273akjx32txj5f4k4gjgz6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e8p4rwzy3rvfyeeye2qgf9d44dnrep9sjsqfza\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wftfmwemuktzs00p98gzpmwssm2vkav8zeld7t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom103pqq4lpp5e0vxeyy5jx93n254a2knktnt22c7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15q5n72dt7nr5f7ypzfshjcueu0c9vxnkdtnzur\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pj8j5ycsddfxjgtg4d768tekhcek0lmw8elvf6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dq5xlazetmkxvj43e4acuq2keu5kpg28h0agrn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zk3lwsslrjw5w76gf4hqxnw2j59w3mxp9uhgxp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zqujfrzngut3mku76f0ewdj32qdz3segen0fhx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lvd5fal8hfpnceudch7qnnzze03zv7kctmlzxa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s2juz7xzya3356epz4c6gh8qxtnumapjp9r6qe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1km9t64y56skcr9zdf9jqz8wcyyw0mnwm8sssf8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qvzmyp7hd7ajqxvej06e6vg3lg607hz8sqnkyp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1at00trzpyf9x9z6qj2eh0w6t8l6l99m83ssks5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cyfnre3uxpm9k0h33pvpsqymp6sddyh7xhyjrj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1khh0cun5zmc8wa2uu4x4ntj499wxcdda4upxum\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h4qeas38xhuyrzlt7grg7fvxltd9tcxgmv047j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ev862tn26damz985dglmw4z7zszxf5vxmwpln\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19805cmnwzz783w4xz6cs73zxrssjy6m3hh6eun\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1enkxzm7yrz64vkt7nmh4srgnh224xjts03vkx4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cnpxzqdkcv8ghzh5t930qm2yxtm6nl2muhszyy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16apejv7pgl89zqmcezyvxeuaqk0hvphxpzlnlw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dhnx364sau00cwrddsvxl3q2mshw2y7ef62lnn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l7x2px023wme2k74pq3khk6fuxn39s7kpr66e6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom198mw3etq0ujmuhqka389ak28vte2qmyeex7y2d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eu34tpjxjgce8t7ds0uhdmapeu0ph8w5su9h0z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nw2hmpju2qh7h28dcgj9nsxlgz6qw7za6sc93u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r8tx7esy4h7027vcarxh7va3fmq8wvuqumyzd3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yye6vtfqx5sx25nz9akx4yxm4srzpjk9g9w236\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sfjam9xytztu8uk49gdxu682t5ak304m7nx8kz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18xkaxx9u2sezp6xcdprcvx2637atgmm0wqu4se\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12wwss0sfzgd7pctj2d4v6cedqvue2htsg62vce\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mf6u86m43nlz94jqa4guaq47pftgmnuuswg9pf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pxhyadyh3excrwsujglrtcf87epag0vj6w53a8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14vxkg87yrh5well6l0dr2ddqq4clncp8vwm8mt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14v4rhpgg2hdj8faeehpf0hue6mah9rk5gfz6cy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h5rnj0dkz0u34l58s8c7d0a7752wqmzhyzy52n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s250e74tu5t3s8k0zyvpt0p0cxuuhj7xynmprm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fhqgf0pnf2jdln5ythmytp3ererur3evu5f5pp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q6m5km9utkxejce38c7hkrmymf5y80alcks6su\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16r82wuucxet5yunse9knweuxf0qgzmatvv8n6c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zx42yzemke0rv7urecwleny4078le573qs5yzl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vx8xwce405xc9d7sw7jwktx2qvwquj63sj4w3m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13wzx0tw8s4wtvlstghrgp8ze2h8mq00su234z3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14fepull5tkq264kuewed6lhzc6rr2y97x420tg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n7hjgvhc6akntccedqnceflcszd46gxlwuc09j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fm4u9q3jhkuyfnw87vpz35pl2mg7ete4tzgxd8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kyp9mqpqpzdurhrqkwga9pytemlu9lddu9kuxm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ffcdqngne3qtq9t6x2fjgawrala4ldqmvchumt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zfxzrmzp3wrfkk5w4p3ztjk7vnu98ugrzl447g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l7t58xj6pudqhy3lpdp2zpywtewtzjrn9qjwdp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n36va85lqk6xtnc7jt2e8s4y5r59ycge2emmys\n", + "\tamount: 1boot\n", + "\treceiver: bostrom130fhg349w5fnq7k7e7tvkkduqj0csfzp966j2w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qxqsqnf0eraenr4y2ma979a5s6m8tw38clgh4f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18zsjm4rcdfgrxcw9thcx5vhtc06q52mvv0v80c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tl8m7vkqmqwpwulhn78nu5k784ecnxqvxswpe8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t5na9787za33fdk5ez7zygg7j0d9sy38t4kwmm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1purf5n8nxayf6dpn6d6e4gxmmkjc6dpstpk0wl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12slwawrmdf3r7sjz7uwv7nmsc252e9xrwddp2f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hrw2dz0aqwwhce3gguu25stlcndh675lrsct03\n", + "\tamount: 1boot\n", + "\treceiver: bostrom147vprf2lhvnfumnn60um2n68fm39xxn9scups5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y5rgvnakgkezuhdukwnrzgqjftjuwjsyktxge0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom122hrgdrcwmh4hycfmwe6y4qy282uhg79f2ea4f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nl5ehp8rn5pcgmfvttsrytphkz9dt8a978d735\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17f42hf5ucr0akjp7mvqjgncuz8avsz5n02d62x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c279fqrkx5rmj2yk0l5zawk7qjrasc5wgcukun\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jr8hhwxutdgy9wdjptlqdhwp4s6rumcnzygpwp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mn3n9tv4gayu5hzz5pzjsj7de2mlecgguvylkp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sdvwnwuqxafn4whjp9ustrca93fqgskkx4chk8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17088meec54587hv9wn90dkjmq34yvvn9uc9h8j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1glh823rshmjpw8kuzzhmsay7zjap3am0qmf839\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ylzwhjyl8txy6vdh9umfkd4mx0d383w3paz74v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zlwj9g2pr8g0wvaz6hvn0h85aptqhhwx2gn90g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19jed8prz68eqjd8h4lwcgj252tms69tderg3sj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14mfr2h6m3ztfsajrr3uylmegxhwqyhlrm8zztp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xzqw546lshq2dhlsc2k6kjl776hqyvjvex6627\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1smy4w3u408p9zwelefgt4tcm84wk3a2aqp2evj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m3hu9nw8f2qel7t7dk8wy4up9s0satfzsdfnwy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g6dtmrlkzava8x6jt5atdayjxe5wqq64dfjuh8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zuuvzff7lrvmn02ggmf0d8en3hswqzs3pcpz8w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wsdkvwu73js8qttz3rdfun5h4r8xapuvc9myuc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19r96a97fey8ky8dalzcc6czhjc0zjkv423tj63\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a9fqj479g9dzc6skhfev7f32tcj8ev5y354aqu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19l5wddltdps37fqt8hduq0lclh74xcf5f0pjaj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mft85u7xgkg4d9m4ra846n00e3p785m6dchxnf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r2jxxvaq434p6f07fv0wppwg504xzmjt30qx7t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom184r7el9wmtsddvddesmeenmj4wypsc3c3rrqxn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cwpfffp79juml7wnp3f6ckd20k35hrg5dghx5m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jey9vauzrlt3ks8036m258w0qfr4ckqyymp6cy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10r2xz7u4wqhp6h3z4rasatlgchhjwz5vrg09gr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kjepyellre6h8lzx778ta8wzwjdjlena7vpam7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ue2qeefl7updflgds5rv4zcn72easx5az5yrda\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l7efxmsgcvtsgnr0wkrmxrfkdyff6qvkh8yttn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aau06l99227hlfshfx9cd3l34hcr8l3f9ls9c9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rhuvrs50sjch59jdq6mr8lchswacf3fnnqszcz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18lr579uh4rww64tv828dqy8eue863lfm205npr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16aefw7zrmv5ns9nukzmjxtnzlvtalqpc6dfmaj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hzmsg5ldq3qjdm2p5m4mpv4exxqtg9d7jwn235\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r4dcrnyc6l23uav48hkw8kcfl9w9kkp64pml4h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yxqe9g4t2gj8kddntek0tmp0ykwfz4qlu59kda\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16x3st4kztfs59r92ar9dfzxcxvqj92w56rfddr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ts3f4jugc9dac50m5mmm80ms0shzwvtlyks7yw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wtaa26c8mr4fjupv20ma5pdmt9y8a93q0nhycz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m0eassn9kgc87g0pe4x4cydwacyt0uqkg4kz3m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c9mr696jcna4v7lmp4a3nnvct6j6ch8ma3dfws\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lc5zk5kyaptyerlyz3xes97fz3l55js5gnenct\n", + "\tamount: 1boot\n", + "\treceiver: bostrom169pxj6np8g0472emx6nclzaxvpggczftvne4at\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dplg6hf5kszkdghqf09tp8ehdqxwrekkjvgg6g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1luaecv0vhd7x0yshuxq5c5h3v6meaawpnn65jp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fqzjeqev2gh7m3lp0kymc40tdu24c7a3arp9ft\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1upmgxk6l7n4mq9659fxe8mx66ue5ljlpuyrafj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yns80fnuu9lch8suq8l3nhpm0m8khjacppasyp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10pg6talp6mch7cyeajyplt7gepxarth55uhex7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom155gt8epvwzrvu9ttdqsdc95f0gpmre3j73twcu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom145h3xgz9xdqx4udzxhhmf90cz6gdcef3acktmy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12xdk3stf0mcrfv229efatjfkahnzxu9l84l4x2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pdum8vgg4qfpph3alr5cqvgd8m3d8y5crhwu6y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hqglsddv5egxmpuj4yhmzeh99mmtyzhjf2dhxz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom100ydc0fyhjkk802xpvkl02q96zjtw6z5r7w7uy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom169cxjxzau3hytlxvm5vcsy3nh9v3axr07cg9h4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15w4clhqaphgpzdwm9rrzltj320ed5v08hx0tsx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d2gjqa9ewvajhmytwfl93s4q8cnyywu45yjy5n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cfg7cd8u7f7k4ygfrpq2l4gddmppfutm2g3nyp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rqly44sfz7dkv4ztxmj4zejhh08fh5f50le4nr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qecru7cufst0fc59a6l4epks9p6p33k0m8x6mw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1355qqc3fczyefts858yjq48fnwdu5uwyz3udgj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t750kqun7c965ugfllaphvdax62ssnpr58k5qp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wa59zdlutchh3xk5h6sae45v6nnlg02yl3ssvc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d8g30zkahyt5dph3e3pp7ne039gz3ccsq9ep50\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pq40p8pxmkghclxd64mc3z9km3k82kh5rd3yh9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wnaal0pmhtjd8nw74yh4zmq3dyp582jsqrgy2f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom125a4uuvxujph4w3g2syrmdlv5s3s76ap34lyl4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wzqq8wzvdzvgl3tgscf6t67x4gxltz232k8ekq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jclt0ktkane0tyvusejfvmutkdkqg3rrvv7psq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jpl5ugu6ruuua8x0zesu9l4hceesmw2svudv4x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ufjh3w4pq4elfl05p2z3cu4psdtrh7uak4wlkk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ck4j0q8fguj52nrtt7zntuatjf73t5y2dktqx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18cjrmek9cxlgwcmcp7mrw7620pcmxc284ued5c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15rj2fflmyuav83cdxtmz5pu3zkzfgf4rrksjpd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xpgw2xfqg7kws8jlv70k02jvnuy2t3n3t7q5fk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1az25fr8ydu38tackgjcfyxhq6gaeze6t2x5lmt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19sdrtq39e2735pmp27e8mlnqh0fn4tlf0v5rzt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qhzrr6ufw288nan60t8etu80jtm0l6ajgmhugl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qgqhe7rsv9an467ylhnnkeyc6f3kpz0cgrv7xr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1myp7j06cegahwdl67mca2a3z8vexsu9n6saats\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hqm2js4uqmh0wfwv6su3hn8ltr68awzedh2dw9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m6fdz5qgprfhe99zrsvd47wh24ylhkfa9jmzun\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zxuqg5uz6sqsp94ffxkf6me5tmyasrjuryf9en\n", + "\tamount: 1boot\n", + "\treceiver: bostrom160vptru74lu386qhu7ungf2rejsk60pmkj08we\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ecw3qzlju9p7mc0099hzcahczj07x58sw4j03g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wy7e7nv8v804k2w70asgrqn7au6k3dfz8rfrem\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15etpfhgxgy9ws5q2g299pwp7a98hs25k3hvfvr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14dnntgu5y9y67vlrhuklmlxvjqtwevclmd98q0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mt8twz86lmnewr3mezhpl47pe9wgjaesmnfymy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16jxujdc2yl9plx4d842tf60lkhzq4tfy0qag2t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z3y2n475jkt4wgmah5ut89vvpmqrp8mk0mus0v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zr0xprwh0jfclphd68l4eum8jk67ts4d6wadde\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r7kulrdlq0h0fvl6gnfkww6z6cjegqy0xk27ar\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1den8w2utv0h50haq3ptc5wgy0pjw8ugqefhfzm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12l69hhwxyuzqq5k9wdsqsv7wy7j4m2wuwkg7jk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a3hahg5n0h07rlf2njr2egzawdw7vx5xtqyza9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10pkd5rpdln0g3ueun8xh99zwgd5ten4asc4arm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19729346n68cwwuyyf5mpzgd2ja0asap2r6gkpu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tvqmtsa4z7jy8ec62y5jmgw4rkd3lc8f08necm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1czkj66d82v3lvtue3zw3cz760hwd7ut6jzt8qr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ulxz70cg5hh6euvgrha9x3f0ymsu7k5gue9c2x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rujd5srpcdhzhalj0qevsxeagwjz4fj9kymp5n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cvx5j8z844un3up5vqf549ryp9ftmjwslv5x8j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom152v9jjxfym2nmuf4rjnjv236q3yw89scf8437r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15n2tadvncdag3vzmuefemjhpas20u7nqlms9j5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom188lzmdhnu2pns0xf3m8ees8e4m0g5ffzdet902\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dp5rwexfcztlzu2yvcpa8vyy5xk2fmz2ys5q72\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g2rkzeqjp2jy05u7cfnkupgrmnykdpuzktvrv9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u533q9d75yq52xmw77kq6fkznz0qytttgm06s8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xyy5hrw76f2h7dz734hn5wgc8g494vhl3xmpyl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14sar0twg4hsk7jy9c3gpwxdhgjvr5lvepd6y2r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom128lhy765n2w80jvklwy664zkzws97q6wmpgzlz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ydwyze2aaunh0jvvahffgyds26vpx5vnruarsp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13c7vua3r86zn2qj4tdtfpx8vy5vaqcl2wjdy6l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xsleccpjrt4fqaqfj08g735et96fj4dk4mfu7k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18q7nkfrpkvgfcclgetdp0dh5nuxudu8cm4vww7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uga97trgdd0t50696cj3yctzrnp5cdcj3u9ts8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom148qxe55gucr24y5vxnqe66hzjuuakyxd4qpnkt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gj9z54qvg9nkh8t9zk8j5sec6w26e9r4pmd60m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n75pwrnmxt3ywtzwvcjaax8grmux9s5syyknkw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1evz509y22v0fj2uu96ulqqt96ccd7jcz8ks3jm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sp9nr2vnhghn7enesy93t37zscgnkudv4mhjrk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom188q8td5kruvpjft8eppput4nanwtaxl6m0a4xk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14a285dyazcsxehd0d25ymkqlv0kwdzdxw30mw4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1335x4qqktnesulhgzfpmr0c5spxnezlc339qt4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kskpep8nq7nqdf9q7345hp86pnqcn8gl9p7ac6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15ra33jujfx7jwthrkkzra3xqzfmear2mgku3s6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p25pjwh5zhtcdr9vfz6kmyrds5nmjeq8adx5nl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vydn22e69uvafanflj2zyv8k030s76570wxx4r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h8dsg94v9rygph9y5rrvjfuf6dq3c4la0q7ch8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1289dtx0nj2urqeyl5ug0vv085fp97jkd73qf03\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u2hyc8s8xwv66nur00uzqvc79dpwuwy07xrcc6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vweq4952eahg9f8ztjhpwxzv3gz4k38afmeefe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10aquka34m0ygjdcxsh7hk3tx8ncp802v5dkrhq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tphrgpevrp4a6hvya73m2xkumndeehftk5asw4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n0c88j4d2ev43zsggccqnxr2vlu3pj2cjxhv33\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ygaxm0dj9fmwr286ykq995mrcgrdky6472jn5x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ttkll0j5g7qnfeuwn9mscha7fqnuw3hewhhfl9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18mhhs37ugxl3xurunjz3vtx2w3kehy85sg48ez\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1anc3eagapd325z0l932aecqgc8uy3j652rsefv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17a89u60xlrptnq9w8xmxy2f2hrxkwk72f6z3su\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hzfx2c5wvrewd2v6yn5sygn6jgvqf02ekwguxn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vadfrpmfsrnlhp07cye5wdh6xcj06c88kf7l9x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xa9drpgsg8lgcpyf98cz53kfxq54gfgz36vlwu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n84s4kv6a3vmp3prt554g2m9chhqvg6j397ze4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18j30ywpmglt20hpydcxet48taxh07gcj4mw7j9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom146jz2zaaq427fh0sa3rr6xwu3wvn79vhamstdd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ty3p7ke2kfrqelzkzqdytve2fg80fu5q7axs0a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10klhqsxz49xk3ymy5u2m229nqjlta6gqsrj5v8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vkank8vhgfw9385v07talxrx2cux9mpwf9y0sn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ccycwcnry2sxvk42q6mhpqnejctecuw0vg5d97\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mdyh5mj0sqng685l03agav8x5g2te6k78zu0sk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gpdt6fz6mj2wc5te5hyjjx609vvrr4l2wt765x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mef0zuc2hj7hrc9639cwcyhu5kp8r6u08qhru4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aldrdr42x9sg7j55hpam85hhazfcq023mt8tmw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rh58k6veqx5srheq0tr43na6s502rhgpte8d5v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19ykuu28qmj7lmjh6my9rnv9fr644e4ny6hwsgf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jax0r22fn8mkhe0ycpckdcy27v244sn7480lmy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m4t4c5sjp8h8q8ggqwku4vy90yu4mvls0fg0zy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vecjuxxxpvr7r48zrtzxvamhwvw26swfg7lrlu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ktm0dr27mujp757lkcydaaumfm442fg9gcq9dh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10amnc3easewv9tqfvpc34m9vd0v9mws6c8l50j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qmy4y5nfxlj4kutml2gxsnyymmek4jtwmh38y8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a4kpvt793nzcen9ykf99dtzltwej2qk306v63w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12wfla5plajv2c4l2ynun7s6ef7rttdrgj8edgf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pma68un55ldmq6hnfawucp49vsauq8jmsjaf5j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16zu9yrq034cfen42lk7fwxrm052v06jpzup9yf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jyklkuvgwu55nrypsqhhfqjt5saxshhkhppheg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a24vtxfh4rck70uecx9hlu0dyfcxpg904gwf4x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cacuhwgwll54muyjzqjjqwt4f4umry6kpfy6xe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uy0ml3quh4s2mfl96msvmh9l30xxwac39vfhvd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vuqhvu33r3c4jxlsqyje7srtlnhpnmrxtd8pjh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xzgk724nt6scvqytdmhfraqdja3jlsu5mye5ee\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1whd5nqpz97d5f3w6r04ky3q9hwdd2r5ruum6uk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1527h5ffhkgj9resk38fvzr8gxtdw8t2f9vh9mu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1094h87m8d97kxsa555lhvw0nea6d9np8w3luyx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kp53hjslwluzy0emfdw7u2q930a8zpakdmt5dw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1njx2gc50ukkzftjk6fgtpud6e3mqw2vgacw2ce\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j0sux4lh84hj48k53n5mylmlt8556tpqxeru95\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cs9ndufqq0jmn54064l8960hegej46rq4j8kus\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1phhv2r5vcw2lxw686cy55l4q6wjr59arpjv9uk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18xy7t23mnxzetetqnrfr8pec4hc24mq88u5pjy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kdl8d0nnx0y2dz8q5psjqsl0rmyq3gvl5kguuq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14c3rf5rwrgmnldnwtlmxf5w44vkufkhfxt94v7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yref6dltmluteylkn8cxmrkxzr588zd0wa5ryp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1htz8plpa75px8ey9tdl4z7xz2wdu5qq3mhyaa6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1he20r8pgpa4ffcaanwhfynaht07cdhn2hx6ykq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom182numthq7cmqceylg7374534xxzc4al3vxmkyr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1djpt35z73p39ljlxt0vc2fqfp6kld4lc2t5ha4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cxgz8s0gj5m0e38e6fkftvvqkgyl54jttckvjt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14h4auu97as39qsrp5rtsyax60kgnct9ddzt6t0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10r9uvxwfuevgd8s5cf4zhc5n0y2sk9g7k6pnf3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dkaemn64rvr78dpy07lc3zld0ax0nk5uu3mm6d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p2y8ua93ep0l4dzmakwxmnc7sgq4xy5js8q9rl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a8mprqzxyj5t0fwsgft9jp6sjax42yevvfgp44\n", + "\tamount: 1boot\n", + "\treceiver: bostrom133rwn9hxg8sjfup50jmhsqmr4m437y6aansl3n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kk8pkuu9tn6tpuw9tfspv7n6uw5gjdeh0ngy7n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom108gfuxwfu0x8p0mygtt76kjnqhg6ashrh8z3wd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tl90ajk5xcu2472d2q943laxpnr32tm69r5w5u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1trx0m7y2qpy9tx5rcaw03gxn73ljmx8eu5q7a4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hpewrrph6ltl9ac2mtkgx0nc9xhdu96k2l9l48\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rvslrxv4r8x94na4hmqpw9x5f4r6sqhmm85nrq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q5j2kkam6kpw7q879mr2mq08mdzpwf29ma5pac\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j59chks5ncw5xgfn0m5xp94kcmt5nppw5mgm2z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j3prm44stksguyya808wdef6hue3j9lpwqvlyq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x3lpwnsx6dkevx3pl5wtj6ppc870mnhv345x69\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hw5ez0le8c4dmuwccsmlhjzf2rkjn3cfxznjff\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17sarwjxlfl89trhnu4ajs9hmhchgde0h2pwq7y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1murt4r89lkhxt8klazn55fne4nm5vfw0xedv8s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vqcq63kz8cc30shcpuexfx3s5njmk6lm88cjyl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uucpdfrt69rkgq663ga3pfye654qdpthf586fk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18zgk9v8cujyfq76vq6elzhky29rqzjqvjq3ryh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zqgu3fr88ux5p6zg6939yyjdm7au0gq4kcau0p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xfwru92nu037qvm0xq3pengcgtye78hff7a8dr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n8m7ga7702qse8lpqr4wksajwxyy8lzzdhuk2n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hasa326rhxpy4kgafenwpnl90mwj47fsaszmxe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l0hnpqc40g9yhsmr98ljvua6ma2ed7y28agpzr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12t77gpcvmdhxwfrheddr7a8tu34ap7wnhp80wk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom144ssk7q7zlstv9tl4t9y5vxuvyc5f7lm93wpvg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18vpksj6y7klmmuz2u6khx0cx734g9p8jakq4ks\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1efs4k58lerh9jxk40j8wxvfmatd6xj84gv5v7y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom152z0k8576603ejg3e4k9vytrdgx7plhv0ww85v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ltca92wc08kyzq9drt2xj65sfennr7kepfsaql\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1neuf9k4ev3ew95nrnyuqn85yzwj3rag4hkgkl9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jsj2zr6wzazmzwkvygt80652djcnl9n05gpxen\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f4fekagaz5yp647vnxtd9nvzcv0lz45p8dyp7r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19v7sak2tpcuz7zzjalys8s82kwl5hz9kj9w4xw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom100cgtqeduamm9gr52pd4syyy6vh9ttvn9q0zqe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ck5cknlcul4sttjthnu5k4y6u3fnk9lpzlyvan\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16ep83r5ajxdt5ph4f4kvtx2twvkne54pu9ge4t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19j9shexyaq6wqup63mzn03mv53gqt5w7dfxwjz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1up20urfurr09tclrh7jkd25qevaj39zv5fqz6m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10x2jj35eczu55flhgpul54fu48ha4m0y9yayax\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10yjgld5s97u6sf28pctuh5f4kdnmjmz8r4vgwc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15mz89lgf5p3y6dtcx3v368xl6x6u95ghy549t0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1epa87twvrfzqse2xu2ujtcljh9mgd0jxkq8zsq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kr0ppc0xg62mkk7073n6r2v6kytjekzr07qhd9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom152g9d3lh0tx3pg388l60evnxhcael4w74ut89d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l738p8nut30k55778yppc2q5tc7u5k3svvke3g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xlqntklfavy5eckmp4pgm98yelag3fkx5pa4t8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vw5t6f2xt3xzrjrjy2f3c5pepkfna3ll0sl920\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10f9um478sdsr8xe0d2wf53q9870ccwrrfvhvwj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uc6wu6752kre6x2z5j6kj3yzxgjrcy6zcvk930\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u7k6m6dkapv8mkdcrr5hjt4lnkv7d3kez3zpk0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14nk30j0sd8yhpkpdpdqyp4w54p0hw3md660ckd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mc0ty8lmlsgtqctxksdd6f3zve4hdfs9rrjtns\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13s7y9tnm66crunp3jqfg99mvhxthqkea0803kd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gpqte98zm0ntdq2p3yvvh3r7ps28tpn343gdrc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dufclh8c6p780cznmyarwnsapufp0xk663s3qa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jwpxgcwauvft976anl0efrwunehc7rvr7wa4y8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18fqs4xnt79zxhuchzsh649asj92hd37h0f2h5m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yryfkefu7fsp9gtuduunycztmh6rhsc4sglxz7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wmg040qha5yr6ncjz8st9um4qzpwyxyaxlp7p0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j3uk4mch32aaftvxujadu7q9askcavp8x9dwqj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s4nzr0xn5y0vq8u527yagn0n8nmchmzxr0pjv5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19l28k2d6lfpj4jeha0vjm45ztm9zqakj3m60gr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rul4wx3qarcvncrzdld54g5gmquvw7lj30xzgu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rxd7n6pa2yrkl3drghchh6mds6nue608nh5cnj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k540p0cazwrj3ez6zkl0a7jkrkfv6shxgjvd4v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xhupl76scsp22f6pnvqxthl8t69ees74943tzx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l28xwylr36nxq3q5r08numg82ktvufjzwywrdk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ahykkc8nuca95zvvvd5pclxesp3p7vnrt3tdzw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ce8hq6tx8wuza70898k3nqz7jnrnuaw6zack3e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uavvlagza8plwzfc5fhk7eex2sjw0fda03hpdp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1se2w0rk7aj67fzmvgjydepxqe9ly0f8j2847wa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom158wt2pyltunrquyp2u67gqd2l8glvsrvm5903e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q3ytnpnw3hmnfm0n7t428gmmgzgkpyyqljjxm3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zx9t3jt6ry0cmz2ctwhs56n0dr6lgkcllu3k4g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z7h0kktnf5nlmldfcxgjy7n5uf8exel3f7hpje\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s6nh8ud50zm9xauy7xy5jxyk5fc2vkjwalpvk5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xfhf0ec8gv3e5spedfz3309n3550ezzqek35dy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xc7egn3t5nqyuywlsynq2j8wttn0zha4jxeq5x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ygmk0klkpvtp856wws42jg3alr3lptyf0ktnej\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gtnf0q6em58lwjl7nzk50yqsxx8d303nl39z00\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qww9823kk3fya8ualrvuy39ch20ch0uset6xxh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1568yyctf8cm8w526h7tvwa8739nk9fumjgt570\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gpdvxduq9n7c5h09tfv2pul37gkfpxph05j54s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13h0gmqewgk6vtcfv0un35epdt2prp3mthg303r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tm2e0qn7vlzmwlscxkyxezugf87gahlcj2x7ly\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rq0957kew7kv8hj4sg3h2v9zsxad6y823cy7zn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1daedzeftlasfparuxka4qe25wckh9v8ewglz5r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1069t0hne60792r4lykss8nffphcw7p65z3n9y6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p32r7340fgymndvwns3y46eys5gge5czpaf772\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1auqhx64tf60ccf8h9287xelke8cwpra7gnegg0\n", + "\tamount: 1boot\n", + "\n", + "coin spent\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\n", + "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", + "\n", + "transfer\n", + "\trecipient: bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lv6x3yfzj3fx6cjgruqa8s2mjruptugtleetmf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aadd4jt2cl6unmjt8yvcgq8wcksqaftqpyy4mj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom149h0exg24jn762y9lmv3jqese99kre2n85pex5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rqp8smjcr6xrpq49y8akuxlx7a0zhavc2nneul\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pnkvcx2wm8t3x9n6sa34f6zlrkvtj4g3ntj6wx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16yqfnptnzywemafzan9mwkv5me7k655dwh36pk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e0pzyst8pskh7s3zzdrwc0tlxf9tdzh9qj0q9y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nzu2dvvxjm9glfl0gy7cekxtajuxhhc9u4fugg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nw0eak6x0qpxge2t29ch0yzyp9qgjfx3fu528j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10kv6av9c8ga755vk4kcwte904mxpeuzrhk2nyd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13t90dwpufurafesw7nr4hfnzqffcu7a34958eg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19z2y47c6aa4tknm4c500u5kahhkw2mcgf549ce\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u0p6qlv9m2w3yz5gwxqr2970yj0sca338llk03\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jaf2dk2rsngavud20xkj59dfc85fs24ky9mjy8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1078l7neg7tfae8e0dqpdptjn03xdkn7slx0xjd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qn0ffve5xdcxcv495n95dzrdrskzzf6asna2ct\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15y9ut4zal8anmakyq3geakshzjfnack27483x6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xa9thz2elpq3slszxvdwumhxzg9jz8x5kawpe2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e5xk5jn6969afusgnf32xfszft6r7dj2zxsg2l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yzwkg34uny3k6zm3afpxpejndgxnk49378d5nm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gcqxaze3v8cyafhrp57ep9vzhcjkmcsdsa2yfh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1atvwh2dd0qr0n7er6aygzs49ddqmuzspkrj33q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zxpkqe0d3cvwcr5dffkdpev9y8xkk9z3u5wtnm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1usv0az46mv752j5g7kw7sprudshknr6q5qngcs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sz7yswnjpep75cmpf5xnqm65wgl6fcgwy285g4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f40fnk4qhxq9feh4ggjh8tjp22u5um98cpct00\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cmj7q3pqhcz0cgrlv79g0wrn0pevtrcy6het07\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ndqt74r0kveh6ye6a8c5yhlj9uusmyuf7k8fr2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d5kc0kwuu2yuu5uuwv6tdy2prj2czk2kju0u6n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gz807dgums76nhc7x68pdkqv64q2pwlyxvew50\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eg80jj22rpgr4t9dxmznwp6f5kxnplrjd655w6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12w3ypnrdn4c7ehml43pzjrp9eajr8htmvcd5w6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13dyyvdl2pll37hnexft92zkgfl0hknjj6x3juc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f0j3j9l9xkzr5hhrrnlxun0220e3gvuc2ha9vz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n7kzsy3k7erq4eczuequ9g94qcxn498gtd59px\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gt5zu7ccmkv067ngvdmzcezz30qrrtnzu0txlu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cpwtq6x5lqw768pq8gtkwu0cx0vl0j93844zf3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ug5df3zjcexxunx3zdpktlla959juuxyte7dnt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rdugyu4e2ltcwwng5xrmhe3wq0wxk0vuvp0rwa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ppmzay3n0q589k3zngq65gt2t0adsjq3xl3a2l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jfqhyaf95cdueekunx5t57pchzhk4mfpjxsxzw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m6g3smrtc4ne8anynhm7p4yzjmltr079hmsakh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hdk3h0ke7wx2z97e8aaarzs8e7ujpeetx33j0y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s3thnygyu50phtpvecdppxgd2cz0uuu8hfjxly\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14k8us4cfa67xva6ek8aktk38ntttujspv3q3v0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nafpc64rv5whyztmyxxcxhlg80h4zugj8e2q7n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1824z69h4mzmw6qgvvuykxpx2hz40ssf0hdfxk8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hrpaleg05wktnpftwuewqyzq0t7htffsufyugw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w8u78s2zwqqujkcqqz6d0zqsdhfy5ugaum2wzk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mtzfsqz2xnyxj2pa9f8m6qdese6t4fprhre4hk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cz4w28jv2h07mgqkr6up5gum9mklmvku8fu95t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xwr0vdekhyt76alm6zh6vm4qfuhywkp5yf9ltz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gahqxgnm2ly6srvapcy90snt2pnfh6qwep25ft\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ja2e3c84xn6zmaruyy7y2wcya2wmnkvvuf7ay0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v75rm9xdrf6hgl8lvu83dedkegzfsxde87dwa8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cre8we2v9fgg5tv6qa8vsacuyllufej5ehj4uw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nxfw357kjwt98jrv799hy5xm6mp6rznc3dp9w0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1602n7zasghae8y3s5tr8x66h33lh20krx6rgdq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13wsqm9f2a7eq7pvwxzsmesqj9w8kch3k9rl78h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom103uwcdmjhtmspezdysnxuseznl6l7gsx5fyecf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jmgnjqkhvadxsu3p8r9z25rh0wxqatrj5w4349\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16q7mvqk8adyzxpevgve83jjqkuce57y6rlqeku\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p6ve5n5yq89zr44rngmh20glxvp66pl2qkyx9v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hccnrlltl5g6cxg37w3xdwfcwang2xa6wg3se9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p76vfp7h3jxfqq9c6jh2sw5ttu4vae2rzycl7c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15d82asrcsquye365lcacqz34w9rlvyagvk6w9s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s7tmea39yvq7qydhfgmlrrtlnnaeyhls99d0n2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1plpjvqdrn64nqa6upznqhna53lgk2wdq8yeds3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m8mjjt7wr060lc3vllknf90eyh4g8eyeue8hfd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uxdqvxm8naan4tkyszamnlef8hmevhk2fzjv2j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c8k2w5djf6f2zn9djn95utghln4ttpc0ycwsew\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ayxevyw22aldflheq6suvwp2t78kzh4hhpz2my\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18r0kr4qh59fzggxppld48rgh6sdca9ugqnfsyc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kszt4p3djszm3uy3rjhpzqqcqhpmvk9jn70g6v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1asgd5276d49jpwq48qda4850z7zxytt95mxpnc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q6jcg7jssn4yn67mdaadgy640fj5pmjw2xtay6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1judqxfl9a2ylgk0rdyarcxtp5zqfquq2xw52kx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c832k85p23z6h9ak0jyw2fl3mcwreqxumse3vt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1farn6mjfdsvpzz5em4nk08wneqx6lrlz723hc4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1alht2j535m2k587etht4m9tjvt7aysf3e7mwz3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yj8aghuekf0gt3ygdsdn7pus8k2xr7zztp6rjt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v54nm9820g3xnm0p6r3yge5z356zd5xt758stx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15synnmzhuaj473htdrufv0vtwx3m4ql0kqqawu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qv7y45k4nwwykd5ppdgcsk0eys3hlfstz2ve0s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom123m9kleq5pstd9v9sx3l988668pw7r4vzhd4nf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yu5yqwtj82j9rxg8lwfkft8l9cl2mgpjl2q3v9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qfrfr9qmlekmumdn6lg3d87v69srhcmcrkef9d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qqxxwtkpghhk4ffcre0e7ax0g8eflx5lspd9th\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l2hjfglkfq8t9ddq3yqrd0v8g7lvvye3ld05t7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jy6ewf2gqgm3syejyyzy48nj07tnlxh93kagap\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ejxvkmhaxnyy7jvvgqpfluqxwre7lfvp7gd0ee\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q4873nch2y23jtmq9ewqwz0xmqx7pa9hrxhl0h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10zxwdk5njdqvvz5t2akaqr5j3nxd9n4ksq3r37\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1featctvqw5wft900u2ue3t8t5swacr7hjhr4d8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lx5levkfz0z3a85grnef4kvzm6adgjdpkmdxtz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12caj3yuuqfrk84685ctcsgyf8ydky987g6q8a2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qw0fa5mjdjg536s63th9xxcw9ylp8jmmdwtl3a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c4l4pw22pqw0tnxtrznjs89ljzdtm6atdwymwt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10wxjxx9gdgmampgwvnrnmsvtf2myly2ur70ts0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d7latm49rnmavpavwlmha8cpca975pwzu0aqjl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15fl6gep6s7rvwawuuurtah7e2s05m4ayxjj58f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ejvrsdnjm0dd9v9sfr9kpsnznh8wscq0ftprtc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ce2rxf57vfu9xue8xlrdfd0gwkn4rhrudljh7c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom132k79qd9g2rmjlnzkh90s4fz2um3ve3ccfhq7c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zv3hq25u20kweyf6lkhgmc6duaxrcc9p4x7aj3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1al6dkqpkdpyr2mvcaut3ww9hut9hf6hwgptzpf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hejww8kfgqdyzndkg4u3slkuvt3r0an8mag26w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aynhht0duv0m4v977z5l4swzppjr00r2t9rcha\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1744pr5ldnmsvgevs5euyem3g39xpw7lmsyfapt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mflaqr7fj5zu2fn4gvex76zrkhtmx2ksvhl7ne\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g84tx3zuv7f50sfl4u5893hlvsdktc56zk36eh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom124gtgld6763ceqaxff0eyj0wdqj2r9g45r58nv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ssma2q0asv238awrat6jqf05x3gy7r067zq4sa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17pecqfspzfhhe8fvwr3flzg9p0vtc9np493k5a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l67w2qyw4jw9fpc4m7vdv2djlkuewts20dfczf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w9fs726u5etnwlfj2ntuuexv775y9yuwnqquqm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1795uk3ygfa6q7ehlat3zu2ymha77n39xe54tld\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vagluyyzn7tgz8l3n408rgeapaudfcwh2x93zw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sawcqd49ypnsv4kwx5cvajedpatf0amdusewpr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eue6qm5fm6x0txx98day73rnt38cwcqcwu8pg3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12wv5vvlmkadys3yglukrnw53t9smh8n56s2ztt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zzn2r50gzps50ph566m5r596rdpfn48cxrjvsm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13mu6a0k3j7xeca03v52tuzrqy6n5t048cmlaxg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z84dmzg3va6el094urq5k8ers0uy0dtuhvvlxv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19kxgajer20yhvdnmvtlpmsfq7rz0aknkfk5zd5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1knkpgdupena082dnawn85t9ur48rhqg79mp7d0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uaaw2lx3yal30rjhf9v7hcz59wta5e3hv4xz42\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13qy3yevynq8dv0syt0g0jrwwlf7u8ku5jp6ynj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17l5qhfa8mp57yuku3mzuhdvc72z7nh9j8j6nrh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cexqmtkz8etzpt46cqng79zuh5u524gm0pr9rm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tvhc2648axv5n4ynkezfcsqgvsapr4uyd3efhh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom180keadjzcdwk3ezmy5lkmjxme7282zst6zpakr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ngzq62h7902pjqr93jv2elaheevgutdgkcp5hq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1js98mx55t0gd9f2hqyl89h6jce5wc9pjuphezu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sfxxqr3lewy77fgjcm8r087jtkantpxhrssmh7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qyqfvqgx9gcz7l0cu4g0n37cymj40n84x5hks2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1unnyx608n8fnz05knvypujspez6ksyy78s5ssh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1acm7d9y0k8rg030fsgr3naar86544lkrwsft99\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18lf3j0k9elws9jzgue4ken4ek9spclxdpqwqrf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yg3dd43w77rdnsmm7w8mcgkhtvwtaer2ll60mn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q58qefu3y5avs9fr84rjzhxzua8gxhqxyl7sym\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13c4wu8pe9eppqmy2f9acej7xry0rq4kxg9ndnf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1laavmhhucz9cfnqrunp4awkul7x0f5zgk9kake\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uy6udy9sym20u4w7n283epuxlummqt2veddjl6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jdet00t9y2frz8c99aarh9gxewnasv3e50xmkl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kpcd9xa9nnv3q539273akjx32txj5f4k4gjgz6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e8p4rwzy3rvfyeeye2qgf9d44dnrep9sjsqfza\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wftfmwemuktzs00p98gzpmwssm2vkav8zeld7t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom103pqq4lpp5e0vxeyy5jx93n254a2knktnt22c7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15q5n72dt7nr5f7ypzfshjcueu0c9vxnkdtnzur\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pj8j5ycsddfxjgtg4d768tekhcek0lmw8elvf6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dq5xlazetmkxvj43e4acuq2keu5kpg28h0agrn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zk3lwsslrjw5w76gf4hqxnw2j59w3mxp9uhgxp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zqujfrzngut3mku76f0ewdj32qdz3segen0fhx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lvd5fal8hfpnceudch7qnnzze03zv7kctmlzxa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s2juz7xzya3356epz4c6gh8qxtnumapjp9r6qe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1km9t64y56skcr9zdf9jqz8wcyyw0mnwm8sssf8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qvzmyp7hd7ajqxvej06e6vg3lg607hz8sqnkyp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1at00trzpyf9x9z6qj2eh0w6t8l6l99m83ssks5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cyfnre3uxpm9k0h33pvpsqymp6sddyh7xhyjrj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1khh0cun5zmc8wa2uu4x4ntj499wxcdda4upxum\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h4qeas38xhuyrzlt7grg7fvxltd9tcxgmv047j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ev862tn26damz985dglmw4z7zszxf5vxmwpln\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19805cmnwzz783w4xz6cs73zxrssjy6m3hh6eun\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1enkxzm7yrz64vkt7nmh4srgnh224xjts03vkx4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cnpxzqdkcv8ghzh5t930qm2yxtm6nl2muhszyy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16apejv7pgl89zqmcezyvxeuaqk0hvphxpzlnlw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dhnx364sau00cwrddsvxl3q2mshw2y7ef62lnn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l7x2px023wme2k74pq3khk6fuxn39s7kpr66e6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom198mw3etq0ujmuhqka389ak28vte2qmyeex7y2d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eu34tpjxjgce8t7ds0uhdmapeu0ph8w5su9h0z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nw2hmpju2qh7h28dcgj9nsxlgz6qw7za6sc93u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r8tx7esy4h7027vcarxh7va3fmq8wvuqumyzd3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yye6vtfqx5sx25nz9akx4yxm4srzpjk9g9w236\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sfjam9xytztu8uk49gdxu682t5ak304m7nx8kz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18xkaxx9u2sezp6xcdprcvx2637atgmm0wqu4se\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12wwss0sfzgd7pctj2d4v6cedqvue2htsg62vce\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mf6u86m43nlz94jqa4guaq47pftgmnuuswg9pf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pxhyadyh3excrwsujglrtcf87epag0vj6w53a8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14vxkg87yrh5well6l0dr2ddqq4clncp8vwm8mt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14v4rhpgg2hdj8faeehpf0hue6mah9rk5gfz6cy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h5rnj0dkz0u34l58s8c7d0a7752wqmzhyzy52n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s250e74tu5t3s8k0zyvpt0p0cxuuhj7xynmprm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fhqgf0pnf2jdln5ythmytp3ererur3evu5f5pp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q6m5km9utkxejce38c7hkrmymf5y80alcks6su\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16r82wuucxet5yunse9knweuxf0qgzmatvv8n6c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zx42yzemke0rv7urecwleny4078le573qs5yzl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vx8xwce405xc9d7sw7jwktx2qvwquj63sj4w3m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13wzx0tw8s4wtvlstghrgp8ze2h8mq00su234z3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14fepull5tkq264kuewed6lhzc6rr2y97x420tg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n7hjgvhc6akntccedqnceflcszd46gxlwuc09j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fm4u9q3jhkuyfnw87vpz35pl2mg7ete4tzgxd8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kyp9mqpqpzdurhrqkwga9pytemlu9lddu9kuxm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ffcdqngne3qtq9t6x2fjgawrala4ldqmvchumt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zfxzrmzp3wrfkk5w4p3ztjk7vnu98ugrzl447g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l7t58xj6pudqhy3lpdp2zpywtewtzjrn9qjwdp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n36va85lqk6xtnc7jt2e8s4y5r59ycge2emmys\n", + "\tamount: 1boot\n", + "\trecipient: bostrom130fhg349w5fnq7k7e7tvkkduqj0csfzp966j2w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qxqsqnf0eraenr4y2ma979a5s6m8tw38clgh4f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18zsjm4rcdfgrxcw9thcx5vhtc06q52mvv0v80c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tl8m7vkqmqwpwulhn78nu5k784ecnxqvxswpe8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t5na9787za33fdk5ez7zygg7j0d9sy38t4kwmm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1purf5n8nxayf6dpn6d6e4gxmmkjc6dpstpk0wl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12slwawrmdf3r7sjz7uwv7nmsc252e9xrwddp2f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hrw2dz0aqwwhce3gguu25stlcndh675lrsct03\n", + "\tamount: 1boot\n", + "\trecipient: bostrom147vprf2lhvnfumnn60um2n68fm39xxn9scups5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y5rgvnakgkezuhdukwnrzgqjftjuwjsyktxge0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom122hrgdrcwmh4hycfmwe6y4qy282uhg79f2ea4f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nl5ehp8rn5pcgmfvttsrytphkz9dt8a978d735\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17f42hf5ucr0akjp7mvqjgncuz8avsz5n02d62x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c279fqrkx5rmj2yk0l5zawk7qjrasc5wgcukun\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jr8hhwxutdgy9wdjptlqdhwp4s6rumcnzygpwp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mn3n9tv4gayu5hzz5pzjsj7de2mlecgguvylkp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sdvwnwuqxafn4whjp9ustrca93fqgskkx4chk8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17088meec54587hv9wn90dkjmq34yvvn9uc9h8j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1glh823rshmjpw8kuzzhmsay7zjap3am0qmf839\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ylzwhjyl8txy6vdh9umfkd4mx0d383w3paz74v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zlwj9g2pr8g0wvaz6hvn0h85aptqhhwx2gn90g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19jed8prz68eqjd8h4lwcgj252tms69tderg3sj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14mfr2h6m3ztfsajrr3uylmegxhwqyhlrm8zztp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xzqw546lshq2dhlsc2k6kjl776hqyvjvex6627\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1smy4w3u408p9zwelefgt4tcm84wk3a2aqp2evj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m3hu9nw8f2qel7t7dk8wy4up9s0satfzsdfnwy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g6dtmrlkzava8x6jt5atdayjxe5wqq64dfjuh8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zuuvzff7lrvmn02ggmf0d8en3hswqzs3pcpz8w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wsdkvwu73js8qttz3rdfun5h4r8xapuvc9myuc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19r96a97fey8ky8dalzcc6czhjc0zjkv423tj63\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a9fqj479g9dzc6skhfev7f32tcj8ev5y354aqu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19l5wddltdps37fqt8hduq0lclh74xcf5f0pjaj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mft85u7xgkg4d9m4ra846n00e3p785m6dchxnf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r2jxxvaq434p6f07fv0wppwg504xzmjt30qx7t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom184r7el9wmtsddvddesmeenmj4wypsc3c3rrqxn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cwpfffp79juml7wnp3f6ckd20k35hrg5dghx5m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jey9vauzrlt3ks8036m258w0qfr4ckqyymp6cy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10r2xz7u4wqhp6h3z4rasatlgchhjwz5vrg09gr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kjepyellre6h8lzx778ta8wzwjdjlena7vpam7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ue2qeefl7updflgds5rv4zcn72easx5az5yrda\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l7efxmsgcvtsgnr0wkrmxrfkdyff6qvkh8yttn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aau06l99227hlfshfx9cd3l34hcr8l3f9ls9c9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rhuvrs50sjch59jdq6mr8lchswacf3fnnqszcz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18lr579uh4rww64tv828dqy8eue863lfm205npr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16aefw7zrmv5ns9nukzmjxtnzlvtalqpc6dfmaj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hzmsg5ldq3qjdm2p5m4mpv4exxqtg9d7jwn235\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r4dcrnyc6l23uav48hkw8kcfl9w9kkp64pml4h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yxqe9g4t2gj8kddntek0tmp0ykwfz4qlu59kda\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16x3st4kztfs59r92ar9dfzxcxvqj92w56rfddr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ts3f4jugc9dac50m5mmm80ms0shzwvtlyks7yw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wtaa26c8mr4fjupv20ma5pdmt9y8a93q0nhycz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m0eassn9kgc87g0pe4x4cydwacyt0uqkg4kz3m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c9mr696jcna4v7lmp4a3nnvct6j6ch8ma3dfws\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lc5zk5kyaptyerlyz3xes97fz3l55js5gnenct\n", + "\tamount: 1boot\n", + "\trecipient: bostrom169pxj6np8g0472emx6nclzaxvpggczftvne4at\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dplg6hf5kszkdghqf09tp8ehdqxwrekkjvgg6g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1luaecv0vhd7x0yshuxq5c5h3v6meaawpnn65jp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fqzjeqev2gh7m3lp0kymc40tdu24c7a3arp9ft\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1upmgxk6l7n4mq9659fxe8mx66ue5ljlpuyrafj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yns80fnuu9lch8suq8l3nhpm0m8khjacppasyp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10pg6talp6mch7cyeajyplt7gepxarth55uhex7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom155gt8epvwzrvu9ttdqsdc95f0gpmre3j73twcu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom145h3xgz9xdqx4udzxhhmf90cz6gdcef3acktmy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12xdk3stf0mcrfv229efatjfkahnzxu9l84l4x2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pdum8vgg4qfpph3alr5cqvgd8m3d8y5crhwu6y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hqglsddv5egxmpuj4yhmzeh99mmtyzhjf2dhxz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom100ydc0fyhjkk802xpvkl02q96zjtw6z5r7w7uy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom169cxjxzau3hytlxvm5vcsy3nh9v3axr07cg9h4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15w4clhqaphgpzdwm9rrzltj320ed5v08hx0tsx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d2gjqa9ewvajhmytwfl93s4q8cnyywu45yjy5n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cfg7cd8u7f7k4ygfrpq2l4gddmppfutm2g3nyp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rqly44sfz7dkv4ztxmj4zejhh08fh5f50le4nr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qecru7cufst0fc59a6l4epks9p6p33k0m8x6mw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1355qqc3fczyefts858yjq48fnwdu5uwyz3udgj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t750kqun7c965ugfllaphvdax62ssnpr58k5qp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wa59zdlutchh3xk5h6sae45v6nnlg02yl3ssvc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d8g30zkahyt5dph3e3pp7ne039gz3ccsq9ep50\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pq40p8pxmkghclxd64mc3z9km3k82kh5rd3yh9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wnaal0pmhtjd8nw74yh4zmq3dyp582jsqrgy2f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom125a4uuvxujph4w3g2syrmdlv5s3s76ap34lyl4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wzqq8wzvdzvgl3tgscf6t67x4gxltz232k8ekq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jclt0ktkane0tyvusejfvmutkdkqg3rrvv7psq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jpl5ugu6ruuua8x0zesu9l4hceesmw2svudv4x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ufjh3w4pq4elfl05p2z3cu4psdtrh7uak4wlkk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ck4j0q8fguj52nrtt7zntuatjf73t5y2dktqx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18cjrmek9cxlgwcmcp7mrw7620pcmxc284ued5c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15rj2fflmyuav83cdxtmz5pu3zkzfgf4rrksjpd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xpgw2xfqg7kws8jlv70k02jvnuy2t3n3t7q5fk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1az25fr8ydu38tackgjcfyxhq6gaeze6t2x5lmt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19sdrtq39e2735pmp27e8mlnqh0fn4tlf0v5rzt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qhzrr6ufw288nan60t8etu80jtm0l6ajgmhugl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qgqhe7rsv9an467ylhnnkeyc6f3kpz0cgrv7xr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1myp7j06cegahwdl67mca2a3z8vexsu9n6saats\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hqm2js4uqmh0wfwv6su3hn8ltr68awzedh2dw9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m6fdz5qgprfhe99zrsvd47wh24ylhkfa9jmzun\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zxuqg5uz6sqsp94ffxkf6me5tmyasrjuryf9en\n", + "\tamount: 1boot\n", + "\trecipient: bostrom160vptru74lu386qhu7ungf2rejsk60pmkj08we\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ecw3qzlju9p7mc0099hzcahczj07x58sw4j03g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wy7e7nv8v804k2w70asgrqn7au6k3dfz8rfrem\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15etpfhgxgy9ws5q2g299pwp7a98hs25k3hvfvr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14dnntgu5y9y67vlrhuklmlxvjqtwevclmd98q0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mt8twz86lmnewr3mezhpl47pe9wgjaesmnfymy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16jxujdc2yl9plx4d842tf60lkhzq4tfy0qag2t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z3y2n475jkt4wgmah5ut89vvpmqrp8mk0mus0v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zr0xprwh0jfclphd68l4eum8jk67ts4d6wadde\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r7kulrdlq0h0fvl6gnfkww6z6cjegqy0xk27ar\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1den8w2utv0h50haq3ptc5wgy0pjw8ugqefhfzm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12l69hhwxyuzqq5k9wdsqsv7wy7j4m2wuwkg7jk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a3hahg5n0h07rlf2njr2egzawdw7vx5xtqyza9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10pkd5rpdln0g3ueun8xh99zwgd5ten4asc4arm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19729346n68cwwuyyf5mpzgd2ja0asap2r6gkpu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tvqmtsa4z7jy8ec62y5jmgw4rkd3lc8f08necm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1czkj66d82v3lvtue3zw3cz760hwd7ut6jzt8qr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ulxz70cg5hh6euvgrha9x3f0ymsu7k5gue9c2x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rujd5srpcdhzhalj0qevsxeagwjz4fj9kymp5n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cvx5j8z844un3up5vqf549ryp9ftmjwslv5x8j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom152v9jjxfym2nmuf4rjnjv236q3yw89scf8437r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15n2tadvncdag3vzmuefemjhpas20u7nqlms9j5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom188lzmdhnu2pns0xf3m8ees8e4m0g5ffzdet902\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dp5rwexfcztlzu2yvcpa8vyy5xk2fmz2ys5q72\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g2rkzeqjp2jy05u7cfnkupgrmnykdpuzktvrv9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u533q9d75yq52xmw77kq6fkznz0qytttgm06s8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xyy5hrw76f2h7dz734hn5wgc8g494vhl3xmpyl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14sar0twg4hsk7jy9c3gpwxdhgjvr5lvepd6y2r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom128lhy765n2w80jvklwy664zkzws97q6wmpgzlz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ydwyze2aaunh0jvvahffgyds26vpx5vnruarsp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13c7vua3r86zn2qj4tdtfpx8vy5vaqcl2wjdy6l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xsleccpjrt4fqaqfj08g735et96fj4dk4mfu7k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18q7nkfrpkvgfcclgetdp0dh5nuxudu8cm4vww7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uga97trgdd0t50696cj3yctzrnp5cdcj3u9ts8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom148qxe55gucr24y5vxnqe66hzjuuakyxd4qpnkt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gj9z54qvg9nkh8t9zk8j5sec6w26e9r4pmd60m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n75pwrnmxt3ywtzwvcjaax8grmux9s5syyknkw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1evz509y22v0fj2uu96ulqqt96ccd7jcz8ks3jm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sp9nr2vnhghn7enesy93t37zscgnkudv4mhjrk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom188q8td5kruvpjft8eppput4nanwtaxl6m0a4xk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14a285dyazcsxehd0d25ymkqlv0kwdzdxw30mw4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1335x4qqktnesulhgzfpmr0c5spxnezlc339qt4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kskpep8nq7nqdf9q7345hp86pnqcn8gl9p7ac6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15ra33jujfx7jwthrkkzra3xqzfmear2mgku3s6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p25pjwh5zhtcdr9vfz6kmyrds5nmjeq8adx5nl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vydn22e69uvafanflj2zyv8k030s76570wxx4r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h8dsg94v9rygph9y5rrvjfuf6dq3c4la0q7ch8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1289dtx0nj2urqeyl5ug0vv085fp97jkd73qf03\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u2hyc8s8xwv66nur00uzqvc79dpwuwy07xrcc6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vweq4952eahg9f8ztjhpwxzv3gz4k38afmeefe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10aquka34m0ygjdcxsh7hk3tx8ncp802v5dkrhq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tphrgpevrp4a6hvya73m2xkumndeehftk5asw4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n0c88j4d2ev43zsggccqnxr2vlu3pj2cjxhv33\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ygaxm0dj9fmwr286ykq995mrcgrdky6472jn5x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ttkll0j5g7qnfeuwn9mscha7fqnuw3hewhhfl9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18mhhs37ugxl3xurunjz3vtx2w3kehy85sg48ez\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1anc3eagapd325z0l932aecqgc8uy3j652rsefv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17a89u60xlrptnq9w8xmxy2f2hrxkwk72f6z3su\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hzfx2c5wvrewd2v6yn5sygn6jgvqf02ekwguxn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vadfrpmfsrnlhp07cye5wdh6xcj06c88kf7l9x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xa9drpgsg8lgcpyf98cz53kfxq54gfgz36vlwu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n84s4kv6a3vmp3prt554g2m9chhqvg6j397ze4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18j30ywpmglt20hpydcxet48taxh07gcj4mw7j9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom146jz2zaaq427fh0sa3rr6xwu3wvn79vhamstdd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ty3p7ke2kfrqelzkzqdytve2fg80fu5q7axs0a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10klhqsxz49xk3ymy5u2m229nqjlta6gqsrj5v8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vkank8vhgfw9385v07talxrx2cux9mpwf9y0sn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ccycwcnry2sxvk42q6mhpqnejctecuw0vg5d97\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mdyh5mj0sqng685l03agav8x5g2te6k78zu0sk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gpdt6fz6mj2wc5te5hyjjx609vvrr4l2wt765x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mef0zuc2hj7hrc9639cwcyhu5kp8r6u08qhru4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aldrdr42x9sg7j55hpam85hhazfcq023mt8tmw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rh58k6veqx5srheq0tr43na6s502rhgpte8d5v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19ykuu28qmj7lmjh6my9rnv9fr644e4ny6hwsgf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jax0r22fn8mkhe0ycpckdcy27v244sn7480lmy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m4t4c5sjp8h8q8ggqwku4vy90yu4mvls0fg0zy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vecjuxxxpvr7r48zrtzxvamhwvw26swfg7lrlu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ktm0dr27mujp757lkcydaaumfm442fg9gcq9dh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10amnc3easewv9tqfvpc34m9vd0v9mws6c8l50j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qmy4y5nfxlj4kutml2gxsnyymmek4jtwmh38y8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a4kpvt793nzcen9ykf99dtzltwej2qk306v63w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12wfla5plajv2c4l2ynun7s6ef7rttdrgj8edgf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pma68un55ldmq6hnfawucp49vsauq8jmsjaf5j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16zu9yrq034cfen42lk7fwxrm052v06jpzup9yf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jyklkuvgwu55nrypsqhhfqjt5saxshhkhppheg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a24vtxfh4rck70uecx9hlu0dyfcxpg904gwf4x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cacuhwgwll54muyjzqjjqwt4f4umry6kpfy6xe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uy0ml3quh4s2mfl96msvmh9l30xxwac39vfhvd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vuqhvu33r3c4jxlsqyje7srtlnhpnmrxtd8pjh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xzgk724nt6scvqytdmhfraqdja3jlsu5mye5ee\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1whd5nqpz97d5f3w6r04ky3q9hwdd2r5ruum6uk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1527h5ffhkgj9resk38fvzr8gxtdw8t2f9vh9mu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1094h87m8d97kxsa555lhvw0nea6d9np8w3luyx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kp53hjslwluzy0emfdw7u2q930a8zpakdmt5dw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1njx2gc50ukkzftjk6fgtpud6e3mqw2vgacw2ce\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j0sux4lh84hj48k53n5mylmlt8556tpqxeru95\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cs9ndufqq0jmn54064l8960hegej46rq4j8kus\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1phhv2r5vcw2lxw686cy55l4q6wjr59arpjv9uk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18xy7t23mnxzetetqnrfr8pec4hc24mq88u5pjy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kdl8d0nnx0y2dz8q5psjqsl0rmyq3gvl5kguuq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14c3rf5rwrgmnldnwtlmxf5w44vkufkhfxt94v7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yref6dltmluteylkn8cxmrkxzr588zd0wa5ryp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1htz8plpa75px8ey9tdl4z7xz2wdu5qq3mhyaa6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1he20r8pgpa4ffcaanwhfynaht07cdhn2hx6ykq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom182numthq7cmqceylg7374534xxzc4al3vxmkyr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1djpt35z73p39ljlxt0vc2fqfp6kld4lc2t5ha4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cxgz8s0gj5m0e38e6fkftvvqkgyl54jttckvjt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14h4auu97as39qsrp5rtsyax60kgnct9ddzt6t0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10r9uvxwfuevgd8s5cf4zhc5n0y2sk9g7k6pnf3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dkaemn64rvr78dpy07lc3zld0ax0nk5uu3mm6d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p2y8ua93ep0l4dzmakwxmnc7sgq4xy5js8q9rl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a8mprqzxyj5t0fwsgft9jp6sjax42yevvfgp44\n", + "\tamount: 1boot\n", + "\trecipient: bostrom133rwn9hxg8sjfup50jmhsqmr4m437y6aansl3n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kk8pkuu9tn6tpuw9tfspv7n6uw5gjdeh0ngy7n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom108gfuxwfu0x8p0mygtt76kjnqhg6ashrh8z3wd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tl90ajk5xcu2472d2q943laxpnr32tm69r5w5u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1trx0m7y2qpy9tx5rcaw03gxn73ljmx8eu5q7a4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hpewrrph6ltl9ac2mtkgx0nc9xhdu96k2l9l48\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rvslrxv4r8x94na4hmqpw9x5f4r6sqhmm85nrq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q5j2kkam6kpw7q879mr2mq08mdzpwf29ma5pac\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j59chks5ncw5xgfn0m5xp94kcmt5nppw5mgm2z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j3prm44stksguyya808wdef6hue3j9lpwqvlyq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x3lpwnsx6dkevx3pl5wtj6ppc870mnhv345x69\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hw5ez0le8c4dmuwccsmlhjzf2rkjn3cfxznjff\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17sarwjxlfl89trhnu4ajs9hmhchgde0h2pwq7y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1murt4r89lkhxt8klazn55fne4nm5vfw0xedv8s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vqcq63kz8cc30shcpuexfx3s5njmk6lm88cjyl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uucpdfrt69rkgq663ga3pfye654qdpthf586fk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18zgk9v8cujyfq76vq6elzhky29rqzjqvjq3ryh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zqgu3fr88ux5p6zg6939yyjdm7au0gq4kcau0p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xfwru92nu037qvm0xq3pengcgtye78hff7a8dr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n8m7ga7702qse8lpqr4wksajwxyy8lzzdhuk2n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hasa326rhxpy4kgafenwpnl90mwj47fsaszmxe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l0hnpqc40g9yhsmr98ljvua6ma2ed7y28agpzr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12t77gpcvmdhxwfrheddr7a8tu34ap7wnhp80wk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom144ssk7q7zlstv9tl4t9y5vxuvyc5f7lm93wpvg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18vpksj6y7klmmuz2u6khx0cx734g9p8jakq4ks\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1efs4k58lerh9jxk40j8wxvfmatd6xj84gv5v7y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom152z0k8576603ejg3e4k9vytrdgx7plhv0ww85v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ltca92wc08kyzq9drt2xj65sfennr7kepfsaql\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1neuf9k4ev3ew95nrnyuqn85yzwj3rag4hkgkl9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jsj2zr6wzazmzwkvygt80652djcnl9n05gpxen\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f4fekagaz5yp647vnxtd9nvzcv0lz45p8dyp7r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19v7sak2tpcuz7zzjalys8s82kwl5hz9kj9w4xw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom100cgtqeduamm9gr52pd4syyy6vh9ttvn9q0zqe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ck5cknlcul4sttjthnu5k4y6u3fnk9lpzlyvan\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16ep83r5ajxdt5ph4f4kvtx2twvkne54pu9ge4t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19j9shexyaq6wqup63mzn03mv53gqt5w7dfxwjz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1up20urfurr09tclrh7jkd25qevaj39zv5fqz6m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10x2jj35eczu55flhgpul54fu48ha4m0y9yayax\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10yjgld5s97u6sf28pctuh5f4kdnmjmz8r4vgwc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15mz89lgf5p3y6dtcx3v368xl6x6u95ghy549t0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1epa87twvrfzqse2xu2ujtcljh9mgd0jxkq8zsq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kr0ppc0xg62mkk7073n6r2v6kytjekzr07qhd9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom152g9d3lh0tx3pg388l60evnxhcael4w74ut89d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l738p8nut30k55778yppc2q5tc7u5k3svvke3g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xlqntklfavy5eckmp4pgm98yelag3fkx5pa4t8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vw5t6f2xt3xzrjrjy2f3c5pepkfna3ll0sl920\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10f9um478sdsr8xe0d2wf53q9870ccwrrfvhvwj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uc6wu6752kre6x2z5j6kj3yzxgjrcy6zcvk930\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u7k6m6dkapv8mkdcrr5hjt4lnkv7d3kez3zpk0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14nk30j0sd8yhpkpdpdqyp4w54p0hw3md660ckd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mc0ty8lmlsgtqctxksdd6f3zve4hdfs9rrjtns\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13s7y9tnm66crunp3jqfg99mvhxthqkea0803kd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gpqte98zm0ntdq2p3yvvh3r7ps28tpn343gdrc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dufclh8c6p780cznmyarwnsapufp0xk663s3qa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jwpxgcwauvft976anl0efrwunehc7rvr7wa4y8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18fqs4xnt79zxhuchzsh649asj92hd37h0f2h5m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yryfkefu7fsp9gtuduunycztmh6rhsc4sglxz7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wmg040qha5yr6ncjz8st9um4qzpwyxyaxlp7p0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j3uk4mch32aaftvxujadu7q9askcavp8x9dwqj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s4nzr0xn5y0vq8u527yagn0n8nmchmzxr0pjv5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19l28k2d6lfpj4jeha0vjm45ztm9zqakj3m60gr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rul4wx3qarcvncrzdld54g5gmquvw7lj30xzgu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rxd7n6pa2yrkl3drghchh6mds6nue608nh5cnj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k540p0cazwrj3ez6zkl0a7jkrkfv6shxgjvd4v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xhupl76scsp22f6pnvqxthl8t69ees74943tzx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l28xwylr36nxq3q5r08numg82ktvufjzwywrdk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ahykkc8nuca95zvvvd5pclxesp3p7vnrt3tdzw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ce8hq6tx8wuza70898k3nqz7jnrnuaw6zack3e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uavvlagza8plwzfc5fhk7eex2sjw0fda03hpdp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1se2w0rk7aj67fzmvgjydepxqe9ly0f8j2847wa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom158wt2pyltunrquyp2u67gqd2l8glvsrvm5903e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q3ytnpnw3hmnfm0n7t428gmmgzgkpyyqljjxm3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zx9t3jt6ry0cmz2ctwhs56n0dr6lgkcllu3k4g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z7h0kktnf5nlmldfcxgjy7n5uf8exel3f7hpje\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s6nh8ud50zm9xauy7xy5jxyk5fc2vkjwalpvk5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xfhf0ec8gv3e5spedfz3309n3550ezzqek35dy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xc7egn3t5nqyuywlsynq2j8wttn0zha4jxeq5x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ygmk0klkpvtp856wws42jg3alr3lptyf0ktnej\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gtnf0q6em58lwjl7nzk50yqsxx8d303nl39z00\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qww9823kk3fya8ualrvuy39ch20ch0uset6xxh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1568yyctf8cm8w526h7tvwa8739nk9fumjgt570\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gpdvxduq9n7c5h09tfv2pul37gkfpxph05j54s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13h0gmqewgk6vtcfv0un35epdt2prp3mthg303r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tm2e0qn7vlzmwlscxkyxezugf87gahlcj2x7ly\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rq0957kew7kv8hj4sg3h2v9zsxad6y823cy7zn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1daedzeftlasfparuxka4qe25wckh9v8ewglz5r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1069t0hne60792r4lykss8nffphcw7p65z3n9y6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p32r7340fgymndvwns3y46eys5gge5czpaf772\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1auqhx64tf60ccf8h9287xelke8cwpra7gnegg0\n", + "\tamount: 1boot\n", + "Gas used: 12,364,104\n", + "Tx hash: 652C301B94D802531C45075C4B881A0811CC212928E54857494789E30FEB3020\n" + ] + } + ], + "source": [ + "NUMBER_ADDRESSES_IN_SENDING_CHUNK = 1_000\n", + "\n", + "bostrom_addresses = claims_with_proofs_df.bostrom_address.to_list()\n", + "bostrom_addresses_chunks = [bostrom_addresses[i: i+ NUMBER_ADDRESSES_IN_SENDING_CHUNK] for i in range(0, len(bostrom_addresses), NUMBER_ADDRESSES_IN_SENDING_CHUNK)]\n", + "\n", + "for bostrom_addresses_item in bostrom_addresses_chunks:\n", + " send_output = contract_utils.send_coins(\n", + " from_seed=WALLET_SEED,\n", + " to_addresses=bostrom_addresses_item,\n", + " amounts=[1] * len(bostrom_addresses_item),\n", + " gas=min(100_000 + 25_000 * len(bostrom_addresses_item), int(24e6)),\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(contract_execution_json=send_output)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create Passports, Proof Addresses and Claim Gift" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 16, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of tasks: 40\n" + ] + } + ], + "source": [ + "def execute_participation(row_index: int) -> bool:\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py {PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address}')\n", + " if _output:\n", + " return _output\n", + " else:\n", + " return _error\n", + "\n", + "NUMBER_OF_THREADS = 20\n", + "\n", + "tasks = [[item] for item in range(NUMBER_OF_ACTIVATED_PARTICIPANTS)]\n", + "print(f'Number of tasks: {len(tasks)}')\n", + "print(f'Number of threads: {NUMBER_OF_THREADS}')\n", + "\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(execute_participation, tasks)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 17, + "outputs": [], + "source": [ + "with open('temp/contract_execution_log_10.txt', 'r') as f:\n", + " data = json.load(f)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 18, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tQmemPmMC2CTtAFhDmwvjs5uGCVTfrf3RSdRDjAiF4AeeaJ -> Qma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc\n", + "\tQma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc -> QmemPmMC2CTtAFhDmwvjs5uGCVTfrf3RSdRDjAiF4AeeaJ\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tQma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc -> QmeMj59L9JW8QNVqL9TsVDmxTEhTDsV6q6XAH3T71aVHhC\n", + "\tQmeMj59L9JW8QNVqL9TsVDmxTEhTDsV6q6XAH3T71aVHhC -> Qma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: mint\n", + "\tminter: Passport Contract\n", + "\ttoken_id: 1384\n", + "Gas used: 440,265\n", + "Tx hash: E0B0F94C1835A04419B5EA7BFBE95B15553061B170AA13B68DEB5933B288E82C\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['create'])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 19, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tQma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc -> QmYfHHqWxi7PrGuXhDsTXPBdrAPh5BnWR7MkqfsAN3priG\n", + "\tQmYfHHqWxi7PrGuXhDsTXPBdrAPh5BnWR7MkqfsAN3priG -> Qma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc\n", + "\tneuron: Proof Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", + "\n", + "message from bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john164957017110\n", + "\taddress: 0x51126745fe2b70bf42f329e5c451c6c2e067d61c\n", + "Gas used: 281,156\n", + "Tx hash: 66ADD954E5CB27059B18593EEF566DC3F2B3FA70977949A1C736F3ACD6C64441\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['proof_ethereum'])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 20, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x51126745fe2b70bf42f329e5c451c6c2e067d61c\n", + "\ttarget: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", + "\tamount: 12,236,691\n", + "Gas used: 322,718\n", + "Tx hash: 0381A20561A88F18A78ADB94083DA34B4E1A69802444673E7AF23E6DF8CB71D7\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['claim_ethereum'])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Passport NFT testing\n", + "### Transfer Passport" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 21, + "outputs": [], + "source": [ + "def get_passport_id(bostrom_address: str) -> str:\n", + " return query_contract(query=f'''{{\"tokens\": {{\"owner\": \"{bostrom_address}\"}}}}''',\n", + " contract_address=passport_contract_address)['data']['tokens'][0]" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 22, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "233af41bf63743bca923e10668c81577" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tQmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji -> Nickname\n", + "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Avatar Subgraph Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: transfer_nft\n", + "\tsender: bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v\n", + "\trecipient: Passport Owner Address\n", + "\ttoken_id: 1386\n", + "Gas used: 385,800\n", + "Tx hash: FFAF3465A41FABAA47EB845FAEBE709EEC1F01C4198CFACD12F57BB978FD5881\n" + ] + } + ], + "source": [ + "for index, row in tqdm(claims_with_proofs_df[:4].iterrows()):\n", + " if index == 1:\n", + " transfer_passport_json = contract_utils.transfer_passport(\n", + " row,\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " to_address=WALLET_ADDRESS,\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(\n", + " transfer_passport_json,\n", + " row=row)\n", + " else:\n", + " pass" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Burn" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 23, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "bc8594b0b68144f387753750923bbc59" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tcyberhole -> Nickname\n", + "\tNickname -> cyberhole\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tcyberhole -> Avatar\n", + "\tAvatar -> cyberhole\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: burn\n", + "\tsender: bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq\n", + "\ttoken_id: 1390\n", + "Gas used: 381,878\n", + "Tx hash: 2557A6805C6EFF0440357CF80D7F404E83BA2BEE0A82A310F41CB291A0C5D57D\n" + ] + } + ], + "source": [ + "for index, row in tqdm(claims_with_proofs_df[2:6].iterrows()):\n", + " if index == 2:\n", + " burn_passport_json = contract_utils.burn_passport(row, token_id=get_passport_id(row['bostrom_address']), display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(burn_passport_json, row=row)\n", + " else:\n", + " pass" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Add tests for Passport contract\n", + "#### create_passport +\n", + "#### update_name\n", + "#### update_avatar\n", + "#### proof_address +\n", + "#### remove_address\n", + "#### set_minter\n", + "#### set_owner\n", + "#### set_active\n", + "#### set_subgraphs\n", + "#### transfer_nft +\n", + "#### send_nft\n", + "#### mint\n", + "#### burn +\n", + "#### approve\n", + "#### approve_all\n", + "#### revoke\n", + "#### revoke_all\n", + "#### Expirations\n", + "##### at_height\n", + "##### at_time\n", + "##### never\n", + "\n", + "### Add tests for Gift contract\n", + "#### update_owner\n", + "#### update_passport_addr\n", + "#### update_target\n", + "#### register_merkle_root +\n", + "#### claim +\n", + "#### release +\n", + "\n", + "### Add tests for subgraph contract\n", + "#### update_owner\n", + "#### update_executer +\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 8365856..ff8ab15 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -37,16 +37,15 @@ "from multiprocess import Pool\n", "from math import ceil\n", "from dotenv import dotenv_values\n", - "from itertools import islice\n", "from IPython.core.display import display, HTML\n", "\n", - "from contract_utils import execute_bash, instantiate_contract, execute_contract, query_contract, get_ipfs_cid_from_str, get_proofs, ParseOutput, execute_contract_sdk, send_coins\n", + "from contract_utils import instantiate_contract, execute_contract_bash, query_contract, get_ipfs_cid_from_str, get_proofs, ContractUtils\n", "\n", "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 1000\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 10\n", + "NUMBER_OF_PARTICIPANTS = 10\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 5\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", @@ -61,7 +60,8 @@ "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", "DISPLAY_TX_EXECUTION = False\n", "TEST_ACCOUNT_ADDRESS = 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'\n", - "TEST_ACCOUNT_SEED = 'end spread blind steak install glare pride pony switch exit zone faint opinion march layer illness can nest fence top debate monitor supreme noble'\n", + "TEST_ACCOUNT_SEED = 'end spread blind steak install glare pride pony switch exit zone faint ' \\\n", + " 'opinion march layer illness can nest fence top debate monitor supreme noble'\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", "SUBGRAPH_CODE_ID = str(40)\n", @@ -103,11 +103,11 @@ "outputs": [ { "data": { - "text/plain": " 0%| | 0/1000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16492448010QmWJabGXjQzQGBaufL4G52uWJ6pVXk6JAdSJ9FaP2er4HQ0x9652c5b6b5fbb66725d04a9c60910bddeffea6260xc8a81ae383de21ab9222b3a7c36d4851a481371e314b...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtzknow welcome original south crane number blast...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49...0xd4761ed5a2aaaf39b1129b488d5d674b395f8d43b494...{'pub_key': 'Ak2zZhFmb277JrYppue8USwsUAxu7RTK9...eyJwdWJfa2V5IjoiQWsyelpoRm1iMjc3SnJZcHB1ZThVU3...
11000000john16492448011QmVd9z3xpVuteLHfGxwyuqZ59RbqHJvo9rTnMmJydm2KFH0xc054139731e52960f8074be8a5e95f3fcd721cf30xd569412597b83e8cc22d2d5afda4ca5c72e45e44f8a9...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zjcosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4swear jealous fix wait duck gossip amazing loy...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj...0x08c64cbb5f56c4a68f310fcd76d0d9580546c74800de...{'pub_key': 'Av+Omf/jShJAbKSzmeLoXMpfkCPOO23Ok...eyJwdWJfa2V5IjoiQXYrT21mL2pTaEpBYktTem1lTG9YTX...
21000000john16492448012QmNP5sKxtM4CSGf7kTiWofVRnaM1BLypz1Bzp938CaELQe0x28ad7d9904c8b3e114251b273e7d5ca5a875110c0x201c6d3ad75b666634d4f6775719ee6bff005428d8d5...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vucosmos19wakfjwwy2q2a4tt040zwlfje63hhgymy3vujmsecurity ladder shop brush sauce edge category...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu...0x8b9f2830d4eb5142c14f0fd894a0f6b2ed0d912adae0...{'pub_key': 'A50DR3BbqdA7GRRIe3p+whxcgy6Z7lYzU...eyJwdWJfa2V5IjoiQTUwRFIzQmJxZEE3R1JSSWUzcCt3aH...
31000000john16492448013QmcgdRsZ9zhbwWwzk6YvjMPRPvAAPS1bHtCNyXcA8AWwNc0x3bdac6c42a44eb2945089ce04c2ae76d421b8e320x7b34ba8f8da648fd458cb472e219cac67aeab9528c82...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuavcosmos17nvgh8e4628962yd08zdygpg77g06qvf0v60rthorse file tissue valid tomorrow liar genius c...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav...0xb03719a1aff6edb9a1d65d9873c32bec9ed9301a20fc...{'pub_key': 'AhxaSBthlXKR9s6G5vWlAMotKdSR3ftR2...eyJwdWJfa2V5IjoiQWh4YVNCdGhsWEtSOXM2RzV2V2xBTW...
41000000john16492448014QmZPLhT4qBiSHndYTLoW3uRyBWZ9RJqBUEceJDFju5FZKD0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a0x232603ff11610671a4c9ab8a3268ffc13caba4eb714b...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3cosmos19xfk4fypjdvh7klus3sqs6wjvv0frw8uaps48kspider mushroom page length point tenant plug ...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3...0x72b967a3bd50e7a7f3540caf4e91d3342ac578b7df06...{'pub_key': 'AxUpfJBdo9SaxS06HZ/Ll8mkSsttxfhCe...eyJwdWJfa2V5IjoiQXhVcGZKQmRvOVNheFMwNkhaL0xsOG...
.......................................
9951000000john1649244801995QmdTu7ixrtsM6gCHony3L3YiMM3ZAyrerHNBF2BmH2c6sd0xa796c56bf6351abb62536e8f1a71d10a8ba265cf0xc176d2d0321c7b29c88e7dfaea7d8031b38ce09f5d36...bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850cosmos100n4qt5rd3jefhl5ezrcxlu4uf8hd34kc8d52glumber chuckle scrap quantum clay ordinary dic...bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850...0x6a2657437f37009f112e1774ab29f350a47b665c86a0...{'pub_key': 'Ak72+BszxQHYtM+lE3skz9Qr+/yktGHWl...eyJwdWJfa2V5IjoiQWs3MitCc3p4UUhZdE0rbEUzc2t6OV...
9961000000john1649244801996QmbQfexR2AymywJtvPHNDXnv2sDzZPU2s7uNykigGY1NMZ0x7d5c21ebcfaf008cfe7ba8228665d8478a47adee0xd5d950b9d60dfcc801c98a8411434344423800e2243e...bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasfcosmos1qewddun7a48s8985jux04d4w3xacum37csvwwweye pair cry tent warfare abuse drop arena ste...bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf...0x8fca83c4c01fd63fa29d38206b4a2a0f421314185f54...{'pub_key': 'AgR6I7cau7/qGeuQsUxfd0RiKoWYT3lxQ...eyJwdWJfa2V5IjoiQWdSNkk3Y2F1Ny9xR2V1UXNVeGZkMF...
9971000000john1649244801997Qmao6HPcDmMZz8uRgjPummgNbvud2KkNLAvgtZ9xW6sNry0xa92d07ae7a4edc72bbba0eeb8bccdb816ad8ae4c0xe5293951e6301d3e83fc3eb364f0e1e8dc1772705c82...bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49cosmos1rucwkkqrzc4xglgqr3xwzxy887jxp6at7dwttzfinish stool kit skin acquire topic fitness pr...bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49...0x3f3faa62336a713597198adbf269af535ef95448491b...{'pub_key': 'AqzKba3tYSRcTVwO2LVQf9F46WB0EekGk...eyJwdWJfa2V5IjoiQXF6S2JhM3RZU1JjVFZ3TzJMVlFmOU...
9981000000john1649244801998QmbXgpNnAWoM6bwW3p3ByZgDfyRd13HZ8Rcpqz57crvXSm0xd260b6e1ace04748313760719bdecc21fb82ea0b0x87cb01173e33bf19c0296560f67d91b32be5107f381d...bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8cosmos15tuur8x82hnkz727l59mzjdn0u75z3szmz0d4qgate other decorate scissors boss glad empty g...bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8...0x8348c8d95e5814b18aa07be65dec1ff38ade605f9df2...{'pub_key': 'A79SefrWL+fEioxIkBS4DPr76CAKmMMm9...eyJwdWJfa2V5IjoiQTc5U2VmcldMK2ZFaW94SWtCUzREUH...
9991000000john1649244801999QmULWL493BM4AdAgc3c2rcsLGCDZV81u87SCJYGkvdvkFD0x662ddb861fdbd085da590d74bf0d4e12c52b8dc50x3e88c9104a651fc6330da0a195a2b54e4d832eddc0ac...bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6ncosmos15lvk37hzej3cdga9r8sp7x3rpas9p3v0ax4ty5resist wheat soon health spin scissors outside...bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n...0xd0d8df25df882cff482aa61847b54137a0ff7016708b...{'pub_key': 'AyKMkUxXK9+rJIE5Tatls7d90d97XPOTp...eyJwdWJfa2V5IjoiQXlLTWtVeFhLOStySklFNVRhdGxzN2...
\n

1000 rows × 12 columns

\n" + "text/plain": " amount nickname avatar \\\n0 1000000 john16495703800 QmegFZS691C4pJFaFS3NVDNLd5PtjmMiJHJKtqzSsz2tBZ \n1 1000000 john16495703801 QmbAqD21zVJD6D2kvoGnV1Fb8T5XKUG81V8Y7iZVHnpisC \n2 1000000 john16495703802 QmdYTELFKWGpiZ6Qaf6bDHavRMrJ5nmqMTc94mwtnNzr6M \n3 1000000 john16495703803 QmTqzfWV7DsGQsyoMHJTVBRkDtKBEjy5hPErMRfpbmimPm \n4 1000000 john16495703804 QmNWiHGs9WjmzbcQz96fugBm2Bu6CR3uZVsMuiM1tr4wYD \n5 1000000 john16495703805 QmUva19NDC6iVZZ9gGL7jZfsXxpPd6bijzhbUsFvSXTcbV \n6 1000000 john16495703806 QmWXwdS2HtDFxfQ6bwdFvAjJ5HUGS7kQf3pmtkQDzYt9cd \n7 1000000 john16495703807 QmS8CCPyZkNZtiyyt6KbNVKYvbv2yQHaNPEF9ghhUWUN6X \n8 1000000 john16495703808 QmbNWqULQTj2CAR34Fr4bYYMTypcEwnHrcfVLsXUf2UsMD \n9 1000000 john16495703809 QmbtBRQCdJb43phHufuvfKc6oyA6aMH15Rygey8siYXhhu \n\n ethereum_address \\\n0 0x9124d6592264ae9e6693dfa39b8f82f16182419c \n1 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa \n2 0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359 \n3 0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8 \n4 0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149 \n5 0xc45e14572ad2ec57da27faab28919bbda692037e \n6 0xb66bcd3431cc5b1999f98c608963fa9ff2a5d0d2 \n7 0xcb6babdbc3dd4f702237dfdd644ddbc676055e86 \n8 0x1b15c1f4711a8f32f299ccc6121bcac89770a13f \n9 0xcc9f8f54c6f538c6c3a8dc58aef9c591362ae0da \n\n ethereum_private_key \\\n0 0xcf156a52fd254b48a87c77926630089376a2e6d507f5... \n1 0x46a7e94a530954956533e1a923d07c212eafc00a8d23... \n2 0xcdf21ac40a23b30ac2208d9e3f72c7b798068df70f39... \n3 0x08669cd3a21d69b25991ac891c5d1529b64fc893f846... \n4 0xb241a6f909672108710c007c1ea3173656139243deaa... \n5 0xbac8ff0d46365a737ac95be339a9036f861bc371ce14... \n6 0x02c99ad10dc1e0b4400d72bdca2b9623975de1489887... \n7 0x67d44f92161e85defdf10fa79c090b4a579d24ad1a60... \n8 0xdfc6b8f64235c064afe1724ba46c0c8004ccb2d49bd2... \n9 0x49f4580779525a07739ab68efb3fa4f2f4edc21feee7... \n\n bostrom_address \\\n0 bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c \n1 bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q \n2 bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf \n3 bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp \n4 bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk \n5 bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa \n6 bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw \n7 bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw \n8 bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy \n9 bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6 \n\n cosmos_address \\\n0 cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl \n1 cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8 \n2 cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw \n3 cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x \n4 cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93 \n5 cosmos13f4sr82dux0kfu7uma3atv7frhzx57gh0g37c6 \n6 cosmos1pypc2s9dh0f6yp0xcqwjap99l5k75qgmzezq4f \n7 cosmos13ugfw2hr7s8f0yttczg8e2v6v04dlwwaqrvxaf \n8 cosmos19pfkg9t5nvsmmjffsjv6k625xy98esgu426c6r \n9 cosmos1kzrdznpsuhj8scw8p734eex07g0779vry46una \n\n cosmos_seed \\\n0 mixed february demise clinic master race famou... \n1 quantum seed good glass spend spread usual sur... \n2 lava protect work pulse guess toss rocket volu... \n3 medal medal pull rule blur result gift agree g... \n4 hope someone gown grain execute reason chaos g... \n5 bicycle lyrics ring donate price inherit stool... \n6 leaf try race mango beef notice opera pyramid ... \n7 course avoid view wrist casino medal rail adap... \n8 lake thing harvest style luxury ensure notable... \n9 car grief adapt crisp enroll disagree keep awa... \n\n message \\\n0 bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c... \n1 bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q... \n2 bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf... \n3 bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp... \n4 bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk... \n5 bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa... \n6 bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw... \n7 bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw... \n8 bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy... \n9 bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6... \n\n ethereum_message_signature \\\n0 0x9a2bbfc7ab3c7d4ed8910b0a495931c8a055c2fc29e7... \n1 0x5297763d57331039613520d1de1c9f94b0bf104d6fd2... \n2 0x3b7e242a976bd013862872532234536ea2e3397d3411... \n3 0x90d40af4947b8a499c22c79e1ea29cea981be1f819db... \n4 0xcc8656d43b15788c5e0400596f5cebd760da1fd0b75e... \n5 0xb950237f45061a45796e9f6045ef0675a32ee0df4616... \n6 0xd767925b964cff4fb53af0c37b4b8c6b6cfdd8ca4e9a... \n7 0xebd149ca2557ecf8a1a8c6db64d41b31c5e14ba706ba... \n8 0xfe52914b475dd609d4e0baa2c6a5ba3b40aa2e9821e8... \n9 0x7e9b67979c02be2aec144527a8368e91cc31e57cb68b... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A89DQdUqRt7dzpi8/1Jxyb1hh+a6Q0bGo... \n1 {'pub_key': 'At5DOzq36uQeOGT//9kV3HcsPmy4HTAsO... \n2 {'pub_key': 'Aph+/Mv0rOA0Ft+8iP6s7UJqTdOXK8tsK... \n3 {'pub_key': 'A055jXQh2nQUJQQdlssNe0ZWQf9KRkUba... \n4 {'pub_key': 'Ao00rX4/WgQwgoR9wgwOTEgNq5mh9qfDI... \n5 {'pub_key': 'A2Udd3YSUpIPjMuAEmdwCzFYEvHQEHxu3... \n6 {'pub_key': 'AxeON8LGKhtXnzWl1yIuWli6bvIQCj9db... \n7 {'pub_key': 'A5BI/jGNrd6zeAhtrhpxewXKHuQwvcDY2... \n8 {'pub_key': 'A8NrNm4aqTxCiZ3HU2ZKHsOZyE9ID++ls... \n9 {'pub_key': 'AuJljuNtsGVzelxAYia98hz89J7bH5rN6... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQTg5RFFkVXFSdDdkenBpOC8xSnh5Yj... \n1 eyJwdWJfa2V5IjoiQXQ1RE96cTM2dVFlT0dULy85a1YzSG... \n2 eyJwdWJfa2V5IjoiQXBoKy9NdjByT0EwRnQrOGlQNnM3VU... \n3 eyJwdWJfa2V5IjoiQTA1NWpYUWgyblFVSlFRZGxzc05lMF... \n4 eyJwdWJfa2V5IjoiQW8wMHJYNC9XZ1F3Z29SOXdnd09URW... \n5 eyJwdWJfa2V5IjoiQTJVZGQzWVNVcElQak11QUVtZHdDek... \n6 eyJwdWJfa2V5IjoiQXhlT044TEdLaHRYbnpXbDF5SXVXbG... \n7 eyJwdWJfa2V5IjoiQTVCSS9qR05yZDZ6ZUFodHJocHhld1... \n8 eyJwdWJfa2V5IjoiQThOck5tNGFxVHhDaVozSFUyWktIc0... \n9 eyJwdWJfa2V5IjoiQXVKbGp1TnRzR1Z6ZWx4QVlpYTk4aH... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16495703800QmegFZS691C4pJFaFS3NVDNLd5PtjmMiJHJKtqzSsz2tBZ0x9124d6592264ae9e6693dfa39b8f82f16182419c0xcf156a52fd254b48a87c77926630089376a2e6d507f5...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04ccosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutlmixed february demise clinic master race famou...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c...0x9a2bbfc7ab3c7d4ed8910b0a495931c8a055c2fc29e7...{'pub_key': 'A89DQdUqRt7dzpi8/1Jxyb1hh+a6Q0bGo...eyJwdWJfa2V5IjoiQTg5RFFkVXFSdDdkenBpOC8xSnh5Yj...
11000000john16495703801QmbAqD21zVJD6D2kvoGnV1Fb8T5XKUG81V8Y7iZVHnpisC0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa0x46a7e94a530954956533e1a923d07c212eafc00a8d23...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366qcosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8quantum seed good glass spend spread usual sur...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q...0x5297763d57331039613520d1de1c9f94b0bf104d6fd2...{'pub_key': 'At5DOzq36uQeOGT//9kV3HcsPmy4HTAsO...eyJwdWJfa2V5IjoiQXQ1RE96cTM2dVFlT0dULy85a1YzSG...
21000000john16495703802QmdYTELFKWGpiZ6Qaf6bDHavRMrJ5nmqMTc94mwtnNzr6M0x0329bbdbf79eaf87d8d77ecb71f7f8d8165443590xcdf21ac40a23b30ac2208d9e3f72c7b798068df70f39...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnfcosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdwlava protect work pulse guess toss rocket volu...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf...0x3b7e242a976bd013862872532234536ea2e3397d3411...{'pub_key': 'Aph+/Mv0rOA0Ft+8iP6s7UJqTdOXK8tsK...eyJwdWJfa2V5IjoiQXBoKy9NdjByT0EwRnQrOGlQNnM3VU...
31000000john16495703803QmTqzfWV7DsGQsyoMHJTVBRkDtKBEjy5hPErMRfpbmimPm0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a80x08669cd3a21d69b25991ac891c5d1529b64fc893f846...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mpcosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9xmedal medal pull rule blur result gift agree g...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp...0x90d40af4947b8a499c22c79e1ea29cea981be1f819db...{'pub_key': 'A055jXQh2nQUJQQdlssNe0ZWQf9KRkUba...eyJwdWJfa2V5IjoiQTA1NWpYUWgyblFVSlFRZGxzc05lMF...
41000000john16495703804QmNWiHGs9WjmzbcQz96fugBm2Bu6CR3uZVsMuiM1tr4wYD0xcd012b8e0c4a5bd5c9283a0a4281ec553420d1490xb241a6f909672108710c007c1ea3173656139243deaa...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmkcosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93hope someone gown grain execute reason chaos g...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk...0xcc8656d43b15788c5e0400596f5cebd760da1fd0b75e...{'pub_key': 'Ao00rX4/WgQwgoR9wgwOTEgNq5mh9qfDI...eyJwdWJfa2V5IjoiQW8wMHJYNC9XZ1F3Z29SOXdnd09URW...
51000000john16495703805QmUva19NDC6iVZZ9gGL7jZfsXxpPd6bijzhbUsFvSXTcbV0xc45e14572ad2ec57da27faab28919bbda692037e0xbac8ff0d46365a737ac95be339a9036f861bc371ce14...bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxacosmos13f4sr82dux0kfu7uma3atv7frhzx57gh0g37c6bicycle lyrics ring donate price inherit stool...bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa...0xb950237f45061a45796e9f6045ef0675a32ee0df4616...{'pub_key': 'A2Udd3YSUpIPjMuAEmdwCzFYEvHQEHxu3...eyJwdWJfa2V5IjoiQTJVZGQzWVNVcElQak11QUVtZHdDek...
61000000john16495703806QmWXwdS2HtDFxfQ6bwdFvAjJ5HUGS7kQf3pmtkQDzYt9cd0xb66bcd3431cc5b1999f98c608963fa9ff2a5d0d20x02c99ad10dc1e0b4400d72bdca2b9623975de1489887...bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntwcosmos1pypc2s9dh0f6yp0xcqwjap99l5k75qgmzezq4fleaf try race mango beef notice opera pyramid ...bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw...0xd767925b964cff4fb53af0c37b4b8c6b6cfdd8ca4e9a...{'pub_key': 'AxeON8LGKhtXnzWl1yIuWli6bvIQCj9db...eyJwdWJfa2V5IjoiQXhlT044TEdLaHRYbnpXbDF5SXVXbG...
71000000john16495703807QmS8CCPyZkNZtiyyt6KbNVKYvbv2yQHaNPEF9ghhUWUN6X0xcb6babdbc3dd4f702237dfdd644ddbc676055e860x67d44f92161e85defdf10fa79c090b4a579d24ad1a60...bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rwcosmos13ugfw2hr7s8f0yttczg8e2v6v04dlwwaqrvxafcourse avoid view wrist casino medal rail adap...bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw...0xebd149ca2557ecf8a1a8c6db64d41b31c5e14ba706ba...{'pub_key': 'A5BI/jGNrd6zeAhtrhpxewXKHuQwvcDY2...eyJwdWJfa2V5IjoiQTVCSS9qR05yZDZ6ZUFodHJocHhld1...
81000000john16495703808QmbNWqULQTj2CAR34Fr4bYYMTypcEwnHrcfVLsXUf2UsMD0x1b15c1f4711a8f32f299ccc6121bcac89770a13f0xdfc6b8f64235c064afe1724ba46c0c8004ccb2d49bd2...bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyycosmos19pfkg9t5nvsmmjffsjv6k625xy98esgu426c6rlake thing harvest style luxury ensure notable...bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy...0xfe52914b475dd609d4e0baa2c6a5ba3b40aa2e9821e8...{'pub_key': 'A8NrNm4aqTxCiZ3HU2ZKHsOZyE9ID++ls...eyJwdWJfa2V5IjoiQThOck5tNGFxVHhDaVozSFUyWktIc0...
91000000john16495703809QmbtBRQCdJb43phHufuvfKc6oyA6aMH15Rygey8siYXhhu0xcc9f8f54c6f538c6c3a8dc58aef9c591362ae0da0x49f4580779525a07739ab68efb3fa4f2f4edc21feee7...bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6cosmos1kzrdznpsuhj8scw8p734eex07g0779vry46unacar grief adapt crisp enroll disagree keep awa...bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6...0x7e9b67979c02be2aec144527a8368e91cc31e57cb68b...{'pub_key': 'AuJljuNtsGVzelxAYia98hz89J7bH5rN6...eyJwdWJfa2V5IjoiQXVKbGp1TnRzR1Z6ZWx4QVlpYTk4aH...
\n
" }, "execution_count": 2, "metadata": {}, @@ -216,50 +216,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "{('root_testing_source_10_addresses.json', 'temp/proofs_0.json', 0, 21)}\n", "yarn run v1.22.17\n", - "$ ts-node index.ts --input root_testing_source_1000_addresses.json --output proof_testing_1000_addresses.json\n", - "Merkle root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", - "Number of addresses in the Merkle tree: 1999\n", - "Done in 3.64s.\n", - "\n", - "Merkle root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", - "Number of addresses in the Merkle tree: 1999\n" - ] - } - ], - "source": [ - "root_and_proofs_output, root_and_proofs_error = execute_bash(\n", - " f'export NODE_OPTIONS=--max_old_space_size=4096 && '\n", - " f'yarn start --input {ROOT_SOURCE_FILE_NAME} --output {PROOF_FILE_NAME}')\n", - "print(root_and_proofs_output)\n", - "with open(PROOF_FILE_NAME, 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - "root = root_and_proof_json['merkle_root']\n", - "proofs_df = pd.DataFrame(root_and_proof_json['proofs'])\n", - "print(f'Merkle root: {root}')\n", - "print(f'Number of addresses in the Merkle tree: {len(proofs_df)}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 5, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{('root_testing_source_1000_addresses.json', 'temp/proofs_0.json', 0, 1001)}\n", - "yarn run v1.22.17\n", - "$ ts-node index.ts --input root_testing_source_1000_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 1001\n", - "Merkle root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 2.79s.\n", + "$ ts-node index.ts --input root_testing_source_10_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 21\n", + "Merkle root: 3dc8421e3f4b94c8e3aed45c031e95a002007dfac135ca398314b163f15a2cee\n", + "Number of addresses in the Merkle tree: 21\n", + "Done in 3.58s.\n", "\n" ] } @@ -274,7 +236,7 @@ " f'temp/proofs_{i}.json',\n", " i * BASH_SIZE,\n", " min(NUMBER_OF_PARTICIPANTS * 2 + 1, (i + 1) * BASH_SIZE + 1))\n", - " for i in range(ceil(NUMBER_OF_PARTICIPANTS/BASH_SIZE))\n", + " for i in range(ceil(2 * NUMBER_OF_PARTICIPANTS/BASH_SIZE))\n", " )\n", ")\n", "print(tasks)\n", @@ -291,14 +253,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "outputs": [ { "data": { - "text/plain": " address amount \\\n0 0x9652c5b6b5fbb66725d04a9c60910bddeffea626 1000000 \n1 0xc054139731e52960f8074be8a5e95f3fcd721cf3 1000000 \n2 0x28ad7d9904c8b3e114251b273e7d5ca5a875110c 1000000 \n3 0x3bdac6c42a44eb2945089ce04c2ae76d421b8e32 1000000 \n4 0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a 1000000 \n... ... ... \n996 0x7d5c21ebcfaf008cfe7ba8228665d8478a47adee 1000000 \n997 0xa92d07ae7a4edc72bbba0eeb8bccdb816ad8ae4c 1000000 \n998 0xd260b6e1ace04748313760719bdecc21fb82ea0b 1000000 \n999 0x662ddb861fdbd085da590d74bf0d4e12c52b8dc5 1000000 \n1000 cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz 1000000 \n\n proof \n0 [452b463358c489b9e0189b016b310080b9e9fbcd6beff... \n1 [6bb58e973986346c388792576715f282c70420036cefa... \n2 [1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4... \n3 [9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366... \n4 [c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4... \n... ... \n996 [36d2307a53fe7b424779d2cb3009cb505c718aa56d8ad... \n997 [973c9930745e262272ceb092fb2785c7a007b12abd4e4... \n998 [75565685ca4d8ee386ffb7eba95d1494b9533c4c6e947... \n999 [e73331ae9932fd23b621cf9bc834db5109aeba05e8aca... \n1000 [b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09... \n\n[1001 rows x 3 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00x9652c5b6b5fbb66725d04a9c60910bddeffea6261000000[452b463358c489b9e0189b016b310080b9e9fbcd6beff...
10xc054139731e52960f8074be8a5e95f3fcd721cf31000000[6bb58e973986346c388792576715f282c70420036cefa...
20x28ad7d9904c8b3e114251b273e7d5ca5a875110c1000000[1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4...
30x3bdac6c42a44eb2945089ce04c2ae76d421b8e321000000[9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366...
40xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a1000000[c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4...
............
9960x7d5c21ebcfaf008cfe7ba8228665d8478a47adee1000000[36d2307a53fe7b424779d2cb3009cb505c718aa56d8ad...
9970xa92d07ae7a4edc72bbba0eeb8bccdb816ad8ae4c1000000[973c9930745e262272ceb092fb2785c7a007b12abd4e4...
9980xd260b6e1ace04748313760719bdecc21fb82ea0b1000000[75565685ca4d8ee386ffb7eba95d1494b9533c4c6e947...
9990x662ddb861fdbd085da590d74bf0d4e12c52b8dc51000000[e73331ae9932fd23b621cf9bc834db5109aeba05e8aca...
1000cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz1000000[b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09...
\n

1001 rows × 3 columns

\n
" + "text/plain": " address amount \\\n0 0x9124d6592264ae9e6693dfa39b8f82f16182419c 1000000 \n1 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa 1000000 \n2 0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359 1000000 \n3 0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8 1000000 \n4 0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149 1000000 \n5 0xc45e14572ad2ec57da27faab28919bbda692037e 1000000 \n6 0xb66bcd3431cc5b1999f98c608963fa9ff2a5d0d2 1000000 \n7 0xcb6babdbc3dd4f702237dfdd644ddbc676055e86 1000000 \n8 0x1b15c1f4711a8f32f299ccc6121bcac89770a13f 1000000 \n9 0xcc9f8f54c6f538c6c3a8dc58aef9c591362ae0da 1000000 \n10 cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl 1000000 \n11 cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8 1000000 \n12 cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw 1000000 \n13 cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x 1000000 \n14 cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93 1000000 \n15 cosmos13f4sr82dux0kfu7uma3atv7frhzx57gh0g37c6 1000000 \n16 cosmos1pypc2s9dh0f6yp0xcqwjap99l5k75qgmzezq4f 1000000 \n17 cosmos13ugfw2hr7s8f0yttczg8e2v6v04dlwwaqrvxaf 1000000 \n18 cosmos19pfkg9t5nvsmmjffsjv6k625xy98esgu426c6r 1000000 \n19 cosmos1kzrdznpsuhj8scw8p734eex07g0779vry46una 1000000 \n20 0xf2749114feaad68854e01c8ee762c7170532fdfd 10000000 \n\n proof \n0 [78900d7c06c43ae20970087421f80e49257815363f6a3... \n1 [d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114... \n2 [9d5777f2aee55468fcd9a426466d35917086cc43855ca... \n3 [5e42909234f9266f1a6cac6f517ca7971472cf36a9308... \n4 [d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5... \n5 [e9774d5437498124573647289f2644bf38883f338f882... \n6 [3030215ce1bd034297d5a9c5261eb17c827fdfebf7e83... \n7 [b498a35a47dfd85c3f4e59859952eb3d24041f4deb0fc... \n8 [2c95a091c7f94fc231386ca44cab8f7db16da40dc54cd... \n9 [82773830b6b2d0bc76832c66fc9ac3e2fb9b6e6c84fe3... \n10 [30fdf3cb4f18b08a20a2db3acc5ac961095089672200b... \n11 [c571aa4a3bb95f180e8865ac710746125a1d2936940a1... \n12 [d560e34d04482e9002c51c4155cc578ad1083221e4d87... \n13 [97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640... \n14 [1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922... \n15 [13f37008c6c89394e615b6364285ad49bee702aead436... \n16 [7e9525a33b54415b76ebf3ffafa075390d3f2978b0db5... \n17 [87e33d647e99fb3b55137be5085df925d6a2281d6cdc5... \n18 [f06c989e17e5be69f92632911aefe6c0cceeee318a46a... \n19 [2d45e290725a0cad1c162b89cb246f4ae12aaada24584... \n20 [733457c1598a18d306bfe0827f58d38573d2d35a4e98c... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00x9124d6592264ae9e6693dfa39b8f82f16182419c1000000[78900d7c06c43ae20970087421f80e49257815363f6a3...
10x042a2bb0e4acd457bcadda6e05827aa83ebe91fa1000000[d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114...
20x0329bbdbf79eaf87d8d77ecb71f7f8d8165443591000000[9d5777f2aee55468fcd9a426466d35917086cc43855ca...
30x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a81000000[5e42909234f9266f1a6cac6f517ca7971472cf36a9308...
40xcd012b8e0c4a5bd5c9283a0a4281ec553420d1491000000[d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5...
50xc45e14572ad2ec57da27faab28919bbda692037e1000000[e9774d5437498124573647289f2644bf38883f338f882...
60xb66bcd3431cc5b1999f98c608963fa9ff2a5d0d21000000[3030215ce1bd034297d5a9c5261eb17c827fdfebf7e83...
70xcb6babdbc3dd4f702237dfdd644ddbc676055e861000000[b498a35a47dfd85c3f4e59859952eb3d24041f4deb0fc...
80x1b15c1f4711a8f32f299ccc6121bcac89770a13f1000000[2c95a091c7f94fc231386ca44cab8f7db16da40dc54cd...
90xcc9f8f54c6f538c6c3a8dc58aef9c591362ae0da1000000[82773830b6b2d0bc76832c66fc9ac3e2fb9b6e6c84fe3...
10cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl1000000[30fdf3cb4f18b08a20a2db3acc5ac961095089672200b...
11cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy81000000[c571aa4a3bb95f180e8865ac710746125a1d2936940a1...
12cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw1000000[d560e34d04482e9002c51c4155cc578ad1083221e4d87...
13cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x1000000[97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640...
14cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca931000000[1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922...
15cosmos13f4sr82dux0kfu7uma3atv7frhzx57gh0g37c61000000[13f37008c6c89394e615b6364285ad49bee702aead436...
16cosmos1pypc2s9dh0f6yp0xcqwjap99l5k75qgmzezq4f1000000[7e9525a33b54415b76ebf3ffafa075390d3f2978b0db5...
17cosmos13ugfw2hr7s8f0yttczg8e2v6v04dlwwaqrvxaf1000000[87e33d647e99fb3b55137be5085df925d6a2281d6cdc5...
18cosmos19pfkg9t5nvsmmjffsjv6k625xy98esgu426c6r1000000[f06c989e17e5be69f92632911aefe6c0cceeee318a46a...
19cosmos1kzrdznpsuhj8scw8p734eex07g0779vry46una1000000[2d45e290725a0cad1c162b89cb246f4ae12aaada24584...
200xf2749114feaad68854e01c8ee762c7170532fdfd10000000[733457c1598a18d306bfe0827f58d38573d2d35a4e98c...
\n
" }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -312,6 +274,7 @@ " roots.append(root_and_proof_json['merkle_root'])\n", " proofs_df = proofs_df.append(pd.DataFrame(root_and_proof_json['proofs']), ignore_index=True)\n", "assert roots == [roots[0]] * len(roots)\n", + "root = roots[0]\n", "proofs_df" ], "metadata": { @@ -323,14 +286,14 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16492448010 QmWJabGXjQzQGBaufL4G52uWJ6pVXk6JAdSJ9FaP2er4HQ \n1 1000000 john16492448011 QmVd9z3xpVuteLHfGxwyuqZ59RbqHJvo9rTnMmJydm2KFH \n2 1000000 john16492448012 QmNP5sKxtM4CSGf7kTiWofVRnaM1BLypz1Bzp938CaELQe \n3 1000000 john16492448013 QmcgdRsZ9zhbwWwzk6YvjMPRPvAAPS1bHtCNyXcA8AWwNc \n4 1000000 john16492448014 QmZPLhT4qBiSHndYTLoW3uRyBWZ9RJqBUEceJDFju5FZKD \n\n ethereum_address \\\n0 0x9652c5b6b5fbb66725d04a9c60910bddeffea626 \n1 0xc054139731e52960f8074be8a5e95f3fcd721cf3 \n2 0x28ad7d9904c8b3e114251b273e7d5ca5a875110c \n3 0x3bdac6c42a44eb2945089ce04c2ae76d421b8e32 \n4 0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a \n\n ethereum_private_key \\\n0 0xc8a81ae383de21ab9222b3a7c36d4851a481371e314b... \n1 0xd569412597b83e8cc22d2d5afda4ca5c72e45e44f8a9... \n2 0x201c6d3ad75b666634d4f6775719ee6bff005428d8d5... \n3 0x7b34ba8f8da648fd458cb472e219cac67aeab9528c82... \n4 0x232603ff11610671a4c9ab8a3268ffc13caba4eb714b... \n\n bostrom_address \\\n0 bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 \n1 bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj \n2 bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu \n3 bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav \n4 bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3 \n\n cosmos_address \\\n0 cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz \n1 cosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4 \n2 cosmos19wakfjwwy2q2a4tt040zwlfje63hhgymy3vujm \n3 cosmos17nvgh8e4628962yd08zdygpg77g06qvf0v60rt \n4 cosmos19xfk4fypjdvh7klus3sqs6wjvv0frw8uaps48k \n\n cosmos_seed \\\n0 know welcome original south crane number blast... \n1 swear jealous fix wait duck gossip amazing loy... \n2 security ladder shop brush sauce edge category... \n3 horse file tissue valid tomorrow liar genius c... \n4 spider mushroom page length point tenant plug ... \n\n message \\\n0 bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49... \n1 bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj... \n2 bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu... \n3 bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav... \n4 bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3... \n\n ethereum_message_signature \\\n0 0xd4761ed5a2aaaf39b1129b488d5d674b395f8d43b494... \n1 0x08c64cbb5f56c4a68f310fcd76d0d9580546c74800de... \n2 0x8b9f2830d4eb5142c14f0fd894a0f6b2ed0d912adae0... \n3 0xb03719a1aff6edb9a1d65d9873c32bec9ed9301a20fc... \n4 0x72b967a3bd50e7a7f3540caf4e91d3342ac578b7df06... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'Ak2zZhFmb277JrYppue8USwsUAxu7RTK9... \n1 {'pub_key': 'Av+Omf/jShJAbKSzmeLoXMpfkCPOO23Ok... \n2 {'pub_key': 'A50DR3BbqdA7GRRIe3p+whxcgy6Z7lYzU... \n3 {'pub_key': 'AhxaSBthlXKR9s6G5vWlAMotKdSR3ftR2... \n4 {'pub_key': 'AxUpfJBdo9SaxS06HZ/Ll8mkSsttxfhCe... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQWsyelpoRm1iMjc3SnJZcHB1ZThVU3... \n1 eyJwdWJfa2V5IjoiQXYrT21mL2pTaEpBYktTem1lTG9YTX... \n2 eyJwdWJfa2V5IjoiQTUwRFIzQmJxZEE3R1JSSWUzcCt3aH... \n3 eyJwdWJfa2V5IjoiQWh4YVNCdGhsWEtSOXM2RzV2V2xBTW... \n4 eyJwdWJfa2V5IjoiQXhVcGZKQmRvOVNheFMwNkhaL0xsOG... \n\n ethereum_proof \\\n0 [452b463358c489b9e0189b016b310080b9e9fbcd6beff... \n1 [6bb58e973986346c388792576715f282c70420036cefa... \n2 [1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4... \n3 [9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366... \n4 [c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4... \n\n cosmos_proof \n0 [b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09... \n1 NaN \n2 NaN \n3 NaN \n4 NaN ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16492448010QmWJabGXjQzQGBaufL4G52uWJ6pVXk6JAdSJ9FaP2er4HQ0x9652c5b6b5fbb66725d04a9c60910bddeffea6260xc8a81ae383de21ab9222b3a7c36d4851a481371e314b...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtzknow welcome original south crane number blast...bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49...0xd4761ed5a2aaaf39b1129b488d5d674b395f8d43b494...{'pub_key': 'Ak2zZhFmb277JrYppue8USwsUAxu7RTK9...eyJwdWJfa2V5IjoiQWsyelpoRm1iMjc3SnJZcHB1ZThVU3...[452b463358c489b9e0189b016b310080b9e9fbcd6beff...[b4ade17f02ffae186abf1aecba188bc31ebc4b8896f09...
11000000john16492448011QmVd9z3xpVuteLHfGxwyuqZ59RbqHJvo9rTnMmJydm2KFH0xc054139731e52960f8074be8a5e95f3fcd721cf30xd569412597b83e8cc22d2d5afda4ca5c72e45e44f8a9...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zjcosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4swear jealous fix wait duck gossip amazing loy...bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj...0x08c64cbb5f56c4a68f310fcd76d0d9580546c74800de...{'pub_key': 'Av+Omf/jShJAbKSzmeLoXMpfkCPOO23Ok...eyJwdWJfa2V5IjoiQXYrT21mL2pTaEpBYktTem1lTG9YTX...[6bb58e973986346c388792576715f282c70420036cefa...NaN
21000000john16492448012QmNP5sKxtM4CSGf7kTiWofVRnaM1BLypz1Bzp938CaELQe0x28ad7d9904c8b3e114251b273e7d5ca5a875110c0x201c6d3ad75b666634d4f6775719ee6bff005428d8d5...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vucosmos19wakfjwwy2q2a4tt040zwlfje63hhgymy3vujmsecurity ladder shop brush sauce edge category...bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu...0x8b9f2830d4eb5142c14f0fd894a0f6b2ed0d912adae0...{'pub_key': 'A50DR3BbqdA7GRRIe3p+whxcgy6Z7lYzU...eyJwdWJfa2V5IjoiQTUwRFIzQmJxZEE3R1JSSWUzcCt3aH...[1c53cdfd53f1cb5e243607dc02b7821c3d2aa9d53d8c4...NaN
31000000john16492448013QmcgdRsZ9zhbwWwzk6YvjMPRPvAAPS1bHtCNyXcA8AWwNc0x3bdac6c42a44eb2945089ce04c2ae76d421b8e320x7b34ba8f8da648fd458cb472e219cac67aeab9528c82...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuavcosmos17nvgh8e4628962yd08zdygpg77g06qvf0v60rthorse file tissue valid tomorrow liar genius c...bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav...0xb03719a1aff6edb9a1d65d9873c32bec9ed9301a20fc...{'pub_key': 'AhxaSBthlXKR9s6G5vWlAMotKdSR3ftR2...eyJwdWJfa2V5IjoiQWh4YVNCdGhsWEtSOXM2RzV2V2xBTW...[9561ca1e1eb6e270b103585aa8c0072abe634f3fe8366...NaN
41000000john16492448014QmZPLhT4qBiSHndYTLoW3uRyBWZ9RJqBUEceJDFju5FZKD0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a0x232603ff11610671a4c9ab8a3268ffc13caba4eb714b...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3cosmos19xfk4fypjdvh7klus3sqs6wjvv0frw8uaps48kspider mushroom page length point tenant plug ...bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3...0x72b967a3bd50e7a7f3540caf4e91d3342ac578b7df06...{'pub_key': 'AxUpfJBdo9SaxS06HZ/Ll8mkSsttxfhCe...eyJwdWJfa2V5IjoiQXhVcGZKQmRvOVNheFMwNkhaL0xsOG...[c6733966b53fd8e52381b0ce9b7ecc5b2625aaee79fc4...NaN
\n
" + "text/plain": " amount nickname avatar \\\n0 1000000 john16495703800 QmegFZS691C4pJFaFS3NVDNLd5PtjmMiJHJKtqzSsz2tBZ \n1 1000000 john16495703801 QmbAqD21zVJD6D2kvoGnV1Fb8T5XKUG81V8Y7iZVHnpisC \n2 1000000 john16495703802 QmdYTELFKWGpiZ6Qaf6bDHavRMrJ5nmqMTc94mwtnNzr6M \n3 1000000 john16495703803 QmTqzfWV7DsGQsyoMHJTVBRkDtKBEjy5hPErMRfpbmimPm \n4 1000000 john16495703804 QmNWiHGs9WjmzbcQz96fugBm2Bu6CR3uZVsMuiM1tr4wYD \n\n ethereum_address \\\n0 0x9124d6592264ae9e6693dfa39b8f82f16182419c \n1 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa \n2 0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359 \n3 0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8 \n4 0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149 \n\n ethereum_private_key \\\n0 0xcf156a52fd254b48a87c77926630089376a2e6d507f5... \n1 0x46a7e94a530954956533e1a923d07c212eafc00a8d23... \n2 0xcdf21ac40a23b30ac2208d9e3f72c7b798068df70f39... \n3 0x08669cd3a21d69b25991ac891c5d1529b64fc893f846... \n4 0xb241a6f909672108710c007c1ea3173656139243deaa... \n\n bostrom_address \\\n0 bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c \n1 bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q \n2 bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf \n3 bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp \n4 bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk \n\n cosmos_address \\\n0 cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl \n1 cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8 \n2 cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw \n3 cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x \n4 cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93 \n\n cosmos_seed \\\n0 mixed february demise clinic master race famou... \n1 quantum seed good glass spend spread usual sur... \n2 lava protect work pulse guess toss rocket volu... \n3 medal medal pull rule blur result gift agree g... \n4 hope someone gown grain execute reason chaos g... \n\n message \\\n0 bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c... \n1 bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q... \n2 bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf... \n3 bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp... \n4 bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk... \n\n ethereum_message_signature \\\n0 0x9a2bbfc7ab3c7d4ed8910b0a495931c8a055c2fc29e7... \n1 0x5297763d57331039613520d1de1c9f94b0bf104d6fd2... \n2 0x3b7e242a976bd013862872532234536ea2e3397d3411... \n3 0x90d40af4947b8a499c22c79e1ea29cea981be1f819db... \n4 0xcc8656d43b15788c5e0400596f5cebd760da1fd0b75e... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A89DQdUqRt7dzpi8/1Jxyb1hh+a6Q0bGo... \n1 {'pub_key': 'At5DOzq36uQeOGT//9kV3HcsPmy4HTAsO... \n2 {'pub_key': 'Aph+/Mv0rOA0Ft+8iP6s7UJqTdOXK8tsK... \n3 {'pub_key': 'A055jXQh2nQUJQQdlssNe0ZWQf9KRkUba... \n4 {'pub_key': 'Ao00rX4/WgQwgoR9wgwOTEgNq5mh9qfDI... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTg5RFFkVXFSdDdkenBpOC8xSnh5Yj... \n1 eyJwdWJfa2V5IjoiQXQ1RE96cTM2dVFlT0dULy85a1YzSG... \n2 eyJwdWJfa2V5IjoiQXBoKy9NdjByT0EwRnQrOGlQNnM3VU... \n3 eyJwdWJfa2V5IjoiQTA1NWpYUWgyblFVSlFRZGxzc05lMF... \n4 eyJwdWJfa2V5IjoiQW8wMHJYNC9XZ1F3Z29SOXdnd09URW... \n\n ethereum_proof \\\n0 [78900d7c06c43ae20970087421f80e49257815363f6a3... \n1 [d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114... \n2 [9d5777f2aee55468fcd9a426466d35917086cc43855ca... \n3 [5e42909234f9266f1a6cac6f517ca7971472cf36a9308... \n4 [d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5... \n\n cosmos_proof \n0 [30fdf3cb4f18b08a20a2db3acc5ac961095089672200b... \n1 [c571aa4a3bb95f180e8865ac710746125a1d2936940a1... \n2 [d560e34d04482e9002c51c4155cc578ad1083221e4d87... \n3 [97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640... \n4 [1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16495703800QmegFZS691C4pJFaFS3NVDNLd5PtjmMiJHJKtqzSsz2tBZ0x9124d6592264ae9e6693dfa39b8f82f16182419c0xcf156a52fd254b48a87c77926630089376a2e6d507f5...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04ccosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutlmixed february demise clinic master race famou...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c...0x9a2bbfc7ab3c7d4ed8910b0a495931c8a055c2fc29e7...{'pub_key': 'A89DQdUqRt7dzpi8/1Jxyb1hh+a6Q0bGo...eyJwdWJfa2V5IjoiQTg5RFFkVXFSdDdkenBpOC8xSnh5Yj...[78900d7c06c43ae20970087421f80e49257815363f6a3...[30fdf3cb4f18b08a20a2db3acc5ac961095089672200b...
11000000john16495703801QmbAqD21zVJD6D2kvoGnV1Fb8T5XKUG81V8Y7iZVHnpisC0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa0x46a7e94a530954956533e1a923d07c212eafc00a8d23...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366qcosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8quantum seed good glass spend spread usual sur...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q...0x5297763d57331039613520d1de1c9f94b0bf104d6fd2...{'pub_key': 'At5DOzq36uQeOGT//9kV3HcsPmy4HTAsO...eyJwdWJfa2V5IjoiQXQ1RE96cTM2dVFlT0dULy85a1YzSG...[d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114...[c571aa4a3bb95f180e8865ac710746125a1d2936940a1...
21000000john16495703802QmdYTELFKWGpiZ6Qaf6bDHavRMrJ5nmqMTc94mwtnNzr6M0x0329bbdbf79eaf87d8d77ecb71f7f8d8165443590xcdf21ac40a23b30ac2208d9e3f72c7b798068df70f39...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnfcosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdwlava protect work pulse guess toss rocket volu...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf...0x3b7e242a976bd013862872532234536ea2e3397d3411...{'pub_key': 'Aph+/Mv0rOA0Ft+8iP6s7UJqTdOXK8tsK...eyJwdWJfa2V5IjoiQXBoKy9NdjByT0EwRnQrOGlQNnM3VU...[9d5777f2aee55468fcd9a426466d35917086cc43855ca...[d560e34d04482e9002c51c4155cc578ad1083221e4d87...
31000000john16495703803QmTqzfWV7DsGQsyoMHJTVBRkDtKBEjy5hPErMRfpbmimPm0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a80x08669cd3a21d69b25991ac891c5d1529b64fc893f846...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mpcosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9xmedal medal pull rule blur result gift agree g...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp...0x90d40af4947b8a499c22c79e1ea29cea981be1f819db...{'pub_key': 'A055jXQh2nQUJQQdlssNe0ZWQf9KRkUba...eyJwdWJfa2V5IjoiQTA1NWpYUWgyblFVSlFRZGxzc05lMF...[5e42909234f9266f1a6cac6f517ca7971472cf36a9308...[97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640...
41000000john16495703804QmNWiHGs9WjmzbcQz96fugBm2Bu6CR3uZVsMuiM1tr4wYD0xcd012b8e0c4a5bd5c9283a0a4281ec553420d1490xb241a6f909672108710c007c1ea3173656139243deaa...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmkcosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93hope someone gown grain execute reason chaos g...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk...0xcc8656d43b15788c5e0400596f5cebd760da1fd0b75e...{'pub_key': 'Ao00rX4/WgQwgoR9wgwOTEgNq5mh9qfDI...eyJwdWJfa2V5IjoiQW8wMHJYNC9XZ1F3Z29SOXdnd09URW...[d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5...[1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922...
\n
" }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -374,7 +337,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "outputs": [ { "name": "stdout", @@ -432,7 +395,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "outputs": [ { "name": "stdout", @@ -474,11 +437,11 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "outputs": [], "source": [ "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", - " return execute_contract(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", " contract_address=subgraph_contract_address,\n", " gas=600000,\n", " display_data=display_data)\n", @@ -505,6212 +468,272 @@ "pycharm": { "name": "#%% md\n" } - } - }, - { - "cell_type": "code", - "execution_count": 11, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract address: bostrom1g3pdg6xp89ehqlha8tshtsem4trgqcg4qd9qxfmc6u8g6plj7ntq32x2ey\n" - ] - } - ], - "source": [ - "if INIT_GIFT_CONTRACT:\n", - " gift_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", - " contract_code_id=GIFT_CODE_ID,\n", - " amount=INITIAL_BALANCE,\n", - " contract_label='test gift')\n", - "else:\n", - " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", - "print(f'Gift contract address: {gift_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Initiate Class of Output Parsing" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 12, - "outputs": [], - "source": [ - "parse_output = ParseOutput(ipfs_client=ipfs_client,\n", - " address_dict= {\n", - " gift_contract_address: 'Gift Contract',\n", - " passport_contract_address: 'Passport Contract',\n", - " WALLET_ADDRESS: 'Passport Owner Address',\n", - " name_subgraph_contract_address: 'Name Subgraph Contract',\n", - " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", - " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Register Merkle Root" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 13, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: register_merkle_root\n", - "\tmerkle_root: b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860\n", - "Gas used: 117,294\n", - "Tx hash: E3CB0B2B0008DB86095BE8E5C3A05FA9E277AF2326C3D0D47BD2CC6024697F0F\n" - ] - } - ], - "source": [ - "root_register_output = execute_contract(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", - " from_address=WALLET_ADDRESS,\n", - " contract_address=gift_contract_address)\n", - "parse_output.parse_contract_execution_json(root_register_output)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "#### Get Merkle Root form the Gift Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "execution_count": 156 - }, - { - "cell_type": "code", - "execution_count": 14, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract bostrom1g3pdg6xp89ehqlha8tshtsem4trgqcg4qd9qxfmc6u8g6plj7ntq32x2ey\n", - "{'data': {'merkle_root': 'b19dcb63a9fb28557e979d999eaa48dfe1e2ebd38f4f3dc8f472c52837887860'}}\n" - ] - } - ], - "source": [ - "print(f'Gift contract {gift_contract_address}')\n", - "print(query_contract(query='''{\"merkle_root\": {}}''',\n", - " contract_address=gift_contract_address))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Send coins to new addresses" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 15, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "coin received\n", - "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pkmdt3jga70afwx8u05quc0qkzuudr8lxm6asd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pgvgd7lszh0mm4vzhrwud4h7sfsfzpgyz7lj6k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jwtwne35zczy9wt0n4srw46yfe3ur5z7uzd0zk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gh0yf9tngc7gmveh0q7clf73qvqwrqn6axymvf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jczu2lqc9tn3tx9tjts8dqqgpzq7agdta7w8j2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom150ewsdjjzv3lf89ws24j36grtuc8rqexa0n76x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1aj6swpj9kzhqqzadypgy8efcztrxcrfk3087s8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gynv9zuvcx77v58jdefv9lve7r39qc57wlq0gh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1a9z6x2w2m98d2f8p7402zu2wa5pgy884x24ezm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r68k2jsqxwnd67qcyvz0tusjzgd02eusrhqwz2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10xu9l88v6asa5hx5dta3npuwch3ru424lqazyq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nwu7t3zkr6lmdv8p8h678pjkpj3tasdttehdvj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1783mzr7qg4l4xvheesmv9nkesz6mcn72d7lhru\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1873t7da09taumkd95etmvsq650hk78sj392pyn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19ryhk9692hterukzpq7efcvkns7ccua4kcf9hw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p6sd3ru9u73ulm7luc3thwl53n4fupg8yvyqkr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xxz0jfxswpqtg60va8l6wgu2zsyg237cke02tz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1k88adk3enw85smyumcr9u24y5zpxdap4znwngq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15f6rqmc5w6jurfrk7xvr3gmqmc8zgl6929wju0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fqs05m3rhtpr2526p9qfz6fgaayp0gmuycfx5v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17r05hh26uht0rxajhu2txtxejx2ga3nl5jlfhh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19q3kyga6wydfcgvhynxemzr9ajjqcjgg9nzyfk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10mt6mw8p5pll6h2yspjaqdq9y3js0pgy4gn43p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gdcxhvap7gl8xyg8zs77ee03edjslfq4xlnf6x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18yz235pp777rvr2wv62qlqmd2zmpu4a5uzj9k4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gghry9skawq9s69ptrd6dcgeykzgwxa2lvpzj8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j5wp8d30zt5gn7c9qe8j7enexg2wsuuqwqc8gu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u09l3za8dxvuxs93d6lvd785vyxdwzdkdr56xl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lqvs6yu9t0fgkffaa6pcpkclwrhpestuqdxyce\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17kuen92pt3j32yl0xjseeystwqvxlakaxnmhs9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13wh7h9wdpn5m6lveqp7f9y6jl8kkrn5arz88au\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14e7x66gtngtcxe73g6tvdy84wefzwwnhsvcsl8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17sqyk6vgtv9e98qhte3gq2psj9ewte3ehvvx3z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1radx6ajpyh35mymxxsl75alqm9fktxrrthxpur\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wh8j3s8gzlcxk8ejzgh7uvq03kelu7zaar25ek\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1csfcj4ykz26aycexwua252gpymtsjrcwxufyk6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16dxnwpg72wszf0u0llzazsu08vulg7atmh2pmz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w4d5nvpnyudrz9mg3a8yserjq2r9nmepvrjh4p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dn7sdu9upnq4u89j9xpd6jnlsj9pkawzd0w4ql\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xyzdxaydpv6gekfktge69383r3qx4t32mvlw5z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19wexkplyvatfz6fyevlkptnq3s2deap987684w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10w75az8kcnt0zw8zcaa4sh9ygdhghpydr4rszv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1put45u0k0qjecr0234tmleysapw0xtfedwwsz9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14usfh7dtfk35fymrrzh4m0wm6adcml8dtdnvgr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13ej63hl3ud85vs0lrcj89umyjj23rrhuhvzdux\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zhur3ey3w8c80xdtfgqc6h2jxujpav4lrfwf9h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kvtc2sqy4qls6h884z5uxjht65ltyuqfccd0ua\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vkmmw9z5nr7eflknqgapssmj33uuxtpj5fatuj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pkey7e4cluj0834vvxskmrvjqq4qf7rkdm3kpp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n7tult5ktrm59l6jfchjpfj6xdcyglv73slam8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1a0zkk7kkrqazh3ssgz548dhlh53jt6e2czvwxk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uk3fcslrzygpmusqz5yx0fymwyf5862u3gutsp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13d4gqy047q4mw8dvq53pffup8ayujlmktfwysm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vpjq60s62ke3rntcks5l4jcxht3an6d840mwjh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1s54k099qxe22mnxnal8et572um5ne7f75zyapy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17clpjxe7pgx22w3r65apch5k75rpxv6y709emy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vk9ec4z82yc2njsyh6hxmlsptwwal7a75j9tz8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g437fxncnap2dlg7yxydag4a3wuwxsgmkyyhv2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xl8fu730cmlvnvugp5xvaqma0gtpv4nzactffw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wysr237l8lsdcemerlyhps9pq7y0k4yqyupckl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10mfqvzjt8sr57vrpt0zfqf0lqya0rdkqjj5j74\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18aplapdfnjxkg02dm869yfycsjzl5cqr6swqx6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zmvwylddsgqyvllcsetq5m409l5a3vspms5wdz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r6rj7gapqct2g5jdqhjgg5ersn6jcmkmrq477r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j6z2w4alnq06n6jn5kc9rxkc7avm88pu2g7fys\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16mvylptyn8jcepe96g220wrnezv05j4egk3cup\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kjcqcdmzrht8qmhhj8ethnnmg5fxq6v3htm082\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xuk4h9tj0uu4h3t7ykkr020zlzvv34j7ngdaq4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u2nhevtfwl7fxjxdp85frk5a06nrh5764xrhns\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wcuwxftlr3rtf9thzrxu0wahq3d3frjc2jau07\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13rjj5lehf2yfm4vpeh598xsuuf9hadl5n4a0ed\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sxs0m05m8twvgl3sf9y8pm6np4w0kmr7emc80w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1s99u8qq6u3trxcyq8uw7g4fh5jkjkdxge0r36a\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t2am49htxga7evx0dgm0lzfxhlhmqwnncggrx7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mld677e80den86sqp7ye3u5ju72uklz9sx5cvf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tkxrcw3uy5asfgwpftnfd6w4qn7scpsjjnzdfj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mtgxv0d66xnwq7uszp3a9fkw6rfcden3v78ulr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tepjmq8nfjg0l2f8t0vaeagpjwxt0g6dlupxlm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uk8zdllpaxyamg26amhgexc5qtja5pvav7kg0y\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qfwzwgu44pnq34gw2ry9hpnr9rnt4clkza8wwe\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12ck36hwt0xv4qeg0rqjeykwkfuvz8uscrnq96p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tma6emracch0s4gdhtffa5alsaarpnc6h820fl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z9aay4l4pgtnujdcjsxd9lnrtskqhnt07unl76\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pcwdkcsje4ghchhuejuat92sg8vq2ucxy9arsa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z9r94hx0dsfrkapp8r5etazk2spwstzd8fq6us\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yn9c02mmf4nudxck97dh77a0aqa2k5lfazg4uk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hq93p4sz8ewmuu9wcnrurn9w8ythsyhmxxudqc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15rdm2u9v69nw4d08f2qqq700z0jxqulfqckuxj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uq7yve8eywnawqhtw0csf8rd95arhc9mqkdwvd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1x8q9gcpaduqlm43upqg2ns2eah9nstzxsrzh9w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gcjk4ydxjw8x3c36she4luggqpjkywhjh8ncs5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16wxqeclpd5lzm3cpt7kh3anhpet8v6jcl6qtyw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zxd0t6tlp4ryrav26wsg3yzxfn7uqmz52qsvt7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom178d2relx58yu9gumdm5hudepujykzd9zkvdj4r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1etvj9n5pgptde9werj2cxwp4ry9weer4f5cyrp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jn34hsajz2jwzzsh4af4lce3hyted8elahukp5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eemjzdddu5n7gwydh77zr7whmylg80j2v03z7p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xf8xfawzpquulwp0f6z0kfj3fss4ytnffrvlvs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ua7gnmcusw3aju0hhajen4dsgardgtx5as2ult\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15fajgtvmj9h98983uhskszx9p6x5h0855cgugs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pvmfxq9wq2425xa8zxncv5rrhm086q8c66ta9t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r3cpd2c2hhv5qh9hqzs4mntxgrzskpy425kqu0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gjq4fgmxdcy80aj0w7whrrnmle8me2aetnelua\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10nug4mawjhulqazac2u4fxzqmnjmputwslvj9v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mngmkfhs5z2vz69dc3vzwykce75k027wmcgdyf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jeljmyn972scjc0ua5s2pghve6sv34mzsyydg0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dqjy0cehwsp7xkmlc7vdug4z2dcjmwe5994vxc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ctgdt08qjj7ye8z70gaacu7rncd0wy4yfl3qw3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yt3hn5x92qmy7jdneuwxnl25d9vsrpppc3n2pl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1znfv4scakeamzeuttjt0c5v62p2evr8hs75p6g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10grawwzrfte0vwvkz68f846l2apwjf4gxmdd38\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19q0vq4x6fyjt3gw0h0znwyy7m85zgdjtvn5j2g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom178q2xldeaq7qc9d9x7v6hp3l6jv02m98m4wsmq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sz5sl9zhqf6gu4juenvksprgd66jyxfw06s2n8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uvwgpml6y59cgdhuj9jep4k793zt75nj73n9qd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q5lcx6rj2249qar8wz44fvwz7qzc8cr9jdvfd0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12uttyfrk644ev3svycpdmgt72mwf3rvre4n2nr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1m2xpnh3ra257w4p3dqdpxuk5xnz7lp3jqguwgp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lk7rwnw8w7tcm9g77764t45t8l0tfxg92t2p9j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12y6zds7tx9fyj0296el07ndww7asqygcfsjnvk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xt2ku408tqcml35fnkc96p32zgsdsk0ahn967r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d0kwgl96ak0xwmzlltsmvyxcm2ls74ktww34u8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gumd3adaejgnzzzft8cqex5juq5zy2jq4tvdtl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d7lknng2whr2ygg9lplwcz7ghnwzd948gf3yhq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18nmdxyflht3w9fax6kx5u0k87r4thy27606s0v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nthl03dc9nywkl3t8gf8m5gegme4dnj0ve47gy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1an69dy8fcynu2jf6svrxhhnv3ng0hqjamwrmma\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zlejqn3q67x82s7q9r3nt699h5qe3klazvlqtd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cj03t2qpcr369l0makk92k57jp0fr0ehpkq6qa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vclngs2032h503mr5njxwszus4kujnm2a5hy2w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18tpr568w0yznet39namnvr6gkd52js0hapc5x9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dn0tuap6p4up8zq9rrxl2hxaagztqdf6296qrt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rn8t4xfhr7r46rvkfgr38ds735ctveqpqrgkzq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom127eagjfpaveagazclqj6qd40h5ffxfu2suwxme\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1twuk357xcxwj0tqh0r8ja282ff936rcen5gyqr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1szqqzafdl7m34ua0j7drt6pwr84g9pqksqjrc5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wsh8gu3z75l8wy43num2puegyu84sdy20pj4my\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mwlc8ahly7kw5wpmvrc7x597ut844xar7yp39l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xmctcwx3n2arrrrue8gzlsfs0a7myqnhsw5222\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wmk2hmav3wea4rhe6tfuecqdk09d9mu9gkksj7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g2lmhj9jyqwsrjvpyuknsjfp7xlajwp64nk9u4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17hngm9snw5wptllhwcxtnnr3s5s7mvy7htyvzk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w9r7vvhkepxgmju2m5tfnwdnf99xdztr8ak2g9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eqdlcksfz353mj4m73nvd3amr3cg3n4pkumz95\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1a73432ykufe8h2vwjrqr0dfkxhdurs4hxxfk9q\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ve7n538nmswptdwmhfemxy09ex45h7ey8hkey6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17ccefdz0qjca0qm6znvcqus6sye25lswpqd20p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12wzpn0ymfwlpcx3k42qw504sn8cjcrhj8ew8vp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sx4r5w7trrehymfann37dwcr58guw5y0yhdx6v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qr0nkr4095xfzd9adhyus2gf09ju8y9vgj6kkt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1x7t83pny5vj2pp0assal8mmem9mnzdt9xdtsh9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fn4p8gessrg55vspaxy7ydf48du0s62zxh7y2n\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yfngh9fc0wjcstcpsl7wchzmnhws6n3jpjxyk7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nvwvw7qhvxef40p8ymy8tmj6w033z7qzlcvqam\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13u7fdv93pz69ve4huakftnuknwaeaxvczkx20e\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13uejqe2sqr3daecmm8vyhwmntjlzhfye007wf4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1swffxhtd5q9qd5dtl4qgld5lg45lnvnm5ul6az\n", - "\tamount: 1boot\n", - "\treceiver: bostrom188fzwzfrpxatqlyz4ascmuxph7n84x3rqqmw56\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uh7nkhz67nlpt8r6xrw82mlpy52v4zjdeywynd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom133nw2rfwhd4jk8rkzl7haha794qfcuezcddr04\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r854fy2zm9x4njf7dw3n6sc4ghhcgj3c50qdml\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lkhqcvettfmt8vqwv086s6q7llu0at4el2j05t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1urp5xjm3s3ujuap5ffe3wlry99y9zvhu0t6eg7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fcxk5ez2au8dunkkq4r53kmv0np60mf7xtpzdu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18htxk7d5vc7fwmek4lqm8qfdfgpf4u0p5s55rx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j39fp37rqgu4fvxd82fhsdxjpe7r6ekzgqj6jx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p3f6rdtj4zdux962qwzvqmlclmhj9xd42h0ed3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g7x9gccv0zsg5mqup8m7hm40zul6ft03lgylnc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eqcn7gu0secln6klc5qdxp02svj65vj3cl3365\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pje66rjuy8mjyyqnkrvzjc9lrvax0cjwtpf0vq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cnck3ud4fh9dg25p9wtjhprnq3p0ptuf5fpp8j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xr2uuj3vwu8q4745gfpj2wjc5yvvmhqgssh7r3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12mkgdlfc42th7nlg6a7lpjj4q3fwj05gghmdv2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uesmlkz0eks8jgjkmqj4czkltxvyhhfezgpzum\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t7gl7u2hlq2cy3urau75xn6auglay5h8hsx5rw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1x272jlajgnwxngvm5ld46u52gmylvxjy66shpu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z0hwdug06j8ssmc9pvhj96578q8xhvxw7qff5v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1aftuzmwn3957w6u893ap34gp86jd4tkyes5ved\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yq64tcpxxe3egzay46yupa0h8q3eakpaqwnxvn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d3cwhcvmgmvd7jq72eyxfvmcgvjd0xm2ruzkss\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12lnefgszfugjrd75hqy399fn73smdhn6qvmkd9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19rdue54zz89ry8wyjavns3tj49sdglljsxc7fn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y3sleqy5ml4fxmnj2egw5z569ryjspu2wz495q\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dhggqcmsw4clk94hy95wksc9kghth76uk26fmv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l3dgy77sfzfu3dk2ttjy92dzhjx95yvh47anpz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rfe33s9ap9r7dqgqt2x7vuz9jgm4zx74zeqtrm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18p56x0qf0sx6w5keghkk7f8ra7tv536qzrht6z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gguq0x89pyq24u0ydvlduuvz3xvlnmhzldy659\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1s5smwjhumxs36jfy6j9x3yetlffdeep8x79cg2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fpa57plps3g9stymcdx97xr89aygltumld5xex\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13pd9jz8ct3u0e7fq6q79yxfy0f56pzm2uz6s3m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gmrq5cy383wp5mu93q8xrjqu8mtlc7z4l85n8n\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19yp2lq9ju0hy3lrxfu9d9zpdfz77j7dhg53usr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17zded2302qwsqf6q0en6azdmmqg5mfmmy7a5t7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t6z8uane2kgflcdl0ye6mnj5w9w0ylvm5jettn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ja7p7zw5ucpt4x5k7e55wwhtr4m35y340273dm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vcp5hcz7tlc784c9xaf7y8gggdpuryyt9zc7fa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pf6r3cprm6p5a0f9xeg6y7037jy3rwu9c7u9tj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1alf4qqmfkn0wksxkzpx2pkh9qdrev0f7a2ysfs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cgzheqra70ar7npfm53atczrr8ym2ga4hxkcps\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qkgf4u7g86uwfwsfdlfgxwsjywqxjze9yvdaww\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zmeem69s8et3mv3p48rq66l69jr3gxwwc7c4lu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tt99hwuuunp60agve9drfwac8wzgapsa840gyp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10mqmg0uzh63qv5df93ld6e554lvarwte0sj9mj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r82zdseaeyw92fq89p5c9nv9eqk6y993s0ucvm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1060q6um76nuh3pvp4r6cdxajhw7nd53emmymze\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18djqgvy9n50p5pwe9s0zg068mrkck70m3gktlk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l7e3xvjzfefqyy800rh80w93hjnd46j50sr0ye\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1npsv7hym66ea0ql2k08yqp70399dyva49xa7y9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hym58vzss8f88uvey95h2gdrpwj7553djcyc0g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13mlgzr0zx7gw8q488xhjevxm0460jtmrpg9u8v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12kypg82h4earh6m8w74w7hj3ud9euym6etu6e5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gud2acwe0zpr5860gkvwgsnp25n0l2z8z229pd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zhw0c7urhu57qgvl2atcxk7ew43c073jhgjnt3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qq86n5l93a4djs6ma5pyw9jx4r8f9pfff4m9gy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ugmkvwlr0g02rajj6tnk0p7emm8nj0mzsk9eea\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gz6gfrmn0tus8rk4ujl9stuz65zhry7nkny6ut\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u53ph73y9nn5hh0pyh3p7qsqdpq98jjg23kzs0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hyztum65jaqtkdlsxdzckh23m7y7z0gqyu8ku2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xqyxmwcwnaw0w66s9y5x44y72kk9x7x2cc0wsg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18uafcqkdcvnmel7879zw7a78w7kyl32g554kz2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1m0zs865m2yysmdw85e4dt3zw3csl4sstq9txpu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13p3nrzrj5p3tk7ajuq9qdrt43kkcahm6ahzhfp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c0uvnxgyace6ddz9sr6rf7e22yykfwef9mtu5p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eva5gh8fzrwz2eqg3wss4alpufhzhr2e5tfmfl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ejkq9fdx6rx7fgt0rh2g6cgfvf2ulecsgwm2mh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ch7rf9zy09hslfrequf3w4kc454lxmljlx52cf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c88x33q8rjkpftg2dzhze5l9t28szvqktdzlf3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g8f67c2vpc0q45gwfw3jjjqt9u5zcz5xl3r4wf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g32ljhw2z4r5rkwlfsywuyvdtc45d7m0r3g4vf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qcv209sdclc0qhlp0gmrv5l8pq89gxzzume68a\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1269n2apd3jszu5sc7xwnlk3quj2nka32a8qtmp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1aqqyj7hadf7z8f56uc2dh27v4v5uryecwru6l8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17z5efk2d87uk5c6qz4x8v7xasng2wu6lvw58w6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14wcz3qqglc3xtms3rknn5gxjuemjfaktcd40yv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1knmfjgmuz4l98mkvuqa2hm037wvejc6c940ntn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w27rqy9sf4e2flf6z6husn63mmlhqujl7t6x8a\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14xyqvg3779euwwwkst84aaywsxsmggqxf5kpss\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1f9xprxme98s2xxewhf6ync7g26ndw8t7lgs7kl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1udjt769paju5ruagt78jp2r0enmspcqflfh5hd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vyrkdvnelxzyd0u23mjw7l0uph9lzy67z973et\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ctkx4qa2vs62fx4d8h39rmd9q0dysjvzzwhk04\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kvxp92nyhwy922zrr5rchk5rru4sdt6m35h4z2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17evzl0d9a5px90yls6dq2ekpz0a43vp8jlegzv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hqle74egja0zwaanga63rq6s2hk4sgjl5alw3h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15ajcv8n9k5wz7h3u48pacwq8j58r2rvr3vl33f\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14wu29nr5vp5q2zrl2ygnerhs3hp866a4cacux4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom174q2p9ehm4ydntk7rhy77hs2kueg3mwnt20h5t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom199eyjlnj2wgwelpx8egh3quwt9s0vqfp4qgx7h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ashgtf3lsf2nfcp9x725ck9v8ctk022a7789kl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fp4a7n3q5s2ql0zj309udkr0myhry3qyxyhty3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wfqh5e9lykt04mssdgjax2lhd0pagel6ds49jx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16kjvyw8gpprpenrz4upqch54u698q7zalw84p0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19mduln93h8myzugt6xs3zhgr29nltpa9cqnmqv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1za0wrpysy4wkvqskekjv4g5ftxze8c8tnsmlvp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hmxaqwzlcz5qhgfdcm07c0dwuxtwvwm86mkgdp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uue7ltd325ct7k7yck9pz8pykhref4a4lne3aj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1m44n26mha4t6tt2t6yqgdh4que855awltxeahv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jv0rkxr3xmftfacgsqy560c8e4mkv5hnmqgdns\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pxzdgep63pqq6s7qzy6z26qyh24kk7ya45smp5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1waeapql09dkfn7y3p7y8r0hsn9jqpzgrqcqhsa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14z3j5xjff5w0mhdt9cjp5yf576ne4tahpyfn5d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15uafgasmjxa086lmgxhf3789k8enezwsv2hny3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l7q8ygdxdyslnna760xkylxmuju7apu4efdk4g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gueaqpa9fvhyw5js3ml78p338gwexs2szmkgxq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dlxpryc64ljy8ycnqed6tusv23vvzer4qtgwg9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15yz3frzr9896jfqscvgrpr525e2fte259a79cm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1znj847urese9nv696zj8zhxxnshas9jjxgepnz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c79sdr62gqw0c5vl6cm0wmw6nds4sfuuvdcej4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1a7weglfpt2m098qyhvtd9ud5uxqsq49cax6ml3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12p0k8wte2wczpp9zt637ml6vkhu9tj8j0kca6d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z7yw842j9k7t2lsmguvck0unmja3kex30uaauk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kp62twpdjz94dj790cwt47un6trycznxzypase\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14fj2n8rl8nrmxpvjt8ys4k28eyf595zq4xdwuq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xac4h96xgv6rsq9fv5pu3dpu4edrfsgxcvmasl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dt89326l9qws29pp9way4nk2crn2ag2m36dx5c\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gnngg6j26fs9wfalxx98h845s3ffsxzl8yhxyd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wc3wrtwq6pxkv458a6ywpxevxtm4qex3x507r5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eesvjw5vgpa4s2d0j4we8lnj72v8yhkv9cczy5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ca7j4uyc4hvpmfpdkswka8z5qk8hndc0jtpnpm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zpqdssdnj99ga2ga4n3g2gpaqurrvapkzsuryh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14unks6k2v2hd3zyssvel4uhfyrm6s3l9h64lzx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15pv8nu6d7j4a7ww7mushq0wgcl6rqlstk54hp0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eh00wu9m4ktcmgdgeakcdxh4d7tt7ual43uffz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zslykk7d4q6v2586j9z9yhzx0plx5a834x8gr3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wvk7dzpx2w4l686fv3j0hwdhj2c4mg4ymyet9s\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c8mg543jekf8w33asfrxdqnm8jhmqlzjuayvlx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13m8sk82c43gc2fxmmk23k6fny0d2zvhamx6nt2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dx66n2ly66yeymu7jk9mnlz6tfvnf2zy4daunp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom185gvs7lkl6z6uvcfdlr3u6yx8d082dn9z2eqe9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l32vtc6hs259a6xfwskhxlnr550z9nwera5mpz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hmeruspxkw2ptuwy4af9f5xhrt3jj9jxxnskja\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hjpgv89evmjctjhd3mw843g4a3272tayln28jz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g945f9hy6tzl3e3lkjvx8n5r3tjla6kfrsm9na\n", - "\tamount: 1boot\n", - "\treceiver: bostrom157h75vtll6pprzphzssqtzs3mmvtj5u2tf9u57\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1knzp0vee2lrujy7smhc6rvfg2572gceh2lgwf6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lp2yvc6gz03u2kcdtszqceff0eu0vnl6a23ahk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1952hfdkf0ex6q5m3vpaxmezcer665mu909xmvv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pq45p2407elzxt7rrdh7zf8pjquh2m2x6k3mq0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j5ha2l0ewuugp2f9vawy3x2edt3ewmt2pfmn7e\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cdzwjlexuytfw7hhan6m8tf98f743evxp00dxq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18v4pqyvn49j8qcvlpj3vmw9e6v3845ase542sq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom120rdmwq6hpjhl6d8qz4f0te39ufdqzygv2av6m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom127v584568v3c7fhevum3ppype8acsqmucm2gp6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z2zs0sx45qvaz59ppdqy3yz4n5k9a39d7jqplt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g6sx0lu4n23ez20c3xwtrpr62hn4utwkvkcpzc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19umnv32ek63rlyryjnpxegnzn05qy5ayhd75e0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12cy8zec7kc37d74624y7gf6use79ejyy60ue8u\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17swgkgvmllw2ngr520n7u2kfe6t5nlxfnc09vj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1e9yylynfckzftmjnkyftuxzgx4ap9kdp02az9g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fpdgwaqaxncxqjkz3js8mqg43kvj4mecshhlqp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lfsmp0pre869u4t8t5yqlr8kxv97ed8qg4d874\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qt687vprztzl79exp97mu2kd5a5vud2e0p0wqw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mtpq6h5qzdn07guyzn7yqcxf9czh5csp2y6aqc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16tfaxny8xamef04fwttckwpdt5cmr8r27c6vgn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u7rwkllwrd5shvced5jmzv056u57j5jsddxu83\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14fhg9xz6m9ckpgzjyf8ea202s4lygvamhrcj54\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g5n3j3upj7pj0tn63sqsn5qhmf0lj45snatx93\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jwfl9lsszatf7j92lq75x05v6a6heuvkg7e299\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19pf27lx79yvkjdtxepjy84eusv0chq4nfc8sue\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ednnmm8mzenmcyxzcmzeelknx7yrv74agt0hhn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom175tm4ugaf7texe8av85nehcf3wq9w2a0raeaw6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yxrvtxd0nufz8k8zh6eu4e9lml666z3vh75e4r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10c9vyyess0fptu6l9xn9xlnm4pyrk7smfjsp65\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1an9dkc54eadpl8zqlhm7hka5tkvn3gjn5e0ul9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t6vldxer7r2zq98xuy3c2ydmxwy7z5tsdf4vdx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n62fsqa6a7hq99aewgzgwz79cmsh65usau5lr0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p3lg0m0793cfqkny3wfufmfth7jys9r5u3gsym\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dnwrzpcyacv0gfv3za7gmn8psmr20w3khx2xle\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14zjqnlndlgl25jglqjvj7kxklgz5gvga8tcxj4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yz9ls0pu8hc06pjc33v6wj3zym4tc5f8ck2gul\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15lc6e8anzj3ddtjm7l4szz3fm4ns4ftnq90fgt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15pvr73e7vty5hy597t2zler0xktsds6yprdfqz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19v6f86y965fsg94xp0qjkm45kuv5twkzs4p545\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t7pfrtxqmv7wmtfv8ujls335y63etgu4jdutl9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p2cduzf67f9qqrxx696lf3p8cmazmpretak450\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ug94hk7nnh709wrf0avrv3d9s05cw95t0na46t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17zu462kjxhsgccur2up8ux7pmafsalf7gf25xx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ftfjd03ulp5l9e85muswhdrewzr5vs27x93mr0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xn6smucngmns54n6ag99s9ryhn2rrhdfxxy84x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pw7pmuvezvxzel8e0uaxrydhp9pw6fdl35plp9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gqpa7kj63v9pt59qmhpltnapr6s6srarw90wlt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yjqtkpcywghj6555eupyjq4lyqfnm5xu5yv86k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10drcuspk0su9nurteuhyhcscad7vp7gfvexde9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rucrhynpj0kfm0u0zyns2er0639jhj8udzgqpx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y8sq6hg6p6aqexh9wgs6r0nk5u6dnu0z5r8q7z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rgughu024v2hvu42ezn6gajsdzr2dkemr4m0kz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14kx95r30u4al720t0mp7uywwfpjdmdg2rhdlwq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13ztrlp285pvjeuvekyudfy7ude8m6pukrrx2lx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1svh8juxczgz0xd784rwrgugz43hwl89ca6kw8x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g2hhdsj9fu6jm85420mlps06qw23lalmz890v7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1np7td0w4nu079e2td7u6f3r305cjy3udd538x4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12ar5m7l8tf7s2jwah032um0u35k3eecx6mfar4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1h8paexz097ny3xrw5txa090mvlgtl5x6z403gr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sgfmetwgv5hus4eh5xyq2t24qhtd94p83r79ar\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pqgp6wnvr7awghqkkna7vemys0tfprpgnelcap\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dn87qjuut99j85vj69zrmlx2qv82ghu7yh29vg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zhfxel96cafgme8488ca9ruxu20jwna5ycjeru\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ds987k8l84zzzxvjamypr7hslvet099qx9zjwj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yr9gn0jjxe8jddzpg94tejf5f2gclq6yxnyz0r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hjvgp8gae0wmjks29x3as3aw04z2lxu8ya3xc3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wknsu9t7fq9j0hp0u6sh66y8wz50kmn7hkq2mg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rnp7kvm9uxsy4ymkv208v88w9zlfm6evp3ywgy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qt7gd3xmplz54g0jsvlqp8hp5l5e5hsthjnuys\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lh56g5kuh09amm0gjeq08zkjh4vwrs7umujz2v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1twmazns493ltr07j8l2k4vfgj3lzh9yyuzfnds\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ygeg5nwmfpejmp3y2y4xyrlwww7hjz5uvy86pr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sq9thveegy0mc7e2c2jvmtrd2fxsythrnv0ewt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nry8yysmr8dsygmtjy4xe97vtytxvvk8v49x5d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t99vnf78cfdljnq9f6xu7w6dwt8jud9p5pajtc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ny28ge556m2uz85pr38fg52djrpl2m084vwhn7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ehfuvv4v06fytznlhzgqq0z8exmcqmu37tzwvk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j3s5tpjphqzxwt4tpysfk2736vxtdzv4jaxnz0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom150ru2n9yge85urj8y327zdenh44hrezlp7g5ga\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12prdczrehp8kz43k3daypnf6ypkxza5hepjcs3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d0krs5v8dv53r9q79ah4pfwlv77mu50tvqt2j3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fhc0d4ey0d2h67jgarl9y8sal2e2nq3d4x0um4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1evyujpmz7452ae0lyjq24de5d6ltgclvv352ec\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19vvarrtver9z5zmqzkqug3jj480vhqatd7p20r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14m2y4s36qdfdf04v6ng5y0x7jg0wtx0vcxgpz4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dxzxhahtm9rsr5rj9r0rku4lxrpl8xl3lljj83\n", - "\tamount: 1boot\n", - "\treceiver: bostrom159y7efzecfhgyuhzw0f5crjs0gqtuesjfw25dk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom166m2zu3l8cgswsa0hfqqq02v4tv677za0d836j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1twd2dsq50gzxtgue04lg2t8attth944u9dn6kn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tc2gmgpd5h8ywpm9tqsgv3q7uuhcy90plv3qzz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hffavyuxj6vthsxamrlpp8qazlc58rppsxsmu7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1canhup0kmalham7xqga5tkdjfy86zvlsu9jkr5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pnkn0p9zzzz673f3hhhgstj3ge2n0pfn29jz5p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q72pueywv7tyr3s8f86gyt4rs9tltssujfw4pc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nlpfcqqrl2rj3xelkhg2m9yn3kpyam7dfej4ce\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1f6q6tsvamvtlc4z5uj3tkscksjzpeh7wsq9w97\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zfg45x32rqdmmwjcgcnf2m6ahhm3pzng0tpdlp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12u7fg3qzhtrge62j2n7t28z9zvyphh4xha5p3r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yy4a8u45tmd66kxqknnghss6aqgfwfpwvfxj9j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom158selq0q73lhd0fp885d3r9j72jue790matpq6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14mj7veqmcjk5dwv98lycjylrg5kdlt49qa4mqv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jvjzr0cylkpgs6erxlp3mmw24t9e3c262fzrh6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17m6jtjjddj5rjclhzlhauj6pcugqs3gzth9v98\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u4jdlnlhml65n6u65da56as6rps37zkzkhy7y5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14kgg5pz7ky4nf7857ah8cyfq20cqlf7krtf693\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rzg7wquj3qv9y5u634glzh4c2k4ffhzpd69ehc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pdy950wgz75yvaktfnp9q5gkd22u3cgvx43ugv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12qen0m82h7m59s235gama47qyvftz5uucu8jq9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ysjdg6j8ly8l5tt277znys4kcu2d7k4nrumqc8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xa75r6rnphwxvk7amzu7mmy8vfvcd5v9fmxt6d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z273fl6zc6vnzedsrxgdr0xj522dvrrmqtjg4d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pvd26vrthjftr9sm4j7yetyr7z8egjlm5ryhxp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p95594jfmf6mnryp709l5pf42a07ngqdlj46ex\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ts52wf87zduvy3hpl0vycznlckptsgrresdckn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eul92v4jgkw6eyzwfe2n25uk3ck8vtnu50lk53\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sjxztszfn995jupzmazgvy6798hzqgx29x9hvf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1f4dg6ysvh8zelc5zef9n03xrp4vgdua6c4837w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cdlxl3h8x26py7hrxprg47qe28an40fxa63f5p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gr6fpwcrr2lvj5crfs45mjqvql2ad3m24q0e09\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13tcngp3dwdnsl8xr6qc30644x2edtrj2k456r5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yhjw4wdlwwr75gjwvsu2czl52c2lpc9tmd00ht\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dmxe22r72xlhkejvztet6c3eqltqayg7e3hvxf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1axvq0dprx4rkdhutvctsxaxueuuq8s3vvmkklt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16f4ykcc2349jmhxwpn8cwrzhfh7yd7c5m5wdet\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1shf3uxcnknp6j4zsmmhhmgy6hyehedcazsdd69\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yrwqwwrvfrv5j2dkj3v2mzugeer4h8clm6y99c\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14fjynvm50z9p6aew4awhskzwf9t8c0ssskregt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q093ejn82ddptmapsmjgunypdgxecvlh4vpz89\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sxkcrjvw2w5rmgzt7z7dvhzncf988cur2kvak3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1avjhcv8ess8qqykkwf4s4a7f0qawev52selj5e\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13egac8u9ma6hftyu9dkgsl22n9ukhqn2xx62az\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1a4h7tjytue2zzv27ntjax3syfcsuszy96j3r0g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qw3z3q36gm9m9f6zef9g6s5qqtgw2gdkzw5tqs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lfv9uhwpl72v22j3ejfcjng5rdtfnsudsxs6jv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1s306rczf4l70r2uf7nq047ukp7vdkwvssn92t4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ry4zsklvhtp5efdv79dlyazhddzr3ug90g4puq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19rsfq6j725wm8amtu67w9sfagjahhpujtqauy7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tu6z20gmfdeglepskuv63x6wy8wl3ulcrqnzja\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gvu3zxfkmt0ws4usuync65cllzeuztlmrl423f\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vyl6zk985kgnvzm9dlwuyyxc7t92ksz7c2p9tv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18uuvddn7t8z9lhqprjy9h56yvzunu3ckpkm6se\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1krewlvfhem24gkh3l4rc2u5gwvq9aej6gq7gnx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gfpfa4540rsn9g78nqm65x5gmpw847k5677yrp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sucs2ush5tl9c4puu0thls2k3yxpymrx4kxqd7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1f2xjvversu4rjrynvdwqp4khfk4rrhlf9jn8h8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p5skesv5anlf9t8s7wpncrrqptp9lucsdp9gpn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17haqmcetw8lkgughyzwu5tghpmdsu3vsh8ktr8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wy7034f8r0eyw94sx8zpann0akqw0wu5yqxxyw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zvcflys92w5ej9xyqmg2aeappy3y9pyc8mj5t9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fpehl9sp0tfv5uancnqnwewp5tw3h0csd09pu3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yzdg66fzggcergjdzfd8tzpu8402uw40gzw279\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rytzpkvvz5ckd38kjym2n7u6n3g49sxcms6ynn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1av2p2srnv45hxxeas53cxpgvwlrr8a6s36sc37\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1h9ffud74t45v39ddgh74ttqtehqu6g949lgjvk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zkf8ed8hav0940aerg0xv54fe8k8dj0tg2czj2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17q3lqzt5xy5j24w8yjfpehpaeqdjfe3m80t75j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zznlyhc7lqernh852dnr6qe20uu2rjls9q3lux\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nu9apajpl0fqtqmga3xqvmlk9gcp76tq3m9lcy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lqt92em8zgeyngghut9azkacynk4dh6mcljefk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1688qrcrjx4jvjm6clw4p2q4yvxc05acf69v5ph\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13yex0p4l58ey3ute4rugjevarcaftvt0a45wn8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q265aphtfc7tweh55txxczjczqd34v8ukvw0tc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19jtd23actawgfjtxdd9xavhmrpvfeq96l62k2w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y440w8rk086fklu05d75nvxz68qf64qft3t4u6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tnzggzkqnjrnjqn9zg466rreak0lujyjtuxwn7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dduhtfu2yjqedermnzxrwun6wf8spyn9phs242\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12kvu3hfcypnm0lvjzlltq8gmh86x3r5q944487\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15urnqr8gmzrzs6jm332u23r22njgrzetcsmmah\n", - "\tamount: 1boot\n", - "\treceiver: bostrom175afp3wthtxglxfc26qxlksfr22268qyqjx2y8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jqrrhffpa223mwtl70n62g33sjr778jnu3ta2t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hr7wdv8k26qnv37gujphhx3xxxwk5kxtfxyqpw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w3yukty9h752t4sa2dxvnld2339e6nrkvhcgk0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sffxvpf7jmjjrqc8mzr4zcv5n4ulmu2k46d8pl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10fhh4qmfc42dpq7fem04pqh2a9q354n285jtw4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ef2wjuwlllf54q0q2v3drvky6kyn59x858nxs0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kvvwvkfywplfpdkxqkajva0q9w6lw9w6t4kgwy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14uu7tmtd2cnm4vlg2hdz6ymz6vggagkg2led4r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1s88j6gcnydvq8l8t0dr2mrgnhll47pedun8zf6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17lgqcqhr3jtjx7244yxa44cja8a7vwepewh98y\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1em7vxfvhp5aeqa3xsr367thkqt3md4r5p45ul0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18tyyxsqekxc40y9qducfuglsfufq2vuhmgtx3h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uvvc5x2rwttfcpnxle43y9vvvm0gy62scwedal\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jfcxjz7qfnpddcs6890ad65cnyv3yrexrnehr9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jxkjtag2afqv60ce7a57r88lqt9gml5eaxy2mn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eg5ur9mhtzwgca2ewzf4dturg568h95hn3pplu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1m3qguyakr0zdztt7jnhrw3vekgx3vmh3ukxyaa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom109rx5wc09drz6mgyrsmg4478jwcgersf6f6g4r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wwq8ry72zgjk07w3s2lf7eudwan5j5mv276fjf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mdge8e9hkyge9gzyjxmhrqsryprx7nspgtstwd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1upytuk9llk5j79kqpddmhujjfuxq7ldgevt4gz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xqrkffqdxht23946uvewg4smf6nqnkmd7pvqn4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10tl26fsefa5kpngnrv9uqlj7u0c56twkyzuetr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1danfj64ed8pexp58pau0tl0mgxksdq6w8saw59\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1stgue49navx5apt8rwl8nzpl5e46qz87myp8fu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nq98p5msulv3n42k46du6pudjv8jhsynn85dfd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1k64h88qrev7dyt4mz8wesc064unrsxqrcvagkj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ysm3x3h7vnzulqmpf3llt6lvweg3jyjl7fca69\n", - "\tamount: 1boot\n", - "\treceiver: bostrom128547p5nc9wl24n372s9nuznyat5pmdfey3mmm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15hfatjmfn4pszwds763qcxs47rf6dxnrw7uzkk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fqhzscfn88ez6a8w9p974m0y7tkaelel0kpp9t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yztvd4yv5lqp5hp974efndjs6sncsfjesd8xxd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ndt979njhcmp79qx8vpsuymuwncwaz6kedxszh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12jqcascyg2j5fasu4u2wlc5uazkc00xnt3fuph\n", - "\tamount: 1boot\n", - "\treceiver: bostrom173jnz8suu3zy4dul5yfwe92nk6lwh9jxjqnvll\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j2je70ls73rw0ztyz9yc5590gw4e43a9zvhy4e\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gpzc9tz07k9rugerlzfnr08yx08095tzzqvcmr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r29tlqfctx99c7msv3fy96l7u6k6qkmlrczpc6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xngf7h58l3szha03vpmanzhaxpnyxwy3rrypyq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kxf9xwksy5qxjwzu4pus0n3xmtp6458e6yk754\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hlcr6x4g6vel2tmw0y6lyd4j3dgxqpykx2zx99\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1psfj2tyxdhy83r77ywnxwvgld2xjh3tg9kj2qd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1umml2zvzt8vpsak6nkr5dlvj0jv2rcxsy9z5rr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom145zv4x4va2kq89qmz9pxtxm27vg6lxkjsggymt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ayvsly07neqd6kd69arzcrqesnxvhggs0aueyf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom189jmn5q9rhy30uj82fjv7mfmcq9437lenec2sx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1thrd7pwa670ekpydnwtqdfztq2yyv487vrdwg7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom164zzf0fnwyrqtddz8vmv5vg9krcq95g9qvv6pq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15kd8mawqqy2xc5ccqn6tt92cqg60fu5uwmq2p3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uejtuq3xjtyg5yn94u2v4flpu35rqj8zxkczyq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vgdu874958lvk9kns7dczjzynq557n4swplf3t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13zchywzrve3adnlu4j25p6gjpk0p7uwstx40xf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nydqmp4rf76suxcf00w9akyjq6l63qv9mhggpa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ku6uru53qm32xvdnje9k9g40klf7w7rkuqmd80\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rfgz5numwafwycvaf2nar7s9etfqjtampy2sfr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qv7lsur9pg6clvzjj0dm0pyufxwe305u5legvw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q4zth8k2f4y3kxs64xlqdu6jedrjxsnj0m3jwt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19aet33cr8j8rnk9nzcxzx9w4czyry4gh7w3ct6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zs65q24dsf04wjjrajs4qtz5ggvv79y0styzej\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rr2dqjr4gzwl35z7r34fn9t2ys7aa3lmza898e\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nnn4gky6eavt2ldhf2c9g7gk6ya0d6e3p5v57p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1s8q6apcl9tr6285vh982x2enfw4zquf29ggvq6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g2mu5s7r9j3g8lzgr4luzdnzzyghh7fyhwjtfc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1et5y4vt0y6hnf5vffj5v0xl3k2z9gydd7tnxuh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17y080jk3uu5hpx6rgx7z5lk6nd5qdpdn4mzrs3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tzltfjtmczagn8x2pe9q5m9ezzlkz2ep3dhxuz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14gh7k5aptk3mjjaxaapwme4laqx7ggxjqfvn7j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xqlz2270yglyjqnpdeusff5a29ekczg0xcdw63\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jethewm6e3elgwa76cgx79ar78mgy2dk5s6a7r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j59389n9kff0w4nps709qh92r7lsakjm9xck3u\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13lkk338d5m3n8tkwer2r33cakaykrn7z8ryn2x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19ms2y94azy86e4z0wcnrsx00635490tp6azzmh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qynu8e696ulvpen9fcttj8r6ht9s9gg4gl82hc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ll0afd6zdchggfwa6lzt3mjfjq3qasrvgtrzq8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1przlvk8clmcp4cc87uzc5xr94gyykelka5mnvg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1em72tcnysqceypur446yd5628n9amjmntf25me\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c32vh8wgxhq59utlxq98ehcll8wrlwr6aajp5t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14xfewd3fza4uvu5u9z2d4qjvrwghlzp4sdgkz4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10xph29xxpa8ruud338mj3a8z2lfc8dxpqr7npg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rlvh6mjfux4mpvd6g0hmw70yr6dvthu4y30a8j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14j67e030cfrv2kxah9znd6nt4ufpru22wj8ctf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g8dx5jt0uwvauegwkslg9rmvq4sj7tcgr6jskg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hs7zvnk52fdtzdukzrm0wva4f7grcc8wrhuh35\n", - "\tamount: 1boot\n", - "\treceiver: bostrom149nln3f7dul23usefemz6cy4pme5074cncmew9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gxkze6g28glmhedc8dvnjwp3z4z7p22h2seyty\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1petsfu5yley9txgp7mss34tgxrddh89q6wrzy7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w05avl5wx00ssttv0vqafehf6ms38zvn38c7mn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tnx9uxsdwmhzkr045evm4lxpwvwgzn4mjf0ty8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom199fayskkn44y48hn6mcs0lw2zjvuns7njxu0xx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tm5zxzrm69wu7y2zetqcedhnftulypkq4vd2wm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1daxqqcn3m7r69wjp6xu7zk8s8z3hlm795nez4a\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g5r887a5pt8nx0ylhyxlcx3weae5dqgr84whzn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vqgqafc2tlayvw2xmnsd7540sevtgr2kvpxedx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ulkl6uhk6zjv7kslcge2a5gr4lr78znyycrkun\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nptkrzsak4u8c0gld8p8pg3xdlkhkpu4n7r08x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w6zrcfds5z0pcwugzwf83ytg95h6n4r34q86yl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nt47a5w5at8pxmwzshzlpgmw2yxpae65rnyuf6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16sftmwfuv6nedvcessekhmyhunf66zp6dqfj07\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1epft88z4kd5ru720rma6grgu8efgm7fhzj78g9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom184xjz8vshq425ycck9nnq83nessnsax7gku2uu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ujtul80utrp6ns26wegxmh8d2g3yts2y94ve5y\n", - "\tamount: 1boot\n", - "\treceiver: bostrom103rewrzpp4x5h376muqvnrf5hguazj9pr5lcz4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10088lgy06aqh2h069ta3lteya82sfa6a57q0vl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sgdwuh454hj65wc3j2uvfea05uxcl0s52fcxqs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z4qjwwll0lny909trmvfz39nlr33jg0uqgvlv2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zpw3s3u6gactryt5yt8fsu6ppqk9zdm5e4rs8w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j7vq4k2t643usgezf0728u6e28hl8g5z74j4wg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14gfr6hy46mpyzet0j4y2zeyjzr22ywf60mc5jl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tc2ww8z0xgtvyum66ee9qe5v40akgj0nhlgh0m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d9zjqqr8a4cdkl6p26hm26wf7al5lut8kg7wmu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17hp3kkqsncad639xgwt97mznkx4q8e62j3lf2y\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ryesa9tv27z6w7gl60k6d4n6e8gwsjfuv59pt5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mgwuuflsjzd22yexwsnxfuur45tj6az8qu47nz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rayd6yd48vx0ud2x7flv2km6sahhjezv8hwaaj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15c6vlmhp0n4egxfc6gj64j9vs9hg4haddng6hl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ddrqqwk882pl25qeehan4z955jq46xy8udxxul\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1e048nd27ukzr67pj0tu2jluj324mw9cpn5jn4a\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ftd2kmryv025lxjy849d9jlqmnf2ecx6mhpzu2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fcm3ane7jzchnm3em85utfapk6kxr46rl77xms\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vpywa0mwuc956g9kz2slkul07jky0w347saevk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom126sqzdjwrs5vdpy4rt8u6qp6pzp78d53d5jku9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sst7l6c07l9lzaa62h3f28jyt4gu803xv2nw4c\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1v7zngyq7h4vy7q0e46sp0n5v7ac3cufx9tk0yf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom184juz6spsyazh5qmtnf8hm6a3w93wfgqzaml0k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1k2y5wxn3y83g95xgtkfgc9h5vchv0rmpha5tlz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w4xfvyleucjy96s6glzjc7x8qw7zj826hjtpq0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17drstn9vgea8kg6lapz0mne7e9hwqpm5xnk9xg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eq7s2ke9tyveq6hlsd92q4n7uet5gekffjhrrv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1v78wjqz9c0p8k56xmrw3x2yx84m4s08khyjc99\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16fel77jl9jut0r0zwuj6pr59z23aaja5qdzpnl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qhr9hqmufefcy88659d4w93wj0w44uk9ncvc2l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14wscpjhcu259qnayu4j2vv4hmjfrvynz3xqcmj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1m6u27qyeur9hz2j07gypsu78hdet3vj07amhxt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uv4yls3802sctu8l4yayh5wntr9gat6zgkyvvc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12lrcza4k7ejddw4y5ntxr97gwgz8w45eu4rst9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ak6azsz696d7jyl2akyqn84w7chckt50te2wvm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10syyl7j6dw95q9y0syujgr282ftsxfd5cn3mml\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ygmzuh9lnjf8lpghna0c8zye2wla8z4plnntjz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vdekduddfw59t9gafeaa8shl90zy3gjv6vsz7x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p4f9trghseul2wvmuu98j9y2htwk9cpxu6ddmz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1asv4hz84gwp3vdjfemzy5v8eyqe7cqkzx50m9z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vh3zxzpd3guwql8guzpdlwg2w0ka9s64enywk9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xwlsur4rnc24yqkdm237qezj4cp0039xmk5dh9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14p4t08rmddfrqjgq7n2aj799sp8sq02qyjt2td\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t5kjnt70d4erhrrfntljcsc5qt8493cw9da4pm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yutd5aj8ht0ghu403qx73zlmxwle04zgc9tpaj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n7asgsh0tzsue26ectwrmy0egje3q6h2m5k875\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y6kfeey83ru6k44mwkf9y8ezr05kyrv3v4uduu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jt7rpmgmmk6jnwpx9fnjr4e0h3995rsjqrmz83\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1me9hrukz9vs52jsqutnk9yllefsu6enhprs28d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n4sk0pcdksvz7p80nvyzucrfew23nm8xs9rdhw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ex4rfhkx3a0q0086h60hh85nq6rhpkur7ksvpg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jxjz0525sfdl569zrf7ehvflmvdcqe902yks7l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10cfaxm9jnvr2xq3qf79d3k2lz0jwatn5ga3x6j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yvr9hhpm9pe8hdujamzk9qcs70hg3autf0ndjy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ar00awcunha6r043575gr4xeexcp4f5ktewzre\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1plrnf694p80ukw2fw2ptdph9hcka9k923vf4q2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jf75n5znd7m7fn8y59puknqcu6hfervmjcx0s7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g8aky80rlmhf579vf7yn2wdwjn40ny4q5amqnx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ax0sus9vpp0tshejpntezywnhuw4uvcyujfspa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pa5p2yqpr0h7m7hl5td4e0fteugvr2z8ptpztm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13sgkdnrwk7arajhlr2kzspcp59k7ceg7arqwnn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom122j790ml8nuc5h2zlsfj9repee3ajc9fwz7dct\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rq652x6ud7awa5cm9ns8fs6w5sm8ttzsap2l6l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom179jsu5rjl9cqcawxzxn7s6xt4styh0h5jq5v0d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16q4kku243lvff6j2ej5t64hqja3lvd9396e6ap\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1enthteulhey8mvt8znnpd4h4z94v2j8xutrr3a\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17nwths45z6ss35qjgy7xawcwdhcgxsvgcq5n6k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rhrx6wzps4ma5q5v6gadwdn2vexq5gyjxf9fvr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d5pgxwghy5juxsgv0refx0t2dp9wq96xafn0sm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c2xytkp3nj0yp049knmnj65c6zuur3au2kya4g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dskcxlxwdw3wq7j0mvgpz2h7k6h468yq93hr9r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r5uuka7wk5m5nja3cq5ers56la5gepnfhjcn6g\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1200g56thtljw3n4rvh0z50nd96h356cmsa0js9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1urjg5e6vgs8y7jhtualkm2fj0kx4206nh52hrg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vzm9tjfa96js7h3xqt5xqw8kyhpuduzpvnvt24\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19thy6d0fsdj3pfc5xwjk37zuahestag6qhqgkt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13670acutw64ms5dyhgz6jtwm9s24sc9jtu37va\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xfr4gy9hltw5k0l7txsagujze3mupndpjy45sq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tdmhjrtwe72pcrvu9998nkda9kl5lzud6r86y6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jgjtnkplk6pkemx7cv27ysd7cvhjzqutgum0vz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xgyhs4wake4w6uufwwek99g3dqnjd6fnd3cchn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cp2ck5u758xjxs8j80mpxp3rteuvxjklur5tg7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kuvtlrf4awdvf0yy8hs7hwjtdg9peyxj66nt38\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jm8j625qtz374el380s8p8nl0f3yew0jksqqvg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vuep7lev6cdmj39ey0sxm929jp2pqsyg2k47cg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pgwkcsa0u27l2sgxx9h05wv6tzkwkucr0flzjn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n0jy5ekhm3j2az428m3hswfevwusl8h39hdaem\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vxkcnm79xrt43u5vt64yrs78zrh8fdl0v889kx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15x69fvvfxhjdw2ad0rxzeanypetu6qzr78fug2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13uzzwuk8fjpd3yt4ssnaevtvys5nx9l69gxs0z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13xwzhhq6m52z0ysk9lvyvgtr7d23e83hdshumv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mnlqa632zpk5j86qcmtpwzqv6j6pfmgezagz4k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1s7jgrqnvdmxcww43unnwkxy0faz4yaghkxmx8z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1apltlf8xqdtxx5jenjg7gzh33q8lajw0uakf7r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10ltmfduusnps7utyy98jm5mwq5dgystjset5aa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1e8h6450m7fy643ykjadctv7htx5m8mmmn77vy7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pa3eaj0zqrkmqw23v239upyq2w69u5sccztt7r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ezgjfhn44amsaxt70cxr3p0v9s3nspfuwtpf45\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mxmken69ne82e8uhkmr4sfnar5km4knhvvfxe7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yqnd7d2kysaxwemxy5e5usl2hs842estjfrxn9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17cs0kucxvh5ag5jq0gqum47a63lvmq22shxaah\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15rjd46x4s459v8a56w2cn4yh8325n53m82xdj8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w24ux688apsuvmn5jv9tr86fuhtv36xv3960dp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j9dr3v423q7jypqw65w5ngpler6a8yrd6qy996\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nmulwukl393j7paknmgvuryg07rdx3m24wp23m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j306trvzjjtews0emn2qq6aw8caxwtzfwttw03\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1snawqfy5ywfm0vgtsmqfvnsjlg7dqtlxgfjrtn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ja0jzdwrdq2pmt8j4cd8x3wu3kudaycajukgy4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13pjrva4pc59dpvrvr2kdhdur3dxwn9ue5shqtm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tlzekltgjpdmes8var55s0g9famwg2kgp02xgj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r5hrrzqp5zt2t8j62a5ny3wz4fupgf9gfqeesc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19urdgfrr7g6h2zt2qarlaqhrkwgf7vkll82v7k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vktsw6aptxg8vg8ggfhf26l2csnyg9r9nlyke7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qs3dafgnnxqjy5da88l95rjnp2n27h9m0deaas\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10l2vfpsuruku7849d97970q8emds57pnah2xgu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zlywzyzt84490czkz6wchneu2wn4ckgzla8myc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kr6zx7lgyf33wk4ka7s0fs6yk69py83t38pndj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vgwa3mxzrcsxhp0jn9j2j5fvq3lmru8n3x46lt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pqpzd3tj8ut690lnwt8pupgp2ahlcn6vtl3pam\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17njkkr2rdwyds3lveq40fw7fp8yrrapu4czcth\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xdnma52m5rv028efghsd00dugp9d6zhvty7wwf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wh2geykadw9le2xd6kvpe9srrj6tj9jvtzlrve\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ml5lpjrg0x5x0xvhug4fmfyy9dk257c4mck9yd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wpguy6s4ef7g6yd0dlyzlaett98eq2yt7awfyw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u8qhdj3k7tjn7zscmvzwkq8rlncs7s4ccwj2ml\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zj7e0f3hmzpwjwjzu0mwqqt2srdltwxq2zva2x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12frw9dhzc8ryxl2rqdxg0erl926rge7thm7mrw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n9fzyzfplkzm4jz9fpwngpjgn5ddxate4y33fv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zc8snhscjctnvjymggatqxs5eke9pn4y0ljper\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l0d0cnykn39m47x7tfvqlxzqylrkmc4lm8ut49\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qnawjghksz0mrpx299fy2e3f97zngd4p5zwlvn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1704c3ekxzqt42g3za6erga7jz86g806e473rmt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1m7y9wnmt8d4sh5vtpukyf70k0vpvqxlfx6aaym\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1x3mp6qxh4mzy9zjd8mza04j7qkl7ntcjg0wzma\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xeg7glznjkdykuex6gdvkmndzqegsrqqy6agwp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vvxfst5tpjc2pnup8pnhzshtkju25kd8jwafa6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qwcksk6lylzrzc6gq3mvn4f4w53c2fkqqdd06v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l22c4m0eyrrzdhhrae0ksmj9avmye9hnfdlrv7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yl6fdg66ht48vtknp808k02w0y0hk4p4dwx23k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14vhz2c3p7alchp8ur6vne6qlq8spsegcary4le\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13c7lpg4x9ay9cyfte9ypntauzan7evpl3nntqh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ehm3xxwkhq8ckgdfy9pz7pd4wp760nrhkwd0rw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r9d666ktmuetcg8l4phh6pj2vk2a9n4q5rj9zd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nxqc60spf4c9lafc6a2aex95rd2sn2wqdgwvn3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lf7649u2syxwmxtx3wz6tznpggmcs9hda84srj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ef8w2fk7sgpf2y7szuks55fucr04wnstlf8har\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xncdv47488k2aap7nlvx8fhlxxq2zm0c6cpl03\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q2tuf5qn4fdaq09e0ejsacwv2r0etzxf0gk9jf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17vqcu60dhuzhj937m8zhxf0y276dzvtrwxwx4m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wgmaphzjkms2vp6mdxagx8pcr8yh4cdmp59q9d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tu4lmk954k68ygpa8r8k7q04yusxn0htv7ny0m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qhkpjjup7v839tmhs4fvpq5usll7dlh5x064n8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ufy0kgt4hun0fww8wn6grg47cy0jev40tsaru7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1k4y0asr4y7um22nkzdmwt00f77al8dm5du3lc4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1484h6x6k9jndeuudcf9z4nphupzzs4nxeljngf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1x67ahx6zwvvvxlj4mh364s9gwjmgfcyazsljst\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qpz4l5pw667yjfupxjurq2ln5sqg2cz6f9l6eh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wdcs34dkrf8tw2xzw2v43e6rmuhjxermht8ajw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom127wff4g9n0ll8k2gu96le6fltu7hqna2r9hy2m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nvfhpudwujrc2zk7zy4jn7xazzu7pe7wy7fwnn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xch6wlnc5l7ywqh7l4spj4lcrf3hywazk7errz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uqmdaplmycrmurdspgvrxtndxp85l6pllf39hq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1k2n0mzzu5y09yg9khfflqae8duu6csn9swl6wr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16640w60s7sgyec2qr666yhynhz4u03fwfpgccw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom162xc3ekelegllz8gy8gtnpduefdzpw9sklzf33\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zy8uxjaf50ljc909e9wegymuhc86yml328h5ec\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1h6y7tqmjkvlawkyqh6z8rqt677u4ffu2hr3rya\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17zv580da83k648rdnv3tgpxangswvxex2f6n3f\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cf4j4288hrmvrcxw60au4jamra50ay4l5v6kqy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cvfpx2ck6qfer53ah8eu4kpw5whv92gmtgsjqh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13nuaemd93px73gvqm9wka80scp8y2vtavsdj9a\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1sxlsue6ekaakjjcx8n8hsmdpr7lj2q5pa70rjz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14rrfmkmxtcfyjwr7q25kun8mx4r3apkvq5t5p8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c0tqcs30z0htkafxflh86aty4yvrjy7dctnx4k\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zc4gz32n74cjkc5c6upxe7hup69vx7hv8e5gtt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom157ayvflpqzc83gacv055vepm50uw0urll085an\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1njh7ywsffzflfd79hwry5856e8h9crd0ph288r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12rv2dag2nxrfeyqr9skvp3gvmeda6t53k37cj2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14s63706jgqh0stteajpc2ama0r8nypnp6ennhe\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lh7grjr07rzyyjtaqcl8ywnqdgua5h0tf5rygh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1re0aw0ugy9fl8qgdddqgfg49ahmmux9rpnadj4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cdcjpftgh0u3ac2fzmwar4fnx470fn53ys4rlk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1aqdurh4nru6rwhkt377nthznufsrp4u6nqf39x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pk5e5q7evmpgnjj869zrjrjas4g7nek87vl5r9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14e2q07kpm9yc04cp720nu50ph3sfaccrrunz36\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qf3h5et5056t99xck7pgfk5hdgypenp7wmck8v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jcelm0lkrjflq3l3r5d0eaxxzfdjj9wtrsqnz3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lgfv6mktluz24xfuvjmxw7nawlnf7ckj02gt39\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wjq76tk9gz9mh4v9z29zjcgjgv36mz84v333lg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uj22dv2y4ly96svnav09h4g44zf68k5md7cna7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lef3zd3p75kk9jazqalqpefmtg5rp3ev5084zz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1a2y78n5340pjxtuksfehk7y0pfaw6fdardy87r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vuet4dhydtuemhguaj3awx8tvzaau56rkkqu82\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n8hyrj9kam0zdtf6mcw25mrctjh6d7d3n5dgpc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hs69gk7cmsqyez2n9ake4kfc452x8lsgnn9yv4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ghya49vuypsfvgxq9x9gcw6l9x4jnkxlrq8ql6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qzgpgtkk7thcmjr6heclgdejpy77w5rfdgm4x4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qvsnlu53celffqlqru5k05gvzr70ew3lplvhjt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qn0lrdzyl2vw86vhrq6q9flycnc7xkc5kfxacz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom102ugpddahjj0cgtp8wn8uekvtt2ck3s8h5ltds\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1k8g56xsch6ztwf2uz248uwwqx9dzn2falgp38t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qn4lw4ejgusdxeekecze36w3m9smqfywxqtf02\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hkx5f4cg3ra7e29fy9splv3fy3dqjym5c44g7e\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kua4wtdsgd3jvx7drsmtwfzs7tasr54f3nt6vn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12jc4e76pm2t3cgad2fcgcvrsr4s6tcc0yvwdhy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qpffyu8t3rwgvr9ajtudspnl0376ny43cs28cm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hnzwwe8xhjgn23l3n5amgwtqjjj77r9ja7u4yj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xfwdag64x7emsu5z9c0cc5cgw69hluchrnr0td\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gde0a76m58h4qp49wm5qexenn0lr9rfqay0cc6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ycz6jq34ch9zwz53uksutqax7d0tzg4r4ptuz0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hfjmtwh8f6u4guy43gec20paj3fpj28yna0a6v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14v89cvmam6e2l7ye69kln6wn7dthsy3wedfl7w\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14xaq0xndppzctkajv9u7vmr78sm5dkrw8pealk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13swa4d4tds8ke7rfjkt3g9hkftz0hhs9fr2g9h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1az9amg5j7h5udxnflchdpea86admanh980np3z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jsmxeh782fwdj26h8xfqyxtuy6zkqst9k0gn8u\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1h4c0awvycvhq4rfzstrup20z8wwy2kd44mmxme\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ntnhdn59j0w5p3h8ql2tpjcuaddgwvc6sdm0dy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1420k0ct4cyjscyscay0ze6dcd3aq7rxq04y68x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19md2lvewcpqrc2j2a0vnr4n69j0wrcf6whvt0c\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hhg04rxah2q4ax03fsr4mq5mkg2fsn0n8epg3j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jk20x6myytts4295k8n5l890hh68gptmnmpcx8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10t22t79yfyxe5lquv78d25vxmun7q9e5s6xxsx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom150v7qu5uarz9d85k2d50ejl9zdw4k044r0y9wy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12965cpvwlghw3jvts7qdwkkam0j5p44y687d5x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1duy4aps80ha9wcg2ql2sv55sac09n885yfc7rd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rw0alcdzvxqjvnjaz0kxsjme0jkezxg2u0j425\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gm4gtmjxj6292zc75c7nvuwk93kkj0q0qupw0z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nxklnj8ywc2rpq023qd8dhd0xz9cndjy3mahxn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1utfmzk3f4k5pe0lchqvuwxl0fzvd7leur2m4km\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zyuupqv5kuszull7ugw55al34w09scwludfrwr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1h4kz9ze0q7g4jz2hwafazgtms6luwz8u6st4td\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1usfstj0qm7jdgj6evhh05up4wx604dz7qj87ac\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zmytua9j77wgfgmm40wgttegva7sc4mvwzsjsl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ee56dns037jw5cvgpuu8zp9c2lzgkr5gh70cwt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z76ffeaayhaeqcel279y65ttztrqwj28l0c804\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zesngstg95a2a8v7lz7r4crwfv9zxcmqtltrcc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom103zeyaftmlxla0j4jtc006uh3mmjrcjjhvtvgq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1udygx4wvxueu7x2qzl43gt5n9dajkwp3ygz40l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tvwcry63vlzv8wekau09treh55r3ydvq3t4tgv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t0fsme3l2gzh3z939clswhug0yvqum09e9v8rs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1e8q37cxgmfwvlwu5dj8xgzm6pj9fgmfgju6a0e\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qy7xa6rzcg4jszrlhmka9rp56eaz93gesapdvx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fvuvnhazucfflj8s5cufy9q97plag674sguvu7\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1aqllssuy97nezjp6xhw4c8twu6jts559tqzssl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t5szzerqjhnx3nj8t97zcx8ts5nnsskyu2dyus\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vveyk0teh2nsndeg57mpmhnd5u9yawfvdswecg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zwe7u6kkqcymhk8yp2pmhswt04j7dd8qku47z2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w7y3g0r9adese8knyp277mhx07sruxxgpcmz88\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13nfegxehxp7kh723vj2s04cpy0s60qndlsau8r\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ds9knerx4cq7sf5qz9grtxavldt7tmz7yuvral\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n00meh6k0essqaxfl6776rjuxulkff9fynsqq4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1tmntgg36jmhxvdxsp54rd5yj9523v6xpk5cnqt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w2kwm7p7zzzzfvxax8jqvm9vgp9p7fhhxmqgz2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hxz2usyugcmj38frhrzlc2aqmwekkcfj33t2uf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1me6p7njrz8rlw5vjgya5h5hf60q8xj8t9evfy2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14s7k32z48550t7qju0ruvz36agjrvy9rpt255h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12fdx3aesgunjkh30jpagd0zsfan0qnuhjmlskr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w4lm6dth2wa3a36avxqf7amps2mqtp2eyx8p79\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l97gg8q4d8qcsem6rt05r365q8fx5usuz6c9wk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dppda4tsrvdrnptkewd0epq08mj4e6e2m8ay7m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uzd7y2s0yj8ghtg55nummu6hu7pljknt4md5h5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hyqw4y85xcvqnd2hudx24daplkeyjftv4ya8qt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uw8jryssgtyxdh8kumwz7gl26e78l0njkyvh7z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1j6m6rf607k96ckgyyesexex9ckec3g5u04xgqs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n4zal3f2pzts85a289akzqugcsv6fw4qg2gv3d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hx82zjwku06jqdhhkcg99zcuzwjnax79xa54ph\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q0zkt55npcsyhnj4akrc8hwepctn9kdfly3rh0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16snytks732s9qy8z3ffh9wjvygrfl8zr7jrjdl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vtvsevpe8e9kp9m2qgsrh8vqt9hgqardh0ljaw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u7hxgfh927cmxfsqguxy8x3sat3908jt6mh488\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z50v0rww3f4u2zhyeyfhg7gsj2kzr00gx8xrlk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18hkau2vr25l60uhndelhfyu2jcatn9gf0rfnw6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w8num65va5cn6pe0lpgzegwu4sh5ak3jm8mssn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vkecldpz2phuexa8e3v6kv5gz9xwss6h3lqm2l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1javxf250ts85tq97tk9vtngu6fnq6fg8dfagp4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13hkqre84xkrhacxk4xwwq69cw79zdzh3f0wneq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gwlg44nwpvs0zhwa9vq4uthrmhtd6tharaprwe\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1maxrr892zvy8r9utdfzfz9tzl36cvmkuyl9szp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ze0mmxfqylm7qrf6c9zprhc2snzz9vd9dmn6ap\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wldkljur7xp6a3rsxtehrz09y9ktjje9hewf54\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15lazwhkgymm96fplzthleld9cevt85metwzgyr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14jr8clptyx7jewpgffdeaxwl0xe6snl3u95nll\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1l9csn2zrh4gx0gvk3rp7mu5d2l5pq6zsed8p7h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17ptuyehdfycyuahszhfhu7uludtpppgnyd6pql\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pfkmv8tkam06k3mve9q9wfdm2egve87vz7pmna\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10hhnlax5g6exslfmrltdx9k5z9h2208lfl66lj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1p4xaa6n6lrrgkgxcne3uk5l7ezq3nljwj594s0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xj773wmacfgavwtavcqsafmncfwed9csrk0h2j\n", - "\tamount: 1boot\n", - "\treceiver: bostrom120uqk7p4u3hy4kz6fdx2xzm0vnq6tnfynk4gve\n", - "\tamount: 1boot\n", - "\treceiver: bostrom130lxdw346e70t2ntplnm94aksyke6q0f52vclv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vq6gsql23nyx0p8c0uluzgdtz0d5kelxa5n9az\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uu2aede7c5hz0pcxafwrv7gkf9wcm2k7dhqwf2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lvsykp30405aauwg5ceqp7kf4ed9lnllwsnrh8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ste4edvr5cc8mz7cvuxxtcq5frj08tyj2zlxue\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dkpf8dqeuf39chpq0wephyfzc6nvh4js6ew7a5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17j4ugdqq3lwxdhx2qvn8e20cm6vz05ld3jdewl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1agpj2xahtv6ytcta9njctyyl4scty8tcnpkjpr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wmpzyecfrc35ewqqgw7yl28ay7a8tua57a7xx5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mur9er5tj5ysuwzp955arsqf4qysp77fe43twz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom128phu969lkd2vfdkxatam8hhggsa2tf2w056q3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pugqses5qxcqe6hvqumnxulq54e5exwvs0nhv8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1thjcavhuwvam9nug8kp0mr5al0f3rsdcrpykja\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1h6yhxunxl8k5tmx2fd9t57h50dh99mkxegtrnz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r7w5yhuxmgzg9qvucr59kr7avad248xcy5xerd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17zsauzyd7y7mmqm667cjvf3c8ls0ez7ue52vym\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18spep23f9m7h9vprqpluyzm5ymhrpmakylljz0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14uqc6ufhh0mgrkt4aqsa68ghj55v0hy0kyzxc2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15slyfr29qu8u927gu2pmd2gwur5xp0v34e5qdj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15k4cnvx90hd9c88atk8vvy3qedvfxyl64qpf8t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom175eqknqcxywthmcdks8r0kq3d8vfmgyzfqv0ee\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jsk5e0yujj9gcwvphdlwssahpsdkxw0ld3ck4m\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zlaa2u9z56r0jnthmuzezss5fd8tf70vp9qhr4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jtlahs0cvj8q57k8cqnufpt5qhu30smychv645\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18d82hzpqvd899ygwerxme2yw5350w4vylgy3ft\n", - "\tamount: 1boot\n", - "\treceiver: bostrom108wlz2utdyu00qmxjyyc8xd2fpqyewlnqfgd8l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18cdndsvh7nh5hvsgw7gulle5d8m2l29w530sfa\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1swdwjgs43k40r9kj85kffgph4p2c05wwgnlq3z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hgp2qhz69ca0slwzeulvyrjy4r32cpryx4d7yk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zs9x7d3zcepsmmmckk4z3u72y5luukpyrx6hzz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1526r2wjwn7cg893g4jks5dqwkua9xje8lzef0x\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rmda3yu8kskzkwvsrmr6dte2fnxs305mnn9re4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15q79jgx0mnq0fnsd6apxz6c529az5zvwadle3d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u67tpqc5akxcvcl3z3wk7qcsnqchldghcx67pr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y68yvak6790m8z809p9a3x0jt8r5rpn0yhnzvc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y0rvl59q0vspfjzygh8eznq2aca6djgzruafa6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1psj8hzygflyqv6m4wty72dvt97cs3jqmvqvkfy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eu3jxwjfl3akdazvefjuye57v93mh7fm2ueqgu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1z96rlvaq3v3ckm8vv5xa07qlj8cwly4ldnze2p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17msp24exdfg8d238rqckjes5lu2yz8p0ekqzke\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qs2ltedptmhf99fj0sv842w0e037gg02qzywk4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ys6mdm7s5ummfgzqt5wgm9ngpexg8namqj44ea\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r69jy0zy03wzq67j4532evqk7p3l2qtmgkzvdj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y9kz9676d7gvv9n7ygkvu3mrf4audmg5w4fgxn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19velk6646sgwsmwjsh2k8x848ev9ravl2qcpje\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wd27x5kfrlj4uzmq3qkz4lhgrlz0cpy437lkxc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1jjkdpuqn6fez4fv4gzjntttv6sughevppwlayx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qhz3xt0daf64u5wm2l0zcnjp8f4xjwwnchc4pj\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1gagjy687fwwvqfepdf3n3jc73v5673vm3feccr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1deza7hzf8un3hj8wf3ghrk30gce229exes6kzq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c43waxk5gzxctvdakyn8s8qwgxqphpmnleqr6f\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yvppm8v0yzqnc3e99ecs7dprpx27ydp9jqkhqv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14w4q8h028aqmcrv90tpa2jl69mr7sylerlcdc8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1cj4smplwksvyaz5xhxf348dnwjvv4yg7pk3vh5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16ja5hd6qe0l8jj2cf2kvqzkp06qqde8uwjre4d\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10lkpg9wwfmu9snshu5dawjwaagmjg934zmwrwp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17np703zwam49gv03l8wdgs5zp7yhhpefycy548\n", - "\tamount: 1boot\n", - "\treceiver: bostrom14m0f7r50semu7m287whhtgnd5zqsk8nvt9xp78\n", - "\tamount: 1boot\n", - "\treceiver: bostrom192plmtfxwwanum8ypfg3txl6kyzn8y07tvnrgk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1v5003m4u4c2eukmxp8h0k3zkfmw25vzj48pxra\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lx64l9jvh7pvn769s3tp5u4xpzznjm6zcvr0xd\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1746aw07my8pu6ry4t95qhrypttm2ck4ca66xwc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hf8cyh6yzkae6ugdp3fngzh7kckt78me9kmfth\n", - "\tamount: 1boot\n", - "\treceiver: bostrom19d52ssjysmkq8lj09nm8ajlsl539xswfe4ydwg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pq9q64mfgp3cssaugsd5av6rf67efyzpykq6td\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n3h8m0e0xy5axv2xkttyyhjttaa49qpv6nlwxt\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fknfe5qczrmkm9q6dx6d63hh5v9nztkdk6xj95\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lggvwqa68hggmvx6ceyhanxegu4wx867pu6tlm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom156gwt6ahk5jfptp8jcg56jwwvumhtucwzx48yx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1mymsz36xshe4jtvhc6reammaas9g33cxaks7pm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nyudwhlnjk07rky937rrep6pnr6r4h4zrfvepk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1792g90xakq55tssa6rsphdqsjx642h3mmgprhu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1njz353ta8j753t8dh3wks945w7fzzes6cr6e9t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u50h7w60k6uxa2jnppzkadl5qyjpz9vlwf684p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r36crsyv8avj70q3wc558ktadh5pd52yx00umu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17rcc77lajfky9djyy9nxw9vcenvj7pylstx3ck\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1aphxaergxtkwzs0ycgz98hnu6r8a3jl7h90atw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1d20udnnmncnsca606uynmsyx9xqxe9720ra8fv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wskuqwvaf9634w6e2959vejjgy6t566sq34ljy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom16h0ld0vsa03yg3ylvhy3f4rlm45n3vwe0ytj4q\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1yvaugena35tsy8e5ama4mwc5qegpx0qz6h95fl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zw8e9xysdzzyx2ahqhg8d0jdhj3tu6hafzfzt6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kxxca2zpv535nxmxnndks8g0lpqg8hcjdk6xfv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18jmej4pg9pu89qfx0ejnjfuz88krarsct32at8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1dctr5yx33rpn6ypkcw3xlhnr48jhunxyftw6ha\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1g4wxykswk5ryzaefpwehj5xz0vsc7wkfsl5xv6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1n9wp5seymgsezk83hu6p2xfngd87cwy2nuwv0u\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1uw5c9p9pctt9ev6cmw43sat0cnm9gu4lsp3d3c\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r8vyekjnpdcenatks2fwfvw5t7yz3shq4uxqnf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12uq7s2pfes8d3vysv7djrs9qle4nap47r94ye3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1497fcs4twl5qznsu3l98j3qrturkdmjwqkkvpf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vx86z4ypvf3jsutvy9yp4mh0rsn3vy6q02s82h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ky33actq9gl30pp4jml4rm9a0c8qtq9gfr6nhk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ef0e5gx2nc678swx5q6344zh4pauxaztdzhlsy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rg3e57ev38c926aqkf54afwjpnudhduvg3keec\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nwf2pkq2uxe4dt2zhfntlyg730cw2wpqzl4g53\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1kasvauw405gk5jm09rh9m4002lm2z3skkyr5r3\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t4hsvvwp0gq2hysgyvdxeajn5ssydps3z3929v\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1ermktsh35vk52mjkq6eq5uxgdky7754vmjkwwn\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1w4zqtwhckj9jqxyqzxsjkuluhwfk5wvwp4734n\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1pu8ehac4yd4gj0j9mdxfq0uqtl5cefvu3lkc3t\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1x2f2cltlg93vhnjujxstt8zrckf7w0va2ywgcg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom145pvyfwsaqxky637feh3lwuf0qdyumzhdz375z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xnh686fa06w9dpwmm6ezxfkzhl7rtx0u244r5l\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t093fgarjjdj6z0n0en3mcq7xwx3zu6uvy6xxs\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wld2mu70sh0pvx7jvd5hs3msar4d0xzrqnmp0p\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xk42c5qh290rru7djmdqcvph0d0aelc4a6sjsm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eyzahe7hntu7xqnrgp4uncy324yyt0q5dtjv8z\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c24ue0sf2l00yjtcu8aqth52jduz04g8g86cvg\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1x23w3zfnts4lcsjm278da8vmttn2veqqk6x0d0\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lyg8txla0kjtfdnvrz7hk9795plkuzlqc3qegk\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zrppsufpqwe85wz84rx3suvq6dnhjva2n2dh5h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1q9ct6x5ls5kt3jvz966kekruuvkvp2e70ffhva\n", - "\tamount: 1boot\n", - "\treceiver: bostrom18dmj57ym5dgkj76t9fzfjrqan4hpvpkzfjlv3c\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13ydgcwayysassa667rn7qwfcesdnslujfqw3c9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13f6z70qjdgnn33u7xa589zd5eq9e4r5k2pe9pu\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1wsk3ygqft8n3llkflg0rdfazmzr0c070hy5rfz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1hwj645su247x7htrcnrjcmfsh98utlxwkcgmgx\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vqyvyvfykmgpv2y6pjgas5r4s4nevdavga2rxr\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1t4676xaylec5lhhcc36yv4cft3ntulehrgqpn8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom13r9kdchp7kfxq8vcsytlh8p8sn0ud5rfltmhuw\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nzu22p38j78gay8ulnu0d76zktzwcr7vvm2zp4\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10mprxc007p2ufy69nandme0n7hc2r07vwfu3dm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom188yymw0u8puwruyzzs2ugrcnumalejuct0srxc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1vz3djtm4gz6hdr5apu4g5d69z58svxyr0kt8vh\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1r90j8ydquk3505a2wd84a43s2szqzw96u9f36f\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xv5cxzkmfkm36vx3ul4gmt5sgsej2aypd3vgyc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1u4d2vcwfj0h4a3mvw3tvup8fwdp597ypg0v8cl\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1slapuzuja5g34efnz09qe822vrjys8gza0s2h9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10kmed8fujy5pnqvv9a6y9jffcu2uvzjycygj5h\n", - "\tamount: 1boot\n", - "\treceiver: bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8\n", - "\tamount: 1boot\n", - "\treceiver: bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n\n", - "\tamount: 1boot\n", - "\n", - "coin spent\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\n", - "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", - "\n", - "transfer\n", - "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pkmdt3jga70afwx8u05quc0qkzuudr8lxm6asd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pgvgd7lszh0mm4vzhrwud4h7sfsfzpgyz7lj6k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jwtwne35zczy9wt0n4srw46yfe3ur5z7uzd0zk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gh0yf9tngc7gmveh0q7clf73qvqwrqn6axymvf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jczu2lqc9tn3tx9tjts8dqqgpzq7agdta7w8j2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom150ewsdjjzv3lf89ws24j36grtuc8rqexa0n76x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1aj6swpj9kzhqqzadypgy8efcztrxcrfk3087s8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gynv9zuvcx77v58jdefv9lve7r39qc57wlq0gh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1a9z6x2w2m98d2f8p7402zu2wa5pgy884x24ezm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r68k2jsqxwnd67qcyvz0tusjzgd02eusrhqwz2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10xu9l88v6asa5hx5dta3npuwch3ru424lqazyq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nwu7t3zkr6lmdv8p8h678pjkpj3tasdttehdvj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1783mzr7qg4l4xvheesmv9nkesz6mcn72d7lhru\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1873t7da09taumkd95etmvsq650hk78sj392pyn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19ryhk9692hterukzpq7efcvkns7ccua4kcf9hw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p6sd3ru9u73ulm7luc3thwl53n4fupg8yvyqkr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xxz0jfxswpqtg60va8l6wgu2zsyg237cke02tz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1k88adk3enw85smyumcr9u24y5zpxdap4znwngq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15f6rqmc5w6jurfrk7xvr3gmqmc8zgl6929wju0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fqs05m3rhtpr2526p9qfz6fgaayp0gmuycfx5v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17r05hh26uht0rxajhu2txtxejx2ga3nl5jlfhh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19q3kyga6wydfcgvhynxemzr9ajjqcjgg9nzyfk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10mt6mw8p5pll6h2yspjaqdq9y3js0pgy4gn43p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gdcxhvap7gl8xyg8zs77ee03edjslfq4xlnf6x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18yz235pp777rvr2wv62qlqmd2zmpu4a5uzj9k4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gghry9skawq9s69ptrd6dcgeykzgwxa2lvpzj8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j5wp8d30zt5gn7c9qe8j7enexg2wsuuqwqc8gu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u09l3za8dxvuxs93d6lvd785vyxdwzdkdr56xl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lqvs6yu9t0fgkffaa6pcpkclwrhpestuqdxyce\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17kuen92pt3j32yl0xjseeystwqvxlakaxnmhs9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13wh7h9wdpn5m6lveqp7f9y6jl8kkrn5arz88au\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14e7x66gtngtcxe73g6tvdy84wefzwwnhsvcsl8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17sqyk6vgtv9e98qhte3gq2psj9ewte3ehvvx3z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1radx6ajpyh35mymxxsl75alqm9fktxrrthxpur\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wh8j3s8gzlcxk8ejzgh7uvq03kelu7zaar25ek\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1csfcj4ykz26aycexwua252gpymtsjrcwxufyk6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16dxnwpg72wszf0u0llzazsu08vulg7atmh2pmz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w4d5nvpnyudrz9mg3a8yserjq2r9nmepvrjh4p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dn7sdu9upnq4u89j9xpd6jnlsj9pkawzd0w4ql\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xyzdxaydpv6gekfktge69383r3qx4t32mvlw5z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19wexkplyvatfz6fyevlkptnq3s2deap987684w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10w75az8kcnt0zw8zcaa4sh9ygdhghpydr4rszv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1put45u0k0qjecr0234tmleysapw0xtfedwwsz9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14usfh7dtfk35fymrrzh4m0wm6adcml8dtdnvgr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13ej63hl3ud85vs0lrcj89umyjj23rrhuhvzdux\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zhur3ey3w8c80xdtfgqc6h2jxujpav4lrfwf9h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kvtc2sqy4qls6h884z5uxjht65ltyuqfccd0ua\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vkmmw9z5nr7eflknqgapssmj33uuxtpj5fatuj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pkey7e4cluj0834vvxskmrvjqq4qf7rkdm3kpp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n7tult5ktrm59l6jfchjpfj6xdcyglv73slam8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1a0zkk7kkrqazh3ssgz548dhlh53jt6e2czvwxk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uk3fcslrzygpmusqz5yx0fymwyf5862u3gutsp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13d4gqy047q4mw8dvq53pffup8ayujlmktfwysm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vpjq60s62ke3rntcks5l4jcxht3an6d840mwjh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1s54k099qxe22mnxnal8et572um5ne7f75zyapy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17clpjxe7pgx22w3r65apch5k75rpxv6y709emy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vk9ec4z82yc2njsyh6hxmlsptwwal7a75j9tz8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g437fxncnap2dlg7yxydag4a3wuwxsgmkyyhv2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xl8fu730cmlvnvugp5xvaqma0gtpv4nzactffw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wysr237l8lsdcemerlyhps9pq7y0k4yqyupckl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10mfqvzjt8sr57vrpt0zfqf0lqya0rdkqjj5j74\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18aplapdfnjxkg02dm869yfycsjzl5cqr6swqx6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zmvwylddsgqyvllcsetq5m409l5a3vspms5wdz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r6rj7gapqct2g5jdqhjgg5ersn6jcmkmrq477r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j6z2w4alnq06n6jn5kc9rxkc7avm88pu2g7fys\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16mvylptyn8jcepe96g220wrnezv05j4egk3cup\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kjcqcdmzrht8qmhhj8ethnnmg5fxq6v3htm082\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xuk4h9tj0uu4h3t7ykkr020zlzvv34j7ngdaq4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u2nhevtfwl7fxjxdp85frk5a06nrh5764xrhns\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wcuwxftlr3rtf9thzrxu0wahq3d3frjc2jau07\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13rjj5lehf2yfm4vpeh598xsuuf9hadl5n4a0ed\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sxs0m05m8twvgl3sf9y8pm6np4w0kmr7emc80w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1s99u8qq6u3trxcyq8uw7g4fh5jkjkdxge0r36a\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t2am49htxga7evx0dgm0lzfxhlhmqwnncggrx7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mld677e80den86sqp7ye3u5ju72uklz9sx5cvf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tkxrcw3uy5asfgwpftnfd6w4qn7scpsjjnzdfj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mtgxv0d66xnwq7uszp3a9fkw6rfcden3v78ulr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tepjmq8nfjg0l2f8t0vaeagpjwxt0g6dlupxlm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uk8zdllpaxyamg26amhgexc5qtja5pvav7kg0y\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qfwzwgu44pnq34gw2ry9hpnr9rnt4clkza8wwe\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12ck36hwt0xv4qeg0rqjeykwkfuvz8uscrnq96p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tma6emracch0s4gdhtffa5alsaarpnc6h820fl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z9aay4l4pgtnujdcjsxd9lnrtskqhnt07unl76\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pcwdkcsje4ghchhuejuat92sg8vq2ucxy9arsa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z9r94hx0dsfrkapp8r5etazk2spwstzd8fq6us\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yn9c02mmf4nudxck97dh77a0aqa2k5lfazg4uk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hq93p4sz8ewmuu9wcnrurn9w8ythsyhmxxudqc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15rdm2u9v69nw4d08f2qqq700z0jxqulfqckuxj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uq7yve8eywnawqhtw0csf8rd95arhc9mqkdwvd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1x8q9gcpaduqlm43upqg2ns2eah9nstzxsrzh9w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gcjk4ydxjw8x3c36she4luggqpjkywhjh8ncs5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16wxqeclpd5lzm3cpt7kh3anhpet8v6jcl6qtyw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zxd0t6tlp4ryrav26wsg3yzxfn7uqmz52qsvt7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom178d2relx58yu9gumdm5hudepujykzd9zkvdj4r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1etvj9n5pgptde9werj2cxwp4ry9weer4f5cyrp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jn34hsajz2jwzzsh4af4lce3hyted8elahukp5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eemjzdddu5n7gwydh77zr7whmylg80j2v03z7p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xf8xfawzpquulwp0f6z0kfj3fss4ytnffrvlvs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ua7gnmcusw3aju0hhajen4dsgardgtx5as2ult\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15fajgtvmj9h98983uhskszx9p6x5h0855cgugs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pvmfxq9wq2425xa8zxncv5rrhm086q8c66ta9t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r3cpd2c2hhv5qh9hqzs4mntxgrzskpy425kqu0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gjq4fgmxdcy80aj0w7whrrnmle8me2aetnelua\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10nug4mawjhulqazac2u4fxzqmnjmputwslvj9v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mngmkfhs5z2vz69dc3vzwykce75k027wmcgdyf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jeljmyn972scjc0ua5s2pghve6sv34mzsyydg0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dqjy0cehwsp7xkmlc7vdug4z2dcjmwe5994vxc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ctgdt08qjj7ye8z70gaacu7rncd0wy4yfl3qw3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yt3hn5x92qmy7jdneuwxnl25d9vsrpppc3n2pl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1znfv4scakeamzeuttjt0c5v62p2evr8hs75p6g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10grawwzrfte0vwvkz68f846l2apwjf4gxmdd38\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19q0vq4x6fyjt3gw0h0znwyy7m85zgdjtvn5j2g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom178q2xldeaq7qc9d9x7v6hp3l6jv02m98m4wsmq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sz5sl9zhqf6gu4juenvksprgd66jyxfw06s2n8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uvwgpml6y59cgdhuj9jep4k793zt75nj73n9qd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1q5lcx6rj2249qar8wz44fvwz7qzc8cr9jdvfd0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12uttyfrk644ev3svycpdmgt72mwf3rvre4n2nr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1m2xpnh3ra257w4p3dqdpxuk5xnz7lp3jqguwgp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lk7rwnw8w7tcm9g77764t45t8l0tfxg92t2p9j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12y6zds7tx9fyj0296el07ndww7asqygcfsjnvk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xt2ku408tqcml35fnkc96p32zgsdsk0ahn967r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d0kwgl96ak0xwmzlltsmvyxcm2ls74ktww34u8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gumd3adaejgnzzzft8cqex5juq5zy2jq4tvdtl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d7lknng2whr2ygg9lplwcz7ghnwzd948gf3yhq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18nmdxyflht3w9fax6kx5u0k87r4thy27606s0v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nthl03dc9nywkl3t8gf8m5gegme4dnj0ve47gy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1an69dy8fcynu2jf6svrxhhnv3ng0hqjamwrmma\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zlejqn3q67x82s7q9r3nt699h5qe3klazvlqtd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cj03t2qpcr369l0makk92k57jp0fr0ehpkq6qa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vclngs2032h503mr5njxwszus4kujnm2a5hy2w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18tpr568w0yznet39namnvr6gkd52js0hapc5x9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dn0tuap6p4up8zq9rrxl2hxaagztqdf6296qrt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rn8t4xfhr7r46rvkfgr38ds735ctveqpqrgkzq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom127eagjfpaveagazclqj6qd40h5ffxfu2suwxme\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1twuk357xcxwj0tqh0r8ja282ff936rcen5gyqr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1szqqzafdl7m34ua0j7drt6pwr84g9pqksqjrc5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wsh8gu3z75l8wy43num2puegyu84sdy20pj4my\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mwlc8ahly7kw5wpmvrc7x597ut844xar7yp39l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xmctcwx3n2arrrrue8gzlsfs0a7myqnhsw5222\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wmk2hmav3wea4rhe6tfuecqdk09d9mu9gkksj7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g2lmhj9jyqwsrjvpyuknsjfp7xlajwp64nk9u4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17hngm9snw5wptllhwcxtnnr3s5s7mvy7htyvzk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w9r7vvhkepxgmju2m5tfnwdnf99xdztr8ak2g9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eqdlcksfz353mj4m73nvd3amr3cg3n4pkumz95\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1a73432ykufe8h2vwjrqr0dfkxhdurs4hxxfk9q\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ve7n538nmswptdwmhfemxy09ex45h7ey8hkey6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17ccefdz0qjca0qm6znvcqus6sye25lswpqd20p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12wzpn0ymfwlpcx3k42qw504sn8cjcrhj8ew8vp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sx4r5w7trrehymfann37dwcr58guw5y0yhdx6v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qr0nkr4095xfzd9adhyus2gf09ju8y9vgj6kkt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1x7t83pny5vj2pp0assal8mmem9mnzdt9xdtsh9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fn4p8gessrg55vspaxy7ydf48du0s62zxh7y2n\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yfngh9fc0wjcstcpsl7wchzmnhws6n3jpjxyk7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nvwvw7qhvxef40p8ymy8tmj6w033z7qzlcvqam\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13u7fdv93pz69ve4huakftnuknwaeaxvczkx20e\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13uejqe2sqr3daecmm8vyhwmntjlzhfye007wf4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1swffxhtd5q9qd5dtl4qgld5lg45lnvnm5ul6az\n", - "\tamount: 1boot\n", - "\trecipient: bostrom188fzwzfrpxatqlyz4ascmuxph7n84x3rqqmw56\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uh7nkhz67nlpt8r6xrw82mlpy52v4zjdeywynd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom133nw2rfwhd4jk8rkzl7haha794qfcuezcddr04\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r854fy2zm9x4njf7dw3n6sc4ghhcgj3c50qdml\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lkhqcvettfmt8vqwv086s6q7llu0at4el2j05t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1urp5xjm3s3ujuap5ffe3wlry99y9zvhu0t6eg7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fcxk5ez2au8dunkkq4r53kmv0np60mf7xtpzdu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18htxk7d5vc7fwmek4lqm8qfdfgpf4u0p5s55rx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j39fp37rqgu4fvxd82fhsdxjpe7r6ekzgqj6jx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p3f6rdtj4zdux962qwzvqmlclmhj9xd42h0ed3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g7x9gccv0zsg5mqup8m7hm40zul6ft03lgylnc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eqcn7gu0secln6klc5qdxp02svj65vj3cl3365\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pje66rjuy8mjyyqnkrvzjc9lrvax0cjwtpf0vq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cnck3ud4fh9dg25p9wtjhprnq3p0ptuf5fpp8j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xr2uuj3vwu8q4745gfpj2wjc5yvvmhqgssh7r3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12mkgdlfc42th7nlg6a7lpjj4q3fwj05gghmdv2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uesmlkz0eks8jgjkmqj4czkltxvyhhfezgpzum\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t7gl7u2hlq2cy3urau75xn6auglay5h8hsx5rw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1x272jlajgnwxngvm5ld46u52gmylvxjy66shpu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z0hwdug06j8ssmc9pvhj96578q8xhvxw7qff5v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1aftuzmwn3957w6u893ap34gp86jd4tkyes5ved\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yq64tcpxxe3egzay46yupa0h8q3eakpaqwnxvn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d3cwhcvmgmvd7jq72eyxfvmcgvjd0xm2ruzkss\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12lnefgszfugjrd75hqy399fn73smdhn6qvmkd9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19rdue54zz89ry8wyjavns3tj49sdglljsxc7fn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y3sleqy5ml4fxmnj2egw5z569ryjspu2wz495q\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dhggqcmsw4clk94hy95wksc9kghth76uk26fmv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l3dgy77sfzfu3dk2ttjy92dzhjx95yvh47anpz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rfe33s9ap9r7dqgqt2x7vuz9jgm4zx74zeqtrm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18p56x0qf0sx6w5keghkk7f8ra7tv536qzrht6z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gguq0x89pyq24u0ydvlduuvz3xvlnmhzldy659\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1s5smwjhumxs36jfy6j9x3yetlffdeep8x79cg2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fpa57plps3g9stymcdx97xr89aygltumld5xex\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13pd9jz8ct3u0e7fq6q79yxfy0f56pzm2uz6s3m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gmrq5cy383wp5mu93q8xrjqu8mtlc7z4l85n8n\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19yp2lq9ju0hy3lrxfu9d9zpdfz77j7dhg53usr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17zded2302qwsqf6q0en6azdmmqg5mfmmy7a5t7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t6z8uane2kgflcdl0ye6mnj5w9w0ylvm5jettn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ja7p7zw5ucpt4x5k7e55wwhtr4m35y340273dm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vcp5hcz7tlc784c9xaf7y8gggdpuryyt9zc7fa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pf6r3cprm6p5a0f9xeg6y7037jy3rwu9c7u9tj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1alf4qqmfkn0wksxkzpx2pkh9qdrev0f7a2ysfs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cgzheqra70ar7npfm53atczrr8ym2ga4hxkcps\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qkgf4u7g86uwfwsfdlfgxwsjywqxjze9yvdaww\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zmeem69s8et3mv3p48rq66l69jr3gxwwc7c4lu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tt99hwuuunp60agve9drfwac8wzgapsa840gyp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10mqmg0uzh63qv5df93ld6e554lvarwte0sj9mj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r82zdseaeyw92fq89p5c9nv9eqk6y993s0ucvm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1060q6um76nuh3pvp4r6cdxajhw7nd53emmymze\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18djqgvy9n50p5pwe9s0zg068mrkck70m3gktlk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l7e3xvjzfefqyy800rh80w93hjnd46j50sr0ye\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1npsv7hym66ea0ql2k08yqp70399dyva49xa7y9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hym58vzss8f88uvey95h2gdrpwj7553djcyc0g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13mlgzr0zx7gw8q488xhjevxm0460jtmrpg9u8v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12kypg82h4earh6m8w74w7hj3ud9euym6etu6e5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gud2acwe0zpr5860gkvwgsnp25n0l2z8z229pd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zhw0c7urhu57qgvl2atcxk7ew43c073jhgjnt3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qq86n5l93a4djs6ma5pyw9jx4r8f9pfff4m9gy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ugmkvwlr0g02rajj6tnk0p7emm8nj0mzsk9eea\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gz6gfrmn0tus8rk4ujl9stuz65zhry7nkny6ut\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u53ph73y9nn5hh0pyh3p7qsqdpq98jjg23kzs0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hyztum65jaqtkdlsxdzckh23m7y7z0gqyu8ku2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xqyxmwcwnaw0w66s9y5x44y72kk9x7x2cc0wsg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18uafcqkdcvnmel7879zw7a78w7kyl32g554kz2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1m0zs865m2yysmdw85e4dt3zw3csl4sstq9txpu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13p3nrzrj5p3tk7ajuq9qdrt43kkcahm6ahzhfp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c0uvnxgyace6ddz9sr6rf7e22yykfwef9mtu5p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eva5gh8fzrwz2eqg3wss4alpufhzhr2e5tfmfl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ejkq9fdx6rx7fgt0rh2g6cgfvf2ulecsgwm2mh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ch7rf9zy09hslfrequf3w4kc454lxmljlx52cf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c88x33q8rjkpftg2dzhze5l9t28szvqktdzlf3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g8f67c2vpc0q45gwfw3jjjqt9u5zcz5xl3r4wf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g32ljhw2z4r5rkwlfsywuyvdtc45d7m0r3g4vf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qcv209sdclc0qhlp0gmrv5l8pq89gxzzume68a\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1269n2apd3jszu5sc7xwnlk3quj2nka32a8qtmp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1aqqyj7hadf7z8f56uc2dh27v4v5uryecwru6l8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17z5efk2d87uk5c6qz4x8v7xasng2wu6lvw58w6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14wcz3qqglc3xtms3rknn5gxjuemjfaktcd40yv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1knmfjgmuz4l98mkvuqa2hm037wvejc6c940ntn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w27rqy9sf4e2flf6z6husn63mmlhqujl7t6x8a\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14xyqvg3779euwwwkst84aaywsxsmggqxf5kpss\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1f9xprxme98s2xxewhf6ync7g26ndw8t7lgs7kl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1udjt769paju5ruagt78jp2r0enmspcqflfh5hd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vyrkdvnelxzyd0u23mjw7l0uph9lzy67z973et\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ctkx4qa2vs62fx4d8h39rmd9q0dysjvzzwhk04\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kvxp92nyhwy922zrr5rchk5rru4sdt6m35h4z2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17evzl0d9a5px90yls6dq2ekpz0a43vp8jlegzv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hqle74egja0zwaanga63rq6s2hk4sgjl5alw3h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15ajcv8n9k5wz7h3u48pacwq8j58r2rvr3vl33f\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14wu29nr5vp5q2zrl2ygnerhs3hp866a4cacux4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom174q2p9ehm4ydntk7rhy77hs2kueg3mwnt20h5t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom199eyjlnj2wgwelpx8egh3quwt9s0vqfp4qgx7h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ashgtf3lsf2nfcp9x725ck9v8ctk022a7789kl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fp4a7n3q5s2ql0zj309udkr0myhry3qyxyhty3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wfqh5e9lykt04mssdgjax2lhd0pagel6ds49jx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16kjvyw8gpprpenrz4upqch54u698q7zalw84p0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19mduln93h8myzugt6xs3zhgr29nltpa9cqnmqv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1za0wrpysy4wkvqskekjv4g5ftxze8c8tnsmlvp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hmxaqwzlcz5qhgfdcm07c0dwuxtwvwm86mkgdp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uue7ltd325ct7k7yck9pz8pykhref4a4lne3aj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1m44n26mha4t6tt2t6yqgdh4que855awltxeahv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jv0rkxr3xmftfacgsqy560c8e4mkv5hnmqgdns\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pxzdgep63pqq6s7qzy6z26qyh24kk7ya45smp5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1waeapql09dkfn7y3p7y8r0hsn9jqpzgrqcqhsa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14z3j5xjff5w0mhdt9cjp5yf576ne4tahpyfn5d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15uafgasmjxa086lmgxhf3789k8enezwsv2hny3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l7q8ygdxdyslnna760xkylxmuju7apu4efdk4g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gueaqpa9fvhyw5js3ml78p338gwexs2szmkgxq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dlxpryc64ljy8ycnqed6tusv23vvzer4qtgwg9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15yz3frzr9896jfqscvgrpr525e2fte259a79cm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1znj847urese9nv696zj8zhxxnshas9jjxgepnz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c79sdr62gqw0c5vl6cm0wmw6nds4sfuuvdcej4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1a7weglfpt2m098qyhvtd9ud5uxqsq49cax6ml3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12p0k8wte2wczpp9zt637ml6vkhu9tj8j0kca6d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z7yw842j9k7t2lsmguvck0unmja3kex30uaauk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kp62twpdjz94dj790cwt47un6trycznxzypase\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14fj2n8rl8nrmxpvjt8ys4k28eyf595zq4xdwuq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xac4h96xgv6rsq9fv5pu3dpu4edrfsgxcvmasl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dt89326l9qws29pp9way4nk2crn2ag2m36dx5c\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gnngg6j26fs9wfalxx98h845s3ffsxzl8yhxyd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wc3wrtwq6pxkv458a6ywpxevxtm4qex3x507r5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eesvjw5vgpa4s2d0j4we8lnj72v8yhkv9cczy5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ca7j4uyc4hvpmfpdkswka8z5qk8hndc0jtpnpm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zpqdssdnj99ga2ga4n3g2gpaqurrvapkzsuryh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14unks6k2v2hd3zyssvel4uhfyrm6s3l9h64lzx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15pv8nu6d7j4a7ww7mushq0wgcl6rqlstk54hp0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eh00wu9m4ktcmgdgeakcdxh4d7tt7ual43uffz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zslykk7d4q6v2586j9z9yhzx0plx5a834x8gr3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wvk7dzpx2w4l686fv3j0hwdhj2c4mg4ymyet9s\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c8mg543jekf8w33asfrxdqnm8jhmqlzjuayvlx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13m8sk82c43gc2fxmmk23k6fny0d2zvhamx6nt2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dx66n2ly66yeymu7jk9mnlz6tfvnf2zy4daunp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom185gvs7lkl6z6uvcfdlr3u6yx8d082dn9z2eqe9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l32vtc6hs259a6xfwskhxlnr550z9nwera5mpz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hmeruspxkw2ptuwy4af9f5xhrt3jj9jxxnskja\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hjpgv89evmjctjhd3mw843g4a3272tayln28jz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g945f9hy6tzl3e3lkjvx8n5r3tjla6kfrsm9na\n", - "\tamount: 1boot\n", - "\trecipient: bostrom157h75vtll6pprzphzssqtzs3mmvtj5u2tf9u57\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1knzp0vee2lrujy7smhc6rvfg2572gceh2lgwf6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lp2yvc6gz03u2kcdtszqceff0eu0vnl6a23ahk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1952hfdkf0ex6q5m3vpaxmezcer665mu909xmvv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pq45p2407elzxt7rrdh7zf8pjquh2m2x6k3mq0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j5ha2l0ewuugp2f9vawy3x2edt3ewmt2pfmn7e\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cdzwjlexuytfw7hhan6m8tf98f743evxp00dxq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18v4pqyvn49j8qcvlpj3vmw9e6v3845ase542sq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom120rdmwq6hpjhl6d8qz4f0te39ufdqzygv2av6m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom127v584568v3c7fhevum3ppype8acsqmucm2gp6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z2zs0sx45qvaz59ppdqy3yz4n5k9a39d7jqplt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g6sx0lu4n23ez20c3xwtrpr62hn4utwkvkcpzc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19umnv32ek63rlyryjnpxegnzn05qy5ayhd75e0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12cy8zec7kc37d74624y7gf6use79ejyy60ue8u\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17swgkgvmllw2ngr520n7u2kfe6t5nlxfnc09vj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1e9yylynfckzftmjnkyftuxzgx4ap9kdp02az9g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fpdgwaqaxncxqjkz3js8mqg43kvj4mecshhlqp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lfsmp0pre869u4t8t5yqlr8kxv97ed8qg4d874\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qt687vprztzl79exp97mu2kd5a5vud2e0p0wqw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mtpq6h5qzdn07guyzn7yqcxf9czh5csp2y6aqc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16tfaxny8xamef04fwttckwpdt5cmr8r27c6vgn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u7rwkllwrd5shvced5jmzv056u57j5jsddxu83\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14fhg9xz6m9ckpgzjyf8ea202s4lygvamhrcj54\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g5n3j3upj7pj0tn63sqsn5qhmf0lj45snatx93\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jwfl9lsszatf7j92lq75x05v6a6heuvkg7e299\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19pf27lx79yvkjdtxepjy84eusv0chq4nfc8sue\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ednnmm8mzenmcyxzcmzeelknx7yrv74agt0hhn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom175tm4ugaf7texe8av85nehcf3wq9w2a0raeaw6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yxrvtxd0nufz8k8zh6eu4e9lml666z3vh75e4r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10c9vyyess0fptu6l9xn9xlnm4pyrk7smfjsp65\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1an9dkc54eadpl8zqlhm7hka5tkvn3gjn5e0ul9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t6vldxer7r2zq98xuy3c2ydmxwy7z5tsdf4vdx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n62fsqa6a7hq99aewgzgwz79cmsh65usau5lr0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p3lg0m0793cfqkny3wfufmfth7jys9r5u3gsym\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dnwrzpcyacv0gfv3za7gmn8psmr20w3khx2xle\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14zjqnlndlgl25jglqjvj7kxklgz5gvga8tcxj4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yz9ls0pu8hc06pjc33v6wj3zym4tc5f8ck2gul\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15lc6e8anzj3ddtjm7l4szz3fm4ns4ftnq90fgt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15pvr73e7vty5hy597t2zler0xktsds6yprdfqz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19v6f86y965fsg94xp0qjkm45kuv5twkzs4p545\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t7pfrtxqmv7wmtfv8ujls335y63etgu4jdutl9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p2cduzf67f9qqrxx696lf3p8cmazmpretak450\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ug94hk7nnh709wrf0avrv3d9s05cw95t0na46t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17zu462kjxhsgccur2up8ux7pmafsalf7gf25xx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ftfjd03ulp5l9e85muswhdrewzr5vs27x93mr0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xn6smucngmns54n6ag99s9ryhn2rrhdfxxy84x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pw7pmuvezvxzel8e0uaxrydhp9pw6fdl35plp9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gqpa7kj63v9pt59qmhpltnapr6s6srarw90wlt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yjqtkpcywghj6555eupyjq4lyqfnm5xu5yv86k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10drcuspk0su9nurteuhyhcscad7vp7gfvexde9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rucrhynpj0kfm0u0zyns2er0639jhj8udzgqpx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y8sq6hg6p6aqexh9wgs6r0nk5u6dnu0z5r8q7z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rgughu024v2hvu42ezn6gajsdzr2dkemr4m0kz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14kx95r30u4al720t0mp7uywwfpjdmdg2rhdlwq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13ztrlp285pvjeuvekyudfy7ude8m6pukrrx2lx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1svh8juxczgz0xd784rwrgugz43hwl89ca6kw8x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g2hhdsj9fu6jm85420mlps06qw23lalmz890v7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1np7td0w4nu079e2td7u6f3r305cjy3udd538x4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12ar5m7l8tf7s2jwah032um0u35k3eecx6mfar4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1h8paexz097ny3xrw5txa090mvlgtl5x6z403gr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sgfmetwgv5hus4eh5xyq2t24qhtd94p83r79ar\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pqgp6wnvr7awghqkkna7vemys0tfprpgnelcap\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dn87qjuut99j85vj69zrmlx2qv82ghu7yh29vg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zhfxel96cafgme8488ca9ruxu20jwna5ycjeru\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ds987k8l84zzzxvjamypr7hslvet099qx9zjwj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yr9gn0jjxe8jddzpg94tejf5f2gclq6yxnyz0r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hjvgp8gae0wmjks29x3as3aw04z2lxu8ya3xc3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wknsu9t7fq9j0hp0u6sh66y8wz50kmn7hkq2mg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rnp7kvm9uxsy4ymkv208v88w9zlfm6evp3ywgy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qt7gd3xmplz54g0jsvlqp8hp5l5e5hsthjnuys\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lh56g5kuh09amm0gjeq08zkjh4vwrs7umujz2v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1twmazns493ltr07j8l2k4vfgj3lzh9yyuzfnds\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ygeg5nwmfpejmp3y2y4xyrlwww7hjz5uvy86pr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sq9thveegy0mc7e2c2jvmtrd2fxsythrnv0ewt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nry8yysmr8dsygmtjy4xe97vtytxvvk8v49x5d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t99vnf78cfdljnq9f6xu7w6dwt8jud9p5pajtc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ny28ge556m2uz85pr38fg52djrpl2m084vwhn7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ehfuvv4v06fytznlhzgqq0z8exmcqmu37tzwvk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j3s5tpjphqzxwt4tpysfk2736vxtdzv4jaxnz0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom150ru2n9yge85urj8y327zdenh44hrezlp7g5ga\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12prdczrehp8kz43k3daypnf6ypkxza5hepjcs3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d0krs5v8dv53r9q79ah4pfwlv77mu50tvqt2j3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fhc0d4ey0d2h67jgarl9y8sal2e2nq3d4x0um4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1evyujpmz7452ae0lyjq24de5d6ltgclvv352ec\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19vvarrtver9z5zmqzkqug3jj480vhqatd7p20r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14m2y4s36qdfdf04v6ng5y0x7jg0wtx0vcxgpz4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dxzxhahtm9rsr5rj9r0rku4lxrpl8xl3lljj83\n", - "\tamount: 1boot\n", - "\trecipient: bostrom159y7efzecfhgyuhzw0f5crjs0gqtuesjfw25dk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom166m2zu3l8cgswsa0hfqqq02v4tv677za0d836j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1twd2dsq50gzxtgue04lg2t8attth944u9dn6kn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tc2gmgpd5h8ywpm9tqsgv3q7uuhcy90plv3qzz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hffavyuxj6vthsxamrlpp8qazlc58rppsxsmu7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1canhup0kmalham7xqga5tkdjfy86zvlsu9jkr5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pnkn0p9zzzz673f3hhhgstj3ge2n0pfn29jz5p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1q72pueywv7tyr3s8f86gyt4rs9tltssujfw4pc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nlpfcqqrl2rj3xelkhg2m9yn3kpyam7dfej4ce\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1f6q6tsvamvtlc4z5uj3tkscksjzpeh7wsq9w97\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zfg45x32rqdmmwjcgcnf2m6ahhm3pzng0tpdlp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12u7fg3qzhtrge62j2n7t28z9zvyphh4xha5p3r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yy4a8u45tmd66kxqknnghss6aqgfwfpwvfxj9j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom158selq0q73lhd0fp885d3r9j72jue790matpq6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14mj7veqmcjk5dwv98lycjylrg5kdlt49qa4mqv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jvjzr0cylkpgs6erxlp3mmw24t9e3c262fzrh6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17m6jtjjddj5rjclhzlhauj6pcugqs3gzth9v98\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u4jdlnlhml65n6u65da56as6rps37zkzkhy7y5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14kgg5pz7ky4nf7857ah8cyfq20cqlf7krtf693\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rzg7wquj3qv9y5u634glzh4c2k4ffhzpd69ehc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pdy950wgz75yvaktfnp9q5gkd22u3cgvx43ugv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12qen0m82h7m59s235gama47qyvftz5uucu8jq9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ysjdg6j8ly8l5tt277znys4kcu2d7k4nrumqc8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xa75r6rnphwxvk7amzu7mmy8vfvcd5v9fmxt6d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z273fl6zc6vnzedsrxgdr0xj522dvrrmqtjg4d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pvd26vrthjftr9sm4j7yetyr7z8egjlm5ryhxp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p95594jfmf6mnryp709l5pf42a07ngqdlj46ex\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ts52wf87zduvy3hpl0vycznlckptsgrresdckn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eul92v4jgkw6eyzwfe2n25uk3ck8vtnu50lk53\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sjxztszfn995jupzmazgvy6798hzqgx29x9hvf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1f4dg6ysvh8zelc5zef9n03xrp4vgdua6c4837w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cdlxl3h8x26py7hrxprg47qe28an40fxa63f5p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gr6fpwcrr2lvj5crfs45mjqvql2ad3m24q0e09\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13tcngp3dwdnsl8xr6qc30644x2edtrj2k456r5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yhjw4wdlwwr75gjwvsu2czl52c2lpc9tmd00ht\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dmxe22r72xlhkejvztet6c3eqltqayg7e3hvxf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1axvq0dprx4rkdhutvctsxaxueuuq8s3vvmkklt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16f4ykcc2349jmhxwpn8cwrzhfh7yd7c5m5wdet\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1shf3uxcnknp6j4zsmmhhmgy6hyehedcazsdd69\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yrwqwwrvfrv5j2dkj3v2mzugeer4h8clm6y99c\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14fjynvm50z9p6aew4awhskzwf9t8c0ssskregt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1q093ejn82ddptmapsmjgunypdgxecvlh4vpz89\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sxkcrjvw2w5rmgzt7z7dvhzncf988cur2kvak3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1avjhcv8ess8qqykkwf4s4a7f0qawev52selj5e\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13egac8u9ma6hftyu9dkgsl22n9ukhqn2xx62az\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1a4h7tjytue2zzv27ntjax3syfcsuszy96j3r0g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qw3z3q36gm9m9f6zef9g6s5qqtgw2gdkzw5tqs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lfv9uhwpl72v22j3ejfcjng5rdtfnsudsxs6jv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1s306rczf4l70r2uf7nq047ukp7vdkwvssn92t4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ry4zsklvhtp5efdv79dlyazhddzr3ug90g4puq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19rsfq6j725wm8amtu67w9sfagjahhpujtqauy7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tu6z20gmfdeglepskuv63x6wy8wl3ulcrqnzja\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gvu3zxfkmt0ws4usuync65cllzeuztlmrl423f\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vyl6zk985kgnvzm9dlwuyyxc7t92ksz7c2p9tv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18uuvddn7t8z9lhqprjy9h56yvzunu3ckpkm6se\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1krewlvfhem24gkh3l4rc2u5gwvq9aej6gq7gnx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gfpfa4540rsn9g78nqm65x5gmpw847k5677yrp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sucs2ush5tl9c4puu0thls2k3yxpymrx4kxqd7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1f2xjvversu4rjrynvdwqp4khfk4rrhlf9jn8h8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p5skesv5anlf9t8s7wpncrrqptp9lucsdp9gpn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17haqmcetw8lkgughyzwu5tghpmdsu3vsh8ktr8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wy7034f8r0eyw94sx8zpann0akqw0wu5yqxxyw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zvcflys92w5ej9xyqmg2aeappy3y9pyc8mj5t9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fpehl9sp0tfv5uancnqnwewp5tw3h0csd09pu3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yzdg66fzggcergjdzfd8tzpu8402uw40gzw279\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rytzpkvvz5ckd38kjym2n7u6n3g49sxcms6ynn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1av2p2srnv45hxxeas53cxpgvwlrr8a6s36sc37\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1h9ffud74t45v39ddgh74ttqtehqu6g949lgjvk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zkf8ed8hav0940aerg0xv54fe8k8dj0tg2czj2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17q3lqzt5xy5j24w8yjfpehpaeqdjfe3m80t75j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zznlyhc7lqernh852dnr6qe20uu2rjls9q3lux\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nu9apajpl0fqtqmga3xqvmlk9gcp76tq3m9lcy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lqt92em8zgeyngghut9azkacynk4dh6mcljefk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1688qrcrjx4jvjm6clw4p2q4yvxc05acf69v5ph\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13yex0p4l58ey3ute4rugjevarcaftvt0a45wn8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1q265aphtfc7tweh55txxczjczqd34v8ukvw0tc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19jtd23actawgfjtxdd9xavhmrpvfeq96l62k2w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y440w8rk086fklu05d75nvxz68qf64qft3t4u6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tnzggzkqnjrnjqn9zg466rreak0lujyjtuxwn7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dduhtfu2yjqedermnzxrwun6wf8spyn9phs242\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12kvu3hfcypnm0lvjzlltq8gmh86x3r5q944487\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15urnqr8gmzrzs6jm332u23r22njgrzetcsmmah\n", - "\tamount: 1boot\n", - "\trecipient: bostrom175afp3wthtxglxfc26qxlksfr22268qyqjx2y8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jqrrhffpa223mwtl70n62g33sjr778jnu3ta2t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hr7wdv8k26qnv37gujphhx3xxxwk5kxtfxyqpw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w3yukty9h752t4sa2dxvnld2339e6nrkvhcgk0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sffxvpf7jmjjrqc8mzr4zcv5n4ulmu2k46d8pl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10fhh4qmfc42dpq7fem04pqh2a9q354n285jtw4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ef2wjuwlllf54q0q2v3drvky6kyn59x858nxs0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kvvwvkfywplfpdkxqkajva0q9w6lw9w6t4kgwy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14uu7tmtd2cnm4vlg2hdz6ymz6vggagkg2led4r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1s88j6gcnydvq8l8t0dr2mrgnhll47pedun8zf6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17lgqcqhr3jtjx7244yxa44cja8a7vwepewh98y\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1em7vxfvhp5aeqa3xsr367thkqt3md4r5p45ul0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18tyyxsqekxc40y9qducfuglsfufq2vuhmgtx3h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uvvc5x2rwttfcpnxle43y9vvvm0gy62scwedal\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jfcxjz7qfnpddcs6890ad65cnyv3yrexrnehr9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jxkjtag2afqv60ce7a57r88lqt9gml5eaxy2mn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eg5ur9mhtzwgca2ewzf4dturg568h95hn3pplu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1m3qguyakr0zdztt7jnhrw3vekgx3vmh3ukxyaa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom109rx5wc09drz6mgyrsmg4478jwcgersf6f6g4r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wwq8ry72zgjk07w3s2lf7eudwan5j5mv276fjf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mdge8e9hkyge9gzyjxmhrqsryprx7nspgtstwd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1upytuk9llk5j79kqpddmhujjfuxq7ldgevt4gz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xqrkffqdxht23946uvewg4smf6nqnkmd7pvqn4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10tl26fsefa5kpngnrv9uqlj7u0c56twkyzuetr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1danfj64ed8pexp58pau0tl0mgxksdq6w8saw59\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1stgue49navx5apt8rwl8nzpl5e46qz87myp8fu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nq98p5msulv3n42k46du6pudjv8jhsynn85dfd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1k64h88qrev7dyt4mz8wesc064unrsxqrcvagkj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ysm3x3h7vnzulqmpf3llt6lvweg3jyjl7fca69\n", - "\tamount: 1boot\n", - "\trecipient: bostrom128547p5nc9wl24n372s9nuznyat5pmdfey3mmm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15hfatjmfn4pszwds763qcxs47rf6dxnrw7uzkk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fqhzscfn88ez6a8w9p974m0y7tkaelel0kpp9t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yztvd4yv5lqp5hp974efndjs6sncsfjesd8xxd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ndt979njhcmp79qx8vpsuymuwncwaz6kedxszh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12jqcascyg2j5fasu4u2wlc5uazkc00xnt3fuph\n", - "\tamount: 1boot\n", - "\trecipient: bostrom173jnz8suu3zy4dul5yfwe92nk6lwh9jxjqnvll\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j2je70ls73rw0ztyz9yc5590gw4e43a9zvhy4e\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gpzc9tz07k9rugerlzfnr08yx08095tzzqvcmr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r29tlqfctx99c7msv3fy96l7u6k6qkmlrczpc6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xngf7h58l3szha03vpmanzhaxpnyxwy3rrypyq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kxf9xwksy5qxjwzu4pus0n3xmtp6458e6yk754\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hlcr6x4g6vel2tmw0y6lyd4j3dgxqpykx2zx99\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1psfj2tyxdhy83r77ywnxwvgld2xjh3tg9kj2qd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1umml2zvzt8vpsak6nkr5dlvj0jv2rcxsy9z5rr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom145zv4x4va2kq89qmz9pxtxm27vg6lxkjsggymt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ayvsly07neqd6kd69arzcrqesnxvhggs0aueyf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom189jmn5q9rhy30uj82fjv7mfmcq9437lenec2sx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1thrd7pwa670ekpydnwtqdfztq2yyv487vrdwg7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom164zzf0fnwyrqtddz8vmv5vg9krcq95g9qvv6pq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15kd8mawqqy2xc5ccqn6tt92cqg60fu5uwmq2p3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uejtuq3xjtyg5yn94u2v4flpu35rqj8zxkczyq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vgdu874958lvk9kns7dczjzynq557n4swplf3t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13zchywzrve3adnlu4j25p6gjpk0p7uwstx40xf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nydqmp4rf76suxcf00w9akyjq6l63qv9mhggpa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ku6uru53qm32xvdnje9k9g40klf7w7rkuqmd80\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rfgz5numwafwycvaf2nar7s9etfqjtampy2sfr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qv7lsur9pg6clvzjj0dm0pyufxwe305u5legvw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1q4zth8k2f4y3kxs64xlqdu6jedrjxsnj0m3jwt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19aet33cr8j8rnk9nzcxzx9w4czyry4gh7w3ct6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zs65q24dsf04wjjrajs4qtz5ggvv79y0styzej\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rr2dqjr4gzwl35z7r34fn9t2ys7aa3lmza898e\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nnn4gky6eavt2ldhf2c9g7gk6ya0d6e3p5v57p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1s8q6apcl9tr6285vh982x2enfw4zquf29ggvq6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g2mu5s7r9j3g8lzgr4luzdnzzyghh7fyhwjtfc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1et5y4vt0y6hnf5vffj5v0xl3k2z9gydd7tnxuh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17y080jk3uu5hpx6rgx7z5lk6nd5qdpdn4mzrs3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tzltfjtmczagn8x2pe9q5m9ezzlkz2ep3dhxuz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14gh7k5aptk3mjjaxaapwme4laqx7ggxjqfvn7j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xqlz2270yglyjqnpdeusff5a29ekczg0xcdw63\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jethewm6e3elgwa76cgx79ar78mgy2dk5s6a7r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j59389n9kff0w4nps709qh92r7lsakjm9xck3u\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13lkk338d5m3n8tkwer2r33cakaykrn7z8ryn2x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19ms2y94azy86e4z0wcnrsx00635490tp6azzmh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qynu8e696ulvpen9fcttj8r6ht9s9gg4gl82hc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ll0afd6zdchggfwa6lzt3mjfjq3qasrvgtrzq8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1przlvk8clmcp4cc87uzc5xr94gyykelka5mnvg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1em72tcnysqceypur446yd5628n9amjmntf25me\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c32vh8wgxhq59utlxq98ehcll8wrlwr6aajp5t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14xfewd3fza4uvu5u9z2d4qjvrwghlzp4sdgkz4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10xph29xxpa8ruud338mj3a8z2lfc8dxpqr7npg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rlvh6mjfux4mpvd6g0hmw70yr6dvthu4y30a8j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14j67e030cfrv2kxah9znd6nt4ufpru22wj8ctf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g8dx5jt0uwvauegwkslg9rmvq4sj7tcgr6jskg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hs7zvnk52fdtzdukzrm0wva4f7grcc8wrhuh35\n", - "\tamount: 1boot\n", - "\trecipient: bostrom149nln3f7dul23usefemz6cy4pme5074cncmew9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gxkze6g28glmhedc8dvnjwp3z4z7p22h2seyty\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1petsfu5yley9txgp7mss34tgxrddh89q6wrzy7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w05avl5wx00ssttv0vqafehf6ms38zvn38c7mn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tnx9uxsdwmhzkr045evm4lxpwvwgzn4mjf0ty8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom199fayskkn44y48hn6mcs0lw2zjvuns7njxu0xx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tm5zxzrm69wu7y2zetqcedhnftulypkq4vd2wm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1daxqqcn3m7r69wjp6xu7zk8s8z3hlm795nez4a\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g5r887a5pt8nx0ylhyxlcx3weae5dqgr84whzn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vqgqafc2tlayvw2xmnsd7540sevtgr2kvpxedx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ulkl6uhk6zjv7kslcge2a5gr4lr78znyycrkun\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nptkrzsak4u8c0gld8p8pg3xdlkhkpu4n7r08x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w6zrcfds5z0pcwugzwf83ytg95h6n4r34q86yl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nt47a5w5at8pxmwzshzlpgmw2yxpae65rnyuf6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16sftmwfuv6nedvcessekhmyhunf66zp6dqfj07\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1epft88z4kd5ru720rma6grgu8efgm7fhzj78g9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom184xjz8vshq425ycck9nnq83nessnsax7gku2uu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ujtul80utrp6ns26wegxmh8d2g3yts2y94ve5y\n", - "\tamount: 1boot\n", - "\trecipient: bostrom103rewrzpp4x5h376muqvnrf5hguazj9pr5lcz4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10088lgy06aqh2h069ta3lteya82sfa6a57q0vl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sgdwuh454hj65wc3j2uvfea05uxcl0s52fcxqs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z4qjwwll0lny909trmvfz39nlr33jg0uqgvlv2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zpw3s3u6gactryt5yt8fsu6ppqk9zdm5e4rs8w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j7vq4k2t643usgezf0728u6e28hl8g5z74j4wg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14gfr6hy46mpyzet0j4y2zeyjzr22ywf60mc5jl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tc2ww8z0xgtvyum66ee9qe5v40akgj0nhlgh0m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d9zjqqr8a4cdkl6p26hm26wf7al5lut8kg7wmu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17hp3kkqsncad639xgwt97mznkx4q8e62j3lf2y\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ryesa9tv27z6w7gl60k6d4n6e8gwsjfuv59pt5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mgwuuflsjzd22yexwsnxfuur45tj6az8qu47nz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rayd6yd48vx0ud2x7flv2km6sahhjezv8hwaaj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15c6vlmhp0n4egxfc6gj64j9vs9hg4haddng6hl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ddrqqwk882pl25qeehan4z955jq46xy8udxxul\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1e048nd27ukzr67pj0tu2jluj324mw9cpn5jn4a\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ftd2kmryv025lxjy849d9jlqmnf2ecx6mhpzu2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fcm3ane7jzchnm3em85utfapk6kxr46rl77xms\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vpywa0mwuc956g9kz2slkul07jky0w347saevk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom126sqzdjwrs5vdpy4rt8u6qp6pzp78d53d5jku9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sst7l6c07l9lzaa62h3f28jyt4gu803xv2nw4c\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1v7zngyq7h4vy7q0e46sp0n5v7ac3cufx9tk0yf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom184juz6spsyazh5qmtnf8hm6a3w93wfgqzaml0k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1k2y5wxn3y83g95xgtkfgc9h5vchv0rmpha5tlz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w4xfvyleucjy96s6glzjc7x8qw7zj826hjtpq0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17drstn9vgea8kg6lapz0mne7e9hwqpm5xnk9xg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eq7s2ke9tyveq6hlsd92q4n7uet5gekffjhrrv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1v78wjqz9c0p8k56xmrw3x2yx84m4s08khyjc99\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16fel77jl9jut0r0zwuj6pr59z23aaja5qdzpnl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qhr9hqmufefcy88659d4w93wj0w44uk9ncvc2l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14wscpjhcu259qnayu4j2vv4hmjfrvynz3xqcmj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1m6u27qyeur9hz2j07gypsu78hdet3vj07amhxt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uv4yls3802sctu8l4yayh5wntr9gat6zgkyvvc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12lrcza4k7ejddw4y5ntxr97gwgz8w45eu4rst9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ak6azsz696d7jyl2akyqn84w7chckt50te2wvm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10syyl7j6dw95q9y0syujgr282ftsxfd5cn3mml\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ygmzuh9lnjf8lpghna0c8zye2wla8z4plnntjz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vdekduddfw59t9gafeaa8shl90zy3gjv6vsz7x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p4f9trghseul2wvmuu98j9y2htwk9cpxu6ddmz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1asv4hz84gwp3vdjfemzy5v8eyqe7cqkzx50m9z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vh3zxzpd3guwql8guzpdlwg2w0ka9s64enywk9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xwlsur4rnc24yqkdm237qezj4cp0039xmk5dh9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14p4t08rmddfrqjgq7n2aj799sp8sq02qyjt2td\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t5kjnt70d4erhrrfntljcsc5qt8493cw9da4pm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yutd5aj8ht0ghu403qx73zlmxwle04zgc9tpaj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n7asgsh0tzsue26ectwrmy0egje3q6h2m5k875\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y6kfeey83ru6k44mwkf9y8ezr05kyrv3v4uduu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jt7rpmgmmk6jnwpx9fnjr4e0h3995rsjqrmz83\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1me9hrukz9vs52jsqutnk9yllefsu6enhprs28d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n4sk0pcdksvz7p80nvyzucrfew23nm8xs9rdhw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ex4rfhkx3a0q0086h60hh85nq6rhpkur7ksvpg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jxjz0525sfdl569zrf7ehvflmvdcqe902yks7l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10cfaxm9jnvr2xq3qf79d3k2lz0jwatn5ga3x6j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yvr9hhpm9pe8hdujamzk9qcs70hg3autf0ndjy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ar00awcunha6r043575gr4xeexcp4f5ktewzre\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1plrnf694p80ukw2fw2ptdph9hcka9k923vf4q2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jf75n5znd7m7fn8y59puknqcu6hfervmjcx0s7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g8aky80rlmhf579vf7yn2wdwjn40ny4q5amqnx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ax0sus9vpp0tshejpntezywnhuw4uvcyujfspa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pa5p2yqpr0h7m7hl5td4e0fteugvr2z8ptpztm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13sgkdnrwk7arajhlr2kzspcp59k7ceg7arqwnn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom122j790ml8nuc5h2zlsfj9repee3ajc9fwz7dct\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rq652x6ud7awa5cm9ns8fs6w5sm8ttzsap2l6l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom179jsu5rjl9cqcawxzxn7s6xt4styh0h5jq5v0d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16q4kku243lvff6j2ej5t64hqja3lvd9396e6ap\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1enthteulhey8mvt8znnpd4h4z94v2j8xutrr3a\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17nwths45z6ss35qjgy7xawcwdhcgxsvgcq5n6k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rhrx6wzps4ma5q5v6gadwdn2vexq5gyjxf9fvr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d5pgxwghy5juxsgv0refx0t2dp9wq96xafn0sm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c2xytkp3nj0yp049knmnj65c6zuur3au2kya4g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dskcxlxwdw3wq7j0mvgpz2h7k6h468yq93hr9r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r5uuka7wk5m5nja3cq5ers56la5gepnfhjcn6g\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1200g56thtljw3n4rvh0z50nd96h356cmsa0js9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1urjg5e6vgs8y7jhtualkm2fj0kx4206nh52hrg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vzm9tjfa96js7h3xqt5xqw8kyhpuduzpvnvt24\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19thy6d0fsdj3pfc5xwjk37zuahestag6qhqgkt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13670acutw64ms5dyhgz6jtwm9s24sc9jtu37va\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xfr4gy9hltw5k0l7txsagujze3mupndpjy45sq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tdmhjrtwe72pcrvu9998nkda9kl5lzud6r86y6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jgjtnkplk6pkemx7cv27ysd7cvhjzqutgum0vz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xgyhs4wake4w6uufwwek99g3dqnjd6fnd3cchn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cp2ck5u758xjxs8j80mpxp3rteuvxjklur5tg7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kuvtlrf4awdvf0yy8hs7hwjtdg9peyxj66nt38\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jm8j625qtz374el380s8p8nl0f3yew0jksqqvg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vuep7lev6cdmj39ey0sxm929jp2pqsyg2k47cg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pgwkcsa0u27l2sgxx9h05wv6tzkwkucr0flzjn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n0jy5ekhm3j2az428m3hswfevwusl8h39hdaem\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vxkcnm79xrt43u5vt64yrs78zrh8fdl0v889kx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15x69fvvfxhjdw2ad0rxzeanypetu6qzr78fug2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13uzzwuk8fjpd3yt4ssnaevtvys5nx9l69gxs0z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13xwzhhq6m52z0ysk9lvyvgtr7d23e83hdshumv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mnlqa632zpk5j86qcmtpwzqv6j6pfmgezagz4k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1s7jgrqnvdmxcww43unnwkxy0faz4yaghkxmx8z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1apltlf8xqdtxx5jenjg7gzh33q8lajw0uakf7r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10ltmfduusnps7utyy98jm5mwq5dgystjset5aa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1e8h6450m7fy643ykjadctv7htx5m8mmmn77vy7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pa3eaj0zqrkmqw23v239upyq2w69u5sccztt7r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ezgjfhn44amsaxt70cxr3p0v9s3nspfuwtpf45\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mxmken69ne82e8uhkmr4sfnar5km4knhvvfxe7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yqnd7d2kysaxwemxy5e5usl2hs842estjfrxn9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17cs0kucxvh5ag5jq0gqum47a63lvmq22shxaah\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15rjd46x4s459v8a56w2cn4yh8325n53m82xdj8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w24ux688apsuvmn5jv9tr86fuhtv36xv3960dp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j9dr3v423q7jypqw65w5ngpler6a8yrd6qy996\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nmulwukl393j7paknmgvuryg07rdx3m24wp23m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j306trvzjjtews0emn2qq6aw8caxwtzfwttw03\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1snawqfy5ywfm0vgtsmqfvnsjlg7dqtlxgfjrtn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ja0jzdwrdq2pmt8j4cd8x3wu3kudaycajukgy4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13pjrva4pc59dpvrvr2kdhdur3dxwn9ue5shqtm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tlzekltgjpdmes8var55s0g9famwg2kgp02xgj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r5hrrzqp5zt2t8j62a5ny3wz4fupgf9gfqeesc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19urdgfrr7g6h2zt2qarlaqhrkwgf7vkll82v7k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vktsw6aptxg8vg8ggfhf26l2csnyg9r9nlyke7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qs3dafgnnxqjy5da88l95rjnp2n27h9m0deaas\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10l2vfpsuruku7849d97970q8emds57pnah2xgu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zlywzyzt84490czkz6wchneu2wn4ckgzla8myc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kr6zx7lgyf33wk4ka7s0fs6yk69py83t38pndj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vgwa3mxzrcsxhp0jn9j2j5fvq3lmru8n3x46lt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pqpzd3tj8ut690lnwt8pupgp2ahlcn6vtl3pam\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17njkkr2rdwyds3lveq40fw7fp8yrrapu4czcth\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xdnma52m5rv028efghsd00dugp9d6zhvty7wwf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wh2geykadw9le2xd6kvpe9srrj6tj9jvtzlrve\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ml5lpjrg0x5x0xvhug4fmfyy9dk257c4mck9yd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wpguy6s4ef7g6yd0dlyzlaett98eq2yt7awfyw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u8qhdj3k7tjn7zscmvzwkq8rlncs7s4ccwj2ml\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zj7e0f3hmzpwjwjzu0mwqqt2srdltwxq2zva2x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12frw9dhzc8ryxl2rqdxg0erl926rge7thm7mrw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n9fzyzfplkzm4jz9fpwngpjgn5ddxate4y33fv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zc8snhscjctnvjymggatqxs5eke9pn4y0ljper\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l0d0cnykn39m47x7tfvqlxzqylrkmc4lm8ut49\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qnawjghksz0mrpx299fy2e3f97zngd4p5zwlvn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1704c3ekxzqt42g3za6erga7jz86g806e473rmt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1m7y9wnmt8d4sh5vtpukyf70k0vpvqxlfx6aaym\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1x3mp6qxh4mzy9zjd8mza04j7qkl7ntcjg0wzma\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xeg7glznjkdykuex6gdvkmndzqegsrqqy6agwp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vvxfst5tpjc2pnup8pnhzshtkju25kd8jwafa6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qwcksk6lylzrzc6gq3mvn4f4w53c2fkqqdd06v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l22c4m0eyrrzdhhrae0ksmj9avmye9hnfdlrv7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yl6fdg66ht48vtknp808k02w0y0hk4p4dwx23k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14vhz2c3p7alchp8ur6vne6qlq8spsegcary4le\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13c7lpg4x9ay9cyfte9ypntauzan7evpl3nntqh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ehm3xxwkhq8ckgdfy9pz7pd4wp760nrhkwd0rw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r9d666ktmuetcg8l4phh6pj2vk2a9n4q5rj9zd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nxqc60spf4c9lafc6a2aex95rd2sn2wqdgwvn3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lf7649u2syxwmxtx3wz6tznpggmcs9hda84srj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ef8w2fk7sgpf2y7szuks55fucr04wnstlf8har\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xncdv47488k2aap7nlvx8fhlxxq2zm0c6cpl03\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1q2tuf5qn4fdaq09e0ejsacwv2r0etzxf0gk9jf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17vqcu60dhuzhj937m8zhxf0y276dzvtrwxwx4m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wgmaphzjkms2vp6mdxagx8pcr8yh4cdmp59q9d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tu4lmk954k68ygpa8r8k7q04yusxn0htv7ny0m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qhkpjjup7v839tmhs4fvpq5usll7dlh5x064n8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ufy0kgt4hun0fww8wn6grg47cy0jev40tsaru7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1k4y0asr4y7um22nkzdmwt00f77al8dm5du3lc4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1484h6x6k9jndeuudcf9z4nphupzzs4nxeljngf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1x67ahx6zwvvvxlj4mh364s9gwjmgfcyazsljst\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qpz4l5pw667yjfupxjurq2ln5sqg2cz6f9l6eh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wdcs34dkrf8tw2xzw2v43e6rmuhjxermht8ajw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom127wff4g9n0ll8k2gu96le6fltu7hqna2r9hy2m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nvfhpudwujrc2zk7zy4jn7xazzu7pe7wy7fwnn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xch6wlnc5l7ywqh7l4spj4lcrf3hywazk7errz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uqmdaplmycrmurdspgvrxtndxp85l6pllf39hq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1k2n0mzzu5y09yg9khfflqae8duu6csn9swl6wr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16640w60s7sgyec2qr666yhynhz4u03fwfpgccw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom162xc3ekelegllz8gy8gtnpduefdzpw9sklzf33\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zy8uxjaf50ljc909e9wegymuhc86yml328h5ec\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1h6y7tqmjkvlawkyqh6z8rqt677u4ffu2hr3rya\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17zv580da83k648rdnv3tgpxangswvxex2f6n3f\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cf4j4288hrmvrcxw60au4jamra50ay4l5v6kqy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cvfpx2ck6qfer53ah8eu4kpw5whv92gmtgsjqh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13nuaemd93px73gvqm9wka80scp8y2vtavsdj9a\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1sxlsue6ekaakjjcx8n8hsmdpr7lj2q5pa70rjz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14rrfmkmxtcfyjwr7q25kun8mx4r3apkvq5t5p8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c0tqcs30z0htkafxflh86aty4yvrjy7dctnx4k\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zc4gz32n74cjkc5c6upxe7hup69vx7hv8e5gtt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom157ayvflpqzc83gacv055vepm50uw0urll085an\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1njh7ywsffzflfd79hwry5856e8h9crd0ph288r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12rv2dag2nxrfeyqr9skvp3gvmeda6t53k37cj2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14s63706jgqh0stteajpc2ama0r8nypnp6ennhe\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lh7grjr07rzyyjtaqcl8ywnqdgua5h0tf5rygh\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1re0aw0ugy9fl8qgdddqgfg49ahmmux9rpnadj4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cdcjpftgh0u3ac2fzmwar4fnx470fn53ys4rlk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1aqdurh4nru6rwhkt377nthznufsrp4u6nqf39x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pk5e5q7evmpgnjj869zrjrjas4g7nek87vl5r9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14e2q07kpm9yc04cp720nu50ph3sfaccrrunz36\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qf3h5et5056t99xck7pgfk5hdgypenp7wmck8v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jcelm0lkrjflq3l3r5d0eaxxzfdjj9wtrsqnz3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lgfv6mktluz24xfuvjmxw7nawlnf7ckj02gt39\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wjq76tk9gz9mh4v9z29zjcgjgv36mz84v333lg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uj22dv2y4ly96svnav09h4g44zf68k5md7cna7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lef3zd3p75kk9jazqalqpefmtg5rp3ev5084zz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1a2y78n5340pjxtuksfehk7y0pfaw6fdardy87r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vuet4dhydtuemhguaj3awx8tvzaau56rkkqu82\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n8hyrj9kam0zdtf6mcw25mrctjh6d7d3n5dgpc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hs69gk7cmsqyez2n9ake4kfc452x8lsgnn9yv4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ghya49vuypsfvgxq9x9gcw6l9x4jnkxlrq8ql6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qzgpgtkk7thcmjr6heclgdejpy77w5rfdgm4x4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qvsnlu53celffqlqru5k05gvzr70ew3lplvhjt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qn0lrdzyl2vw86vhrq6q9flycnc7xkc5kfxacz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom102ugpddahjj0cgtp8wn8uekvtt2ck3s8h5ltds\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1k8g56xsch6ztwf2uz248uwwqx9dzn2falgp38t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qn4lw4ejgusdxeekecze36w3m9smqfywxqtf02\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hkx5f4cg3ra7e29fy9splv3fy3dqjym5c44g7e\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kua4wtdsgd3jvx7drsmtwfzs7tasr54f3nt6vn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12jc4e76pm2t3cgad2fcgcvrsr4s6tcc0yvwdhy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qpffyu8t3rwgvr9ajtudspnl0376ny43cs28cm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hnzwwe8xhjgn23l3n5amgwtqjjj77r9ja7u4yj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xfwdag64x7emsu5z9c0cc5cgw69hluchrnr0td\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gde0a76m58h4qp49wm5qexenn0lr9rfqay0cc6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ycz6jq34ch9zwz53uksutqax7d0tzg4r4ptuz0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hfjmtwh8f6u4guy43gec20paj3fpj28yna0a6v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14v89cvmam6e2l7ye69kln6wn7dthsy3wedfl7w\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14xaq0xndppzctkajv9u7vmr78sm5dkrw8pealk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13swa4d4tds8ke7rfjkt3g9hkftz0hhs9fr2g9h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1az9amg5j7h5udxnflchdpea86admanh980np3z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jsmxeh782fwdj26h8xfqyxtuy6zkqst9k0gn8u\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1h4c0awvycvhq4rfzstrup20z8wwy2kd44mmxme\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ntnhdn59j0w5p3h8ql2tpjcuaddgwvc6sdm0dy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1420k0ct4cyjscyscay0ze6dcd3aq7rxq04y68x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19md2lvewcpqrc2j2a0vnr4n69j0wrcf6whvt0c\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hhg04rxah2q4ax03fsr4mq5mkg2fsn0n8epg3j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jk20x6myytts4295k8n5l890hh68gptmnmpcx8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10t22t79yfyxe5lquv78d25vxmun7q9e5s6xxsx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom150v7qu5uarz9d85k2d50ejl9zdw4k044r0y9wy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12965cpvwlghw3jvts7qdwkkam0j5p44y687d5x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1duy4aps80ha9wcg2ql2sv55sac09n885yfc7rd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rw0alcdzvxqjvnjaz0kxsjme0jkezxg2u0j425\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gm4gtmjxj6292zc75c7nvuwk93kkj0q0qupw0z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nxklnj8ywc2rpq023qd8dhd0xz9cndjy3mahxn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1utfmzk3f4k5pe0lchqvuwxl0fzvd7leur2m4km\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zyuupqv5kuszull7ugw55al34w09scwludfrwr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1h4kz9ze0q7g4jz2hwafazgtms6luwz8u6st4td\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1usfstj0qm7jdgj6evhh05up4wx604dz7qj87ac\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zmytua9j77wgfgmm40wgttegva7sc4mvwzsjsl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ee56dns037jw5cvgpuu8zp9c2lzgkr5gh70cwt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z76ffeaayhaeqcel279y65ttztrqwj28l0c804\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zesngstg95a2a8v7lz7r4crwfv9zxcmqtltrcc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom103zeyaftmlxla0j4jtc006uh3mmjrcjjhvtvgq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1udygx4wvxueu7x2qzl43gt5n9dajkwp3ygz40l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tvwcry63vlzv8wekau09treh55r3ydvq3t4tgv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t0fsme3l2gzh3z939clswhug0yvqum09e9v8rs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1e8q37cxgmfwvlwu5dj8xgzm6pj9fgmfgju6a0e\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qy7xa6rzcg4jszrlhmka9rp56eaz93gesapdvx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fvuvnhazucfflj8s5cufy9q97plag674sguvu7\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1aqllssuy97nezjp6xhw4c8twu6jts559tqzssl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t5szzerqjhnx3nj8t97zcx8ts5nnsskyu2dyus\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vveyk0teh2nsndeg57mpmhnd5u9yawfvdswecg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zwe7u6kkqcymhk8yp2pmhswt04j7dd8qku47z2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w7y3g0r9adese8knyp277mhx07sruxxgpcmz88\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13nfegxehxp7kh723vj2s04cpy0s60qndlsau8r\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ds9knerx4cq7sf5qz9grtxavldt7tmz7yuvral\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n00meh6k0essqaxfl6776rjuxulkff9fynsqq4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1tmntgg36jmhxvdxsp54rd5yj9523v6xpk5cnqt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w2kwm7p7zzzzfvxax8jqvm9vgp9p7fhhxmqgz2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hxz2usyugcmj38frhrzlc2aqmwekkcfj33t2uf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1me6p7njrz8rlw5vjgya5h5hf60q8xj8t9evfy2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14s7k32z48550t7qju0ruvz36agjrvy9rpt255h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12fdx3aesgunjkh30jpagd0zsfan0qnuhjmlskr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w4lm6dth2wa3a36avxqf7amps2mqtp2eyx8p79\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l97gg8q4d8qcsem6rt05r365q8fx5usuz6c9wk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dppda4tsrvdrnptkewd0epq08mj4e6e2m8ay7m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uzd7y2s0yj8ghtg55nummu6hu7pljknt4md5h5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hyqw4y85xcvqnd2hudx24daplkeyjftv4ya8qt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uw8jryssgtyxdh8kumwz7gl26e78l0njkyvh7z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1j6m6rf607k96ckgyyesexex9ckec3g5u04xgqs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n4zal3f2pzts85a289akzqugcsv6fw4qg2gv3d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hx82zjwku06jqdhhkcg99zcuzwjnax79xa54ph\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1q0zkt55npcsyhnj4akrc8hwepctn9kdfly3rh0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16snytks732s9qy8z3ffh9wjvygrfl8zr7jrjdl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vtvsevpe8e9kp9m2qgsrh8vqt9hgqardh0ljaw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u7hxgfh927cmxfsqguxy8x3sat3908jt6mh488\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z50v0rww3f4u2zhyeyfhg7gsj2kzr00gx8xrlk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18hkau2vr25l60uhndelhfyu2jcatn9gf0rfnw6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w8num65va5cn6pe0lpgzegwu4sh5ak3jm8mssn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vkecldpz2phuexa8e3v6kv5gz9xwss6h3lqm2l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1javxf250ts85tq97tk9vtngu6fnq6fg8dfagp4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom13hkqre84xkrhacxk4xwwq69cw79zdzh3f0wneq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gwlg44nwpvs0zhwa9vq4uthrmhtd6tharaprwe\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1maxrr892zvy8r9utdfzfz9tzl36cvmkuyl9szp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ze0mmxfqylm7qrf6c9zprhc2snzz9vd9dmn6ap\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wldkljur7xp6a3rsxtehrz09y9ktjje9hewf54\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15lazwhkgymm96fplzthleld9cevt85metwzgyr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14jr8clptyx7jewpgffdeaxwl0xe6snl3u95nll\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1l9csn2zrh4gx0gvk3rp7mu5d2l5pq6zsed8p7h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17ptuyehdfycyuahszhfhu7uludtpppgnyd6pql\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pfkmv8tkam06k3mve9q9wfdm2egve87vz7pmna\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10hhnlax5g6exslfmrltdx9k5z9h2208lfl66lj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1p4xaa6n6lrrgkgxcne3uk5l7ezq3nljwj594s0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xj773wmacfgavwtavcqsafmncfwed9csrk0h2j\n", - "\tamount: 1boot\n", - "\trecipient: bostrom120uqk7p4u3hy4kz6fdx2xzm0vnq6tnfynk4gve\n", - "\tamount: 1boot\n", - "\trecipient: bostrom130lxdw346e70t2ntplnm94aksyke6q0f52vclv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vq6gsql23nyx0p8c0uluzgdtz0d5kelxa5n9az\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uu2aede7c5hz0pcxafwrv7gkf9wcm2k7dhqwf2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lvsykp30405aauwg5ceqp7kf4ed9lnllwsnrh8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ste4edvr5cc8mz7cvuxxtcq5frj08tyj2zlxue\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dkpf8dqeuf39chpq0wephyfzc6nvh4js6ew7a5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17j4ugdqq3lwxdhx2qvn8e20cm6vz05ld3jdewl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1agpj2xahtv6ytcta9njctyyl4scty8tcnpkjpr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wmpzyecfrc35ewqqgw7yl28ay7a8tua57a7xx5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mur9er5tj5ysuwzp955arsqf4qysp77fe43twz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom128phu969lkd2vfdkxatam8hhggsa2tf2w056q3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pugqses5qxcqe6hvqumnxulq54e5exwvs0nhv8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1thjcavhuwvam9nug8kp0mr5al0f3rsdcrpykja\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1h6yhxunxl8k5tmx2fd9t57h50dh99mkxegtrnz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r7w5yhuxmgzg9qvucr59kr7avad248xcy5xerd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17zsauzyd7y7mmqm667cjvf3c8ls0ez7ue52vym\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18spep23f9m7h9vprqpluyzm5ymhrpmakylljz0\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14uqc6ufhh0mgrkt4aqsa68ghj55v0hy0kyzxc2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15slyfr29qu8u927gu2pmd2gwur5xp0v34e5qdj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15k4cnvx90hd9c88atk8vvy3qedvfxyl64qpf8t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom175eqknqcxywthmcdks8r0kq3d8vfmgyzfqv0ee\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jsk5e0yujj9gcwvphdlwssahpsdkxw0ld3ck4m\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zlaa2u9z56r0jnthmuzezss5fd8tf70vp9qhr4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jtlahs0cvj8q57k8cqnufpt5qhu30smychv645\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18d82hzpqvd899ygwerxme2yw5350w4vylgy3ft\n", - "\tamount: 1boot\n", - "\trecipient: bostrom108wlz2utdyu00qmxjyyc8xd2fpqyewlnqfgd8l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18cdndsvh7nh5hvsgw7gulle5d8m2l29w530sfa\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1swdwjgs43k40r9kj85kffgph4p2c05wwgnlq3z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hgp2qhz69ca0slwzeulvyrjy4r32cpryx4d7yk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zs9x7d3zcepsmmmckk4z3u72y5luukpyrx6hzz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1526r2wjwn7cg893g4jks5dqwkua9xje8lzef0x\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rmda3yu8kskzkwvsrmr6dte2fnxs305mnn9re4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom15q79jgx0mnq0fnsd6apxz6c529az5zvwadle3d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u67tpqc5akxcvcl3z3wk7qcsnqchldghcx67pr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y68yvak6790m8z809p9a3x0jt8r5rpn0yhnzvc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y0rvl59q0vspfjzygh8eznq2aca6djgzruafa6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1psj8hzygflyqv6m4wty72dvt97cs3jqmvqvkfy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eu3jxwjfl3akdazvefjuye57v93mh7fm2ueqgu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1z96rlvaq3v3ckm8vv5xa07qlj8cwly4ldnze2p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17msp24exdfg8d238rqckjes5lu2yz8p0ekqzke\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qs2ltedptmhf99fj0sv842w0e037gg02qzywk4\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ys6mdm7s5ummfgzqt5wgm9ngpexg8namqj44ea\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r69jy0zy03wzq67j4532evqk7p3l2qtmgkzvdj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y9kz9676d7gvv9n7ygkvu3mrf4audmg5w4fgxn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19velk6646sgwsmwjsh2k8x848ev9ravl2qcpje\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wd27x5kfrlj4uzmq3qkz4lhgrlz0cpy437lkxc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1jjkdpuqn6fez4fv4gzjntttv6sughevppwlayx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qhz3xt0daf64u5wm2l0zcnjp8f4xjwwnchc4pj\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1gagjy687fwwvqfepdf3n3jc73v5673vm3feccr\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1deza7hzf8un3hj8wf3ghrk30gce229exes6kzq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c43waxk5gzxctvdakyn8s8qwgxqphpmnleqr6f\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yvppm8v0yzqnc3e99ecs7dprpx27ydp9jqkhqv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14w4q8h028aqmcrv90tpa2jl69mr7sylerlcdc8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1cj4smplwksvyaz5xhxf348dnwjvv4yg7pk3vh5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16ja5hd6qe0l8jj2cf2kvqzkp06qqde8uwjre4d\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10lkpg9wwfmu9snshu5dawjwaagmjg934zmwrwp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17np703zwam49gv03l8wdgs5zp7yhhpefycy548\n", - "\tamount: 1boot\n", - "\trecipient: bostrom14m0f7r50semu7m287whhtgnd5zqsk8nvt9xp78\n", - "\tamount: 1boot\n", - "\trecipient: bostrom192plmtfxwwanum8ypfg3txl6kyzn8y07tvnrgk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1v5003m4u4c2eukmxp8h0k3zkfmw25vzj48pxra\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lx64l9jvh7pvn769s3tp5u4xpzznjm6zcvr0xd\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1746aw07my8pu6ry4t95qhrypttm2ck4ca66xwc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1hf8cyh6yzkae6ugdp3fngzh7kckt78me9kmfth\n", - "\tamount: 1boot\n", - "\trecipient: bostrom19d52ssjysmkq8lj09nm8ajlsl539xswfe4ydwg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pq9q64mfgp3cssaugsd5av6rf67efyzpykq6td\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n3h8m0e0xy5axv2xkttyyhjttaa49qpv6nlwxt\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fknfe5qczrmkm9q6dx6d63hh5v9nztkdk6xj95\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lggvwqa68hggmvx6ceyhanxegu4wx867pu6tlm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom156gwt6ahk5jfptp8jcg56jwwvumhtucwzx48yx\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1mymsz36xshe4jtvhc6reammaas9g33cxaks7pm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nyudwhlnjk07rky937rrep6pnr6r4h4zrfvepk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1792g90xakq55tssa6rsphdqsjx642h3mmgprhu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1njz353ta8j753t8dh3wks945w7fzzes6cr6e9t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1u50h7w60k6uxa2jnppzkadl5qyjpz9vlwf684p\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r36crsyv8avj70q3wc558ktadh5pd52yx00umu\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17rcc77lajfky9djyy9nxw9vcenvj7pylstx3ck\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1aphxaergxtkwzs0ycgz98hnu6r8a3jl7h90atw\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1d20udnnmncnsca606uynmsyx9xqxe9720ra8fv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wskuqwvaf9634w6e2959vejjgy6t566sq34ljy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom16h0ld0vsa03yg3ylvhy3f4rlm45n3vwe0ytj4q\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1yvaugena35tsy8e5ama4mwc5qegpx0qz6h95fl\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zw8e9xysdzzyx2ahqhg8d0jdhj3tu6hafzfzt6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kxxca2zpv535nxmxnndks8g0lpqg8hcjdk6xfv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom18jmej4pg9pu89qfx0ejnjfuz88krarsct32at8\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1dctr5yx33rpn6ypkcw3xlhnr48jhunxyftw6ha\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1g4wxykswk5ryzaefpwehj5xz0vsc7wkfsl5xv6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1n9wp5seymgsezk83hu6p2xfngd87cwy2nuwv0u\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1uw5c9p9pctt9ev6cmw43sat0cnm9gu4lsp3d3c\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1r8vyekjnpdcenatks2fwfvw5t7yz3shq4uxqnf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12uq7s2pfes8d3vysv7djrs9qle4nap47r94ye3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1497fcs4twl5qznsu3l98j3qrturkdmjwqkkvpf\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1vx86z4ypvf3jsutvy9yp4mh0rsn3vy6q02s82h\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ky33actq9gl30pp4jml4rm9a0c8qtq9gfr6nhk\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ef0e5gx2nc678swx5q6344zh4pauxaztdzhlsy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1rg3e57ev38c926aqkf54afwjpnudhduvg3keec\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nwf2pkq2uxe4dt2zhfntlyg730cw2wpqzl4g53\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1kasvauw405gk5jm09rh9m4002lm2z3skkyr5r3\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t4hsvvwp0gq2hysgyvdxeajn5ssydps3z3929v\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1ermktsh35vk52mjkq6eq5uxgdky7754vmjkwwn\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1w4zqtwhckj9jqxyqzxsjkuluhwfk5wvwp4734n\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1pu8ehac4yd4gj0j9mdxfq0uqtl5cefvu3lkc3t\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1x2f2cltlg93vhnjujxstt8zrckf7w0va2ywgcg\n", - "\tamount: 1boot\n", - "\trecipient: bostrom145pvyfwsaqxky637feh3lwuf0qdyumzhdz375z\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xnh686fa06w9dpwmm6ezxfkzhl7rtx0u244r5l\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1t093fgarjjdj6z0n0en3mcq7xwx3zu6uvy6xxs\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1wld2mu70sh0pvx7jvd5hs3msar4d0xzrqnmp0p\n", + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom1nn0hd8l3fqhxhsgdeqp3rew79w2nrtm5qedrvamd7a54r2c0czjqj5hcsn\n" + ] + } + ], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift')\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Initiate Class of Output Parsing" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [], + "source": [ + "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", + " address_dict= {\n", + " gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 12, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: register_merkle_root\n", + "\tmerkle_root: 3dc8421e3f4b94c8e3aed45c031e95a002007dfac135ca398314b163f15a2cee\n", + "Gas used: 121,232\n", + "Tx hash: 85B31F8C7895D79C33B890F77B7F87B5F3218E217B4C489D2189575E2C3E34D4\n" + ] + } + ], + "source": [ + "root_register_output = execute_contract_bash(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", + " from_address=WALLET_ADDRESS,\n", + " contract_address=gift_contract_address)\n", + "contract_utils.parse_contract_execution_json(root_register_output)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Get Merkle Root form the Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "execution_count": 156 + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract bostrom1nn0hd8l3fqhxhsgdeqp3rew79w2nrtm5qedrvamd7a54r2c0czjqj5hcsn\n", + "{'data': {'merkle_root': '3dc8421e3f4b94c8e3aed45c031e95a002007dfac135ca398314b163f15a2cee'}}\n" + ] + } + ], + "source": [ + "print(f'Gift contract {gift_contract_address}')\n", + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Send coins to new addresses" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 14, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xk42c5qh290rru7djmdqcvph0d0aelc4a6sjsm\n", + "\treceiver: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eyzahe7hntu7xqnrgp4uncy324yyt0q5dtjv8z\n", + "\treceiver: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1c24ue0sf2l00yjtcu8aqth52jduz04g8g86cvg\n", + "\treceiver: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1x23w3zfnts4lcsjm278da8vmttn2veqqk6x0d0\n", + "\treceiver: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lyg8txla0kjtfdnvrz7hk9795plkuzlqc3qegk\n", + "\treceiver: bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1zrppsufpqwe85wz84rx3suvq6dnhjva2n2dh5h\n", + "\treceiver: bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1q9ct6x5ls5kt3jvz966kekruuvkvp2e70ffhva\n", + "\treceiver: bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw\n", "\tamount: 1boot\n", - "\trecipient: bostrom18dmj57ym5dgkj76t9fzfjrqan4hpvpkzfjlv3c\n", + "\treceiver: bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy\n", "\tamount: 1boot\n", - "\trecipient: bostrom13ydgcwayysassa667rn7qwfcesdnslujfqw3c9\n", + "\treceiver: bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6\n", "\tamount: 1boot\n", - "\trecipient: bostrom13f6z70qjdgnn33u7xa589zd5eq9e4r5k2pe9pu\n", + "\n", + "coin spent\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom1wsk3ygqft8n3llkflg0rdfazmzr0c070hy5rfz\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom1hwj645su247x7htrcnrjcmfsh98utlxwkcgmgx\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vqyvyvfykmgpv2y6pjgas5r4s4nevdavga2rxr\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t4676xaylec5lhhcc36yv4cft3ntulehrgqpn8\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom13r9kdchp7kfxq8vcsytlh8p8sn0ud5rfltmhuw\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom1nzu22p38j78gay8ulnu0d76zktzwcr7vvm2zp4\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom10mprxc007p2ufy69nandme0n7hc2r07vwfu3dm\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom188yymw0u8puwruyzzs2ugrcnumalejuct0srxc\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom1vz3djtm4gz6hdr5apu4g5d69z58svxyr0kt8vh\n", + "\tspender: Passport Owner Address\n", "\tamount: 1boot\n", - "\trecipient: bostrom1r90j8ydquk3505a2wd84a43s2szqzw96u9f36f\n", + "\n", + "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", + "\n", + "transfer\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xv5cxzkmfkm36vx3ul4gmt5sgsej2aypd3vgyc\n", + "\trecipient: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u4d2vcwfj0h4a3mvw3tvup8fwdp597ypg0v8cl\n", + "\trecipient: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", "\tamount: 1boot\n", - "\trecipient: bostrom1slapuzuja5g34efnz09qe822vrjys8gza0s2h9\n", + "\trecipient: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", "\tamount: 1boot\n", - "\trecipient: bostrom10kmed8fujy5pnqvv9a6y9jffcu2uvzjycygj5h\n", + "\trecipient: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", "\tamount: 1boot\n", - "\trecipient: bostrom100n4qt5rd3jefhl5ezrcxlu4uf8hd34km5e850\n", + "\trecipient: bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa\n", "\tamount: 1boot\n", - "\trecipient: bostrom1qewddun7a48s8985jux04d4w3xacum37mrcasf\n", + "\trecipient: bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw\n", "\tamount: 1boot\n", - "\trecipient: bostrom1rucwkkqrzc4xglgqr3xwzxy887jxp6ata76c49\n", + "\trecipient: bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw\n", "\tamount: 1boot\n", - "\trecipient: bostrom15tuur8x82hnkz727l59mzjdn0u75z3szc3m7t8\n", + "\trecipient: bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy\n", "\tamount: 1boot\n", - "\trecipient: bostrom15lvk37hzej3cdga9r8sp7x3rpas9p3v074pc6n\n", + "\trecipient: bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6\n", "\tamount: 1boot\n", - "Gas used: 21,524,229\n", - "Tx hash: EAD801AF7819E0502EA2DCFEA965283FE39366F3BCB649E6D1F428B369589FF6\n" + "Gas used: 291,894\n", + "Tx hash: 55CDAD5B0692ACDD9A5DD1281C0CAD93B0ABEF41D52D521CEB1CC35F87EB1CC0\n" ] } ], @@ -6720,13 +743,13 @@ "bostrom_addresses_chunks = [bostrom_addresses[i: i+ NUMBER_ADDRESSES_IN_SENDING_CHUNK] for i in range(0, len(bostrom_addresses), NUMBER_ADDRESSES_IN_SENDING_CHUNK)]\n", "\n", "for bostrom_addresses_item in bostrom_addresses_chunks:\n", - " send_output = send_coins(\n", + " send_output = contract_utils.send_coins(\n", " from_seed=WALLET_SEED,\n", " to_addresses=claims_with_proofs_df.bostrom_address.to_list(),\n", " amounts=[1] * len(claims_with_proofs_df.bostrom_address.to_list()),\n", " gas=min(71000 * len(claims_with_proofs_df.bostrom_address.to_list()), int(23e6)),\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(contract_execution_json=send_output)" + " contract_utils.parse_contract_execution_json(contract_execution_json=send_output)" ], "metadata": { "collapsed": false, @@ -6749,7 +772,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "outputs": [ { "data": { @@ -6757,7 +780,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "964252621e7d49b3b996548fa85ac7ce" + "model_id": "104e629a228f405caec0d8f478d061f3" } }, "metadata": {}, @@ -6785,33 +808,25 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 1\n", - "Gas used: 401,597\n", - "Tx hash: CB3467E0E041673A0B49CBB18D8DAD3E84321DD0FE17021CBE54B32A630B51A1\n" + "\ttoken_id: 1413\n", + "Gas used: 440,183\n", + "Tx hash: CDA96114D1ED58B64B4A2F38BEF6E35C4181F9CD8236B14F039BCF39D2F30C50\n" ] } ], "source": [ - "def create_passport(claim_row: pd.Series, display_data: bool = False):\n", - " return execute_contract_sdk(\n", - " execute_msg={\"create_passport\":{\"avatar\":claim_row[\"avatar\"], \"nickname\":claim_row[\"nickname\"]}},\n", - " contract_address=passport_contract_address,\n", - " mnemonic=claim_row['cosmos_seed'],\n", - " gas=500000,\n", - " display_data=display_data)\n", - "\n", "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " create_passport_json = create_passport(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(create_passport_json, row=row)\n", + " create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(create_passport_json, row=row)\n", " else:\n", - " create_passport(row)" + " contract_utils.create_passport(row)" ], "metadata": { "collapsed": false, @@ -6834,7 +849,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "outputs": [ { "data": { @@ -6842,7 +857,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "654620dcfb9d44f2b877dca215c405e2" + "model_id": "fb6c020e0e4b4ff3a480f87cb525513f" } }, "metadata": {}, @@ -6865,15 +880,15 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16492448011\n", - "\taddress: 0xc054139731e52960f8074be8a5e95f3fcd721cf3\n", - "Gas used: 263,051\n", - "Tx hash: 93FAC9D24252A5D9C22E2B611BB2B96BCED9775DDAD508CCE34D0E3EBB3BA9A0\n", + "\tnickname: john16495703801\n", + "\taddress: 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa\n", + "Gas used: 281,090\n", + "Tx hash: 96C7ADA679DC321B73BF5E090CFA8E086FB906E87B1133E3CD03234F4A568115\n", "\n", "Events\n", "\n", @@ -6887,37 +902,29 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16492448011\n", - "\taddress: cosmos1vd4dk5532ap70j3kcj8ren8mzey95cmrzp3uu4\n", - "Gas used: 266,485\n", - "Tx hash: E5459A5C15203880593BB18D4A232536837E2325C90086BE6174818E2FE3B4FA\n" + "\tnickname: john16495703801\n", + "\taddress: cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8\n", + "Gas used: 284,525\n", + "Tx hash: 7FC12C2CD87496689399FD468AAA5E536AB9A04A712CCC016EB1F5C18C7B05BD\n" ] } ], "source": [ - "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_contract_sdk(\n", - " execute_msg={\"proof_address\": {\"address\":claim_row[network + \"_address\"], \"nickname\": claim_row[\"nickname\"], \"signature\": claim_row[network + \"_message_signature\"]}},\n", - " contract_address=passport_contract_address,\n", - " mnemonic=claim_row['cosmos_seed'],\n", - " gas=400000,\n", - " display_data=display_data)\n", - "\n", "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 1:\n", - " proof_ethereum_address_json = proof_address(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(proof_ethereum_address_json, row=row)\n", + " proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(proof_ethereum_address_json, row=row)\n", "\n", - " proof_cosmos_address_json = proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(proof_cosmos_address_json, row=row)\n", + " proof_cosmos_address_json = contract_utils.proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(proof_cosmos_address_json, row=row)\n", " else:\n", - " proof_address(row)\n", - " proof_address(row, network='cosmos')" + " contract_utils.proof_address(row)\n", + " contract_utils.proof_address(row, network='cosmos')" ], "metadata": { "collapsed": false, @@ -6940,7 +947,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "outputs": [ { "data": { @@ -6948,7 +955,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "ddb60057a5a74ac6a2a280ca5390e56c" + "model_id": "c00adad4b7754a548dd287666781a483" } }, "metadata": {}, @@ -6958,40 +965,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "{'claim': {'nickname': 'john16495703800', 'gift_claiming_address': '0x9124d6592264ae9e6693dfa39b8f82f16182419c', 'gift_amount': '1000000', 'proof': ['78900d7c06c43ae20970087421f80e49257815363f6a3a3563f5ec29d28940d1', '8cfc554eaa1feae2ff77f1307b0341fbdf7edf6be643fbe6083fd025f5cc6328', '788ddba1a2fb402628dd12efa2aafbab89e1dfbd57d5c2b279626936a990ba2b', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: 0x9652c5b6b5fbb66725d04a9c60910bddeffea626\n", - "\ttarget: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tamount: 13000000\n", - "Gas used: 310,343\n", - "Tx hash: 5AE306D03DD911C82973226B687DDA5FF5FF397E9149F3FF7D4F7B19165CFF83\n", - "\n", - "Events\n", - "\n", - "coin received\n", - "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7001,26 +980,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz\n", - "\ttarget: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tamount: 13000000\n", - "Gas used: 310,692\n", - "Tx hash: 3F52991D99F42665DF688254C8DF7C7B2FD6C92AFC431A71D0F97EBDFB7D8E2D\n", + "\toriginal: 0x9124d6592264ae9e6693dfa39b8f82f16182419c\n", + "\ttarget: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 13,000,000\n", + "Gas used: 315,015\n", + "Tx hash: E5005F4F9F5489C312145A360E16DB493DE55AD9E50984540318611B09DF9C24\n", + "{'claim': {'nickname': 'john16495703800', 'gift_claiming_address': 'cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl', 'gift_amount': '1000000', 'proof': ['30fdf3cb4f18b08a20a2db3acc5ac961095089672200b30ca6d313065c5664c5', '68ee8354cf5d2c8231dda926d3f5a80df35e2f9417d067347c4671bc044715da', '788ddba1a2fb402628dd12efa2aafbab89e1dfbd57d5c2b279626936a990ba2b', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7030,31 +1010,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xc054139731e52960f8074be8a5e95f3fcd721cf3\n", - "\ttarget: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", - "\tamount: 12922000\n", - "Gas used: 310,623\n", - "Tx hash: 574BCAF88C406B4FB07790D7C57F2ED2885B7554D94DB6E80D7DAB84842B2CD7\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: 2B7BB9AADA7345CA037C7BD490C87EF9975BD785191611743B7E4DE6E21C37EA\n", + "\toriginal: cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl\n", + "\ttarget: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 13,000,000\n", + "Gas used: 315,552\n", + "Tx hash: 0FC49AF516BFC03324E5A02B639AF8F42C91B67D562EEA501BA4975F56968176\n", + "{'claim': {'nickname': 'john16495703801', 'gift_claiming_address': '0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa', 'gift_amount': '1000000', 'proof': ['d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114c46455a5b2491bd9d6b', 'c2c29fd45a2eeebaf8c548789bc2c7412444469f8c24164d3d096bae98b198c1', '3793c33e8114594b79a2ac806df7a921d9b111babc33ce26433b3b29c6b8b7a0', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", + "\treceiver: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7064,31 +1040,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", + "\trecipient: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x28ad7d9904c8b3e114251b273e7d5ca5a875110c\n", - "\ttarget: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", - "\tamount: 12844000\n", - "Gas used: 310,818\n", - "Tx hash: E9572F449CA4E33B6966AF409F91E23833088B9725455451CAA0A1B708CE7EA3\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: 8EF7D441474F29913F0B598F6A5E5D3EA4458C713C663FA96BFE6127CFF5A1EE\n", + "\toriginal: 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa\n", + "\ttarget: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 12,922,000\n", + "Gas used: 315,296\n", + "Tx hash: A839FC20A445A038B054DAE1604DC9C1F41626B2A23767772259282A818D1752\n", + "{'claim': {'nickname': 'john16495703801', 'gift_claiming_address': 'cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8', 'gift_amount': '1000000', 'proof': ['c571aa4a3bb95f180e8865ac710746125a1d2936940a1ffafecf98aadb2d41df', 'c2c29fd45a2eeebaf8c548789bc2c7412444469f8c24164d3d096bae98b198c1', '3793c33e8114594b79a2ac806df7a921d9b111babc33ce26433b3b29c6b8b7a0', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", + "\treceiver: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7098,31 +1070,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", + "\trecipient: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x3bdac6c42a44eb2945089ce04c2ae76d421b8e32\n", - "\ttarget: bostrom17nvgh8e4628962yd08zdygpg77g06qvfvlwuav\n", - "\tamount: 12766468\n", - "Gas used: 310,827\n", - "Tx hash: CC66342420C049A56D1BE48C71F3779EF7D7AB692B61F8AEF5B4DA64898ADBE1\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: 11494CDEEE38C95908280B829855F5DF7976CB64E2AB172F4B4A7BD3F5FDD437\n", + "\toriginal: cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8\n", + "\ttarget: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 12,844,000\n", + "Gas used: 315,761\n", + "Tx hash: 3E5B0D8D5F488749C6105A71318FC955DC2ACF818F0B10D8C563B9ADBE942F3F\n", + "{'claim': {'nickname': 'john16495703802', 'gift_claiming_address': '0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359', 'gift_amount': '1000000', 'proof': ['9d5777f2aee55468fcd9a426466d35917086cc43855ca8274b54ab69a3926763', '0f4f00eb184448c07e51dacabbacf44b650bcff804336cd35b53aea2f28b8210', '3793c33e8114594b79a2ac806df7a921d9b111babc33ce26433b3b29c6b8b7a0', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", + "\treceiver: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7132,31 +1100,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", + "\trecipient: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xa90db3e1f3bf1f3db22c3eb395ab3357f79bc21a\n", - "\ttarget: bostrom19xfk4fypjdvh7klus3sqs6wjvv0frw8u7jyxe3\n", - "\tamount: 12689404\n", - "Gas used: 311,022\n", - "Tx hash: AFAC97C94DAF406CE8F7F7A669112A1A8AB9187DDF27468EBB6E0F628CFF8D80\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: C9F181106949C1A438ECEBC4BE22859662F8F4E2FD47C997CF870228830A761B\n", + "\toriginal: 0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359\n", + "\ttarget: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 12,766,468\n", + "Gas used: 315,500\n", + "Tx hash: 56B810E9EC7BE15F13838BC24E61A30D3F09AA9DD68808B099EA1EEFC880877A\n", + "{'claim': {'nickname': 'john16495703802', 'gift_claiming_address': 'cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw', 'gift_amount': '1000000', 'proof': ['d560e34d04482e9002c51c4155cc578ad1083221e4d87016061a18fcb63f7406', '66f78f689f1978d3b6988865b455868e67c42f65330e2c75616b791c6d987b76', 'f4ddc1e9906cd06afa3d49b7f201b88b2a91abbcdb5ef77fd96f9064791bca4c', '487e9addb6ac54920bf3b68cab20c089b773e22db2e2b74f65795590cd5421fe']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", + "\treceiver: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7166,31 +1130,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", + "\trecipient: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x90abd3fd0b89318573e9fa3da0834d56845c112c\n", - "\ttarget: bostrom1gekafwaxa092d6x4k2fjay26wvc77un7pdyd7n\n", - "\tamount: 12612805\n", - "Gas used: 311,032\n", - "Tx hash: 777550E405258580FE3FACF92ECE7AE4F6A94580AB380BC406BD5237595700A5\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: CA21205F978BC5B8742585364E6814FC3CF1427D215624F9F7CAB0863F8CC7AF\n", + "\toriginal: cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw\n", + "\ttarget: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 12,689,404\n", + "Gas used: 314,581\n", + "Tx hash: 57C3DDED0189DFF25682AF6B901383F1E767366773295685FC3AE9199F845C5E\n", + "{'claim': {'nickname': 'john16495703803', 'gift_claiming_address': '0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8', 'gift_amount': '1000000', 'proof': ['5e42909234f9266f1a6cac6f517ca7971472cf36a9308f85e532d7dbb06139bd', '68ee8354cf5d2c8231dda926d3f5a80df35e2f9417d067347c4671bc044715da', '788ddba1a2fb402628dd12efa2aafbab89e1dfbd57d5c2b279626936a990ba2b', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", + "\treceiver: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7200,31 +1160,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", + "\trecipient: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x72b3b5c92c89f120a4d3c4a84035c2eeba180737\n", - "\ttarget: bostrom1da0yzdnz9rrj4zathm8cwvw6v25z37feysknja\n", - "\tamount: 12536668\n", - "Gas used: 311,032\n", - "Tx hash: 2DACF644B45030E4CFD576C3CD540A07AC46E03B31698985311334E540F5C282\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: 87AB42C4D1561B4A82499425BA3CCA7B6BC0B5B794E24F9D9041EDD8C8654DFD\n", + "\toriginal: 0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8\n", + "\ttarget: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 12,612,805\n", + "Gas used: 315,704\n", + "Tx hash: F0E35A791B483BB675EE1A23F01D839E6C29DEB1FB0C63A5ACE4CB0A32225D73\n", + "{'claim': {'nickname': 'john16495703803', 'gift_claiming_address': 'cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x', 'gift_amount': '1000000', 'proof': ['97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640a0b42030f5684554e1e', '8d0ba595bfdde180641f64244d954a8e6f7679f414880a820f9621fd440d7637', '3f5a7595a6098370287df811d2d2af459135cd0a8b7e71c4b5c02cb1cdd6eb28', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", + "\treceiver: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7234,31 +1190,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", + "\trecipient: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xe434035fc9ae52f8dce75d26dd1e833820a84699\n", - "\ttarget: bostrom1ce37c40jk9uz7akskup63x5v994f54nd8c5mgk\n", - "\tamount: 12460991\n", - "Gas used: 310,968\n", - "Tx hash: 5BA2D8CC30CC56B812DA90DCD2FC926E5746B529DCD80C4E25A465F7E576327F\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: 7F2BF6A43DE46D1D77A7F58668A1862628149F5795D1831BF374D1218C44035D\n", + "\toriginal: cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x\n", + "\ttarget: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 12,536,668\n", + "Gas used: 315,976\n", + "Tx hash: 7F952323C46F76D62B74468F2675620CA24C369878673EF3E418F4FF3A0173AD\n", + "{'claim': {'nickname': 'john16495703804', 'gift_claiming_address': '0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149', 'gift_amount': '1000000', 'proof': ['d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e547479585f4f155817b0', '66f78f689f1978d3b6988865b455868e67c42f65330e2c75616b791c6d987b76', 'f4ddc1e9906cd06afa3d49b7f201b88b2a91abbcdb5ef77fd96f9064791bca4c', '487e9addb6ac54920bf3b68cab20c089b773e22db2e2b74f65795590cd5421fe']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", + "\treceiver: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7268,31 +1220,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", + "\trecipient: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0xc63f139910f4bebfedd16546b6f4255d09c0acf0\n", - "\ttarget: bostrom1dufp0qxvvauf8e4f2qr0gm47ggxazu3n36q28l\n", - "\tamount: 12385771\n", - "Gas used: 311,059\n", - "Tx hash: 6F7681DA5D76114136220FD852A39DDEB907025315377AD40801873ED485101B\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: E67F4272FBF3CF2029F001A3E931D4229C1A289C6A8A4908C42999AA2E0B2C9B\n", + "\toriginal: 0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149\n", + "\ttarget: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 12,460,991\n", + "Gas used: 314,255\n", + "Tx hash: DD8D790592140D135DDC6811116B74D7FAB2E3BAEEA3E1992BDC12B59761B9B3\n", + "{'claim': {'nickname': 'john16495703804', 'gift_claiming_address': 'cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93', 'gift_amount': '1000000', 'proof': ['1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922d18f6bcac92d6b51ef6', 'ede12e4ad76960f7b154499c6a8bdad1546c29b6c0c944454948d6d3a3474e00', '4a9eef354ac65a0aea9fe072e011797544eaeb847f9aec2895be9a2709dd9e9f', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", + "\treceiver: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -7302,51 +1250,38 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", + "\trecipient: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x17c3728c4b01f4d705d460c8f26e2ab4dd26542e\n", - "\ttarget: bostrom1d6ugkkfwrczktukdqaxj48w5kgdzzjfyvs70pg\n", - "\tamount: 12311005\n", - "Gas used: 311,104\n", - "Tx hash: A1B4D991603434C0C1A18196BA40B2A1A7A75FB15A7E0217AEFFF280767B8C4E\n", - "\n", - "Events\n", - "msg json: invalid\n", - "Gas used: 6,489\n", - "Tx hash: FBEE553D534CF19DF68131EAE0676FB64F5A5BE58319EE8E5CED4D49647B2756\n" + "\toriginal: cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93\n", + "\ttarget: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 12,385,771\n", + "Gas used: 316,001\n", + "Tx hash: E0C2F2951E77A4CA44F3F16EBA34EC5D41103EB1A9895BC3186C9EC3EC86274A\n" ] } ], "source": [ - "def claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_contract_sdk(\n", - " execute_msg={\"claim\": {\"nickname\": claim_row['nickname'], \"gift_claiming_address\": claim_row[network + \"_address\"], \"gift_amount\": str(claim_row['amount']), \"proof\": claim_row[network + \"_proof\"]}},\n", - " contract_address=gift_contract_address,\n", - " mnemonic=claim_row['cosmos_seed'],\n", - " gas=400000,\n", - " display_data=display_data)\n", - "\n", "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " claim_ethereum_json = claim(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(claim_ethereum_json)\n", + " claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(claim_ethereum_json)\n", "\n", - " claim_cosmos_json = claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(claim_cosmos_json)\n", + " claim_cosmos_json = contract_utils.claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(claim_cosmos_json)\n", " else:\n", - " claim_ethereum_json_2 = claim(row)\n", - " parse_output.parse_contract_execution_json(claim_ethereum_json_2)\n", + " claim_ethereum_json_2 = contract_utils.claim(row)\n", + " contract_utils.parse_contract_execution_json(claim_ethereum_json_2)\n", "\n", - " claim_cosmos_json_2 = claim(row, network='cosmos')\n", - " parse_output.parse_contract_execution_json(claim_cosmos_json_2)" + " claim_cosmos_json_2 = contract_utils.claim(row, network='cosmos')\n", + " contract_utils.parse_contract_execution_json(claim_cosmos_json_2)" ], "metadata": { "collapsed": false, @@ -7370,7 +1305,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "outputs": [ { "data": { @@ -7378,7 +1313,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "e8861f049a504a429322d354e623254a" + "model_id": "880e97937b774e1b9a8bfc16bed1176d" } }, "metadata": {}, @@ -7392,7 +1327,7 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tamount: 1290000boot\n", "\n", "coin spent\n", @@ -7402,27 +1337,27 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tsender: Gift Contract\n", "\tamount: 1290000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tgift_address: 0x9652c5b6b5fbb66725d04a9c60910bddeffea626\n", + "\taddress: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tgift_address: 0x9124d6592264ae9e6693dfa39b8f82f16182419c\n", "\tstage: 9\n", - "\tamount: 1290000\n", - "Gas used: 148,799\n", - "Tx hash: 0D0A73B6A255239B5A1310F54B25B178F2256F6F4C3311EFB176778245BFD2AB\n", + "\tamount: 1,290,000\n", + "Gas used: 157,502\n", + "Tx hash: 07B209093AB4960C86A93450B0023387BA9337A3716C92F83BA92D998130DA9B\n", "\n", "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tamount: 1290000boot\n", "\n", "coin spent\n", @@ -7432,44 +1367,36 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tsender: Gift Contract\n", "\tamount: 1290000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom1kuqrfe0yaykad0dppea5ha79hd0paa8fs7pa49\n", - "\tgift_address: cosmos1kuqrfe0yaykad0dppea5ha79hd0paa8fnd4wtz\n", + "\taddress: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tgift_address: cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl\n", "\tstage: 9\n", - "\tamount: 1290000\n", - "Gas used: 148,870\n", - "Tx hash: EAAED45ADCF12F321C22853C96C759A0DBCFF10DB843D2F567A1DD1903DB3142\n" + "\tamount: 1,290,000\n", + "Gas used: 157,681\n", + "Tx hash: 5E702803DE153457E7CA64E1EBEEB5FAC7F05B3469641E6736E515D58CD4B89B\n" ] } ], "source": [ - "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_contract_sdk(\n", - " execute_msg={\"release\": {\"gift_address\": claim_row[network + \"_address\"]}},\n", - " contract_address=gift_contract_address,\n", - " mnemonic=claim_row['cosmos_seed'],\n", - " gas=400000,\n", - " display_data=display_data)\n", - "\n", "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 0:\n", - " release_ethereum_json = release(row, display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(release_ethereum_json)\n", + " release_ethereum_json = contract_utils.release(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(release_ethereum_json)\n", "\n", - " release_cosmos_json = release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(release_cosmos_json)\n", + " release_cosmos_json = contract_utils.release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(release_cosmos_json)\n", " else:\n", - " release(row)\n", - " release(row, network='cosmos')" + " contract_utils.release(row)\n", + " contract_utils.release(row, network='cosmos')" ], "metadata": { "collapsed": false, @@ -7493,7 +1420,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "outputs": [], "source": [ "def get_passport_id(bostrom_address: str) -> str:\n", @@ -7509,7 +1436,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "outputs": [ { "data": { @@ -7517,7 +1444,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "bc98d0ebe0fa45de8e3c618c658b8187" + "model_id": "179496bd31d340eba7e93395240234ec" } }, "metadata": {}, @@ -7541,7 +1468,7 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Avatar Subgraph Contract\n", @@ -7549,42 +1476,27 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom1vd4dk5532ap70j3kcj8ren8mzey95cmrpj90zj\n", + "\tsender: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 2\n", - "Gas used: 359,234\n", - "Tx hash: A3D07D45E0FF6B9B3BFF9A152D4056AD392AF3DEDB3C3825F4148C5AF153311E\n" + "\ttoken_id: 1414\n", + "Gas used: 385,801\n", + "Tx hash: 5F0B12D48BAB7041AACE2E9EA131AC85065B9D8AEE33D44568A4798D84785BC1\n" ] } ], "source": [ - "def transfer_passport(claim_row: pd.Series, token_id: str, to_address: str = '', display_data: bool = False):\n", - " if to_address == '':\n", - " to_address = claim_row['bostrom_address']\n", - " return execute_contract_sdk(\n", - " execute_msg={\"transfer_nft\": {\"recipient\": to_address, \"token_id\": str(token_id)}},\n", - " contract_address=passport_contract_address,\n", - " mnemonic=claim_row['cosmos_seed'],\n", - " gas=500000,\n", - " display_data=display_data)\n", - "\n", - "\n", "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 1:\n", - " transfer_passport_json = transfer_passport(\n", + " transfer_passport_json = contract_utils.transfer_passport(\n", " row,\n", " token_id=get_passport_id(row['bostrom_address']),\n", " to_address=WALLET_ADDRESS,\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(\n", + " contract_utils.parse_contract_execution_json(\n", " transfer_passport_json,\n", " row=row)\n", - " break\n", " else:\n", - " transfer_passport_json = transfer_passport(\n", - " row,\n", - " token_id=get_passport_id(row['bostrom_address']),\n", - " to_address=WALLET_ADDRESS)" + " pass" ], "metadata": { "collapsed": false, @@ -7607,7 +1519,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 21, "outputs": [ { "data": { @@ -7615,7 +1527,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "60437183466945e5bc1aa8a49d4bba7e" + "model_id": "f296088669f345c6b20f7ac74f137ae8" } }, "metadata": {}, @@ -7643,34 +1555,25 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom19wakfjwwy2q2a4tt040zwlfje63hhgym8zc0vu\n", - "\ttoken_id: 3\n", - "Gas used: 360,228\n", - "Tx hash: FAC929AE542165D6ABEEE76841A0D15E2BC67935B5257B9AA25D79583D3CBC34\n" + "\tsender: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\ttoken_id: 1415\n", + "Gas used: 381,878\n", + "Tx hash: 23476318EFB8D19BDF644F8DFB81BEFF9C0CA9BB188965FEB5E7E7AE76033C5E\n" ] } ], "source": [ - "def burn_passport(claim_row: pd.Series, token_id: str, display_data: bool = False):\n", - " return execute_contract_sdk(\n", - " execute_msg={\"burn\": {\"token_id\": token_id}},\n", - " contract_address=passport_contract_address,\n", - " mnemonic=claim_row['cosmos_seed'],\n", - " gas=400000,\n", - " display_data=display_data)\n", - "\n", "for index, row in tqdm(claims_with_proofs_df[2:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", " if index == 2:\n", - " burn_passport_json = burn_passport(row, token_id=get_passport_id(row['bostrom_address']), display_data=DISPLAY_TX_EXECUTION)\n", - " parse_output.parse_contract_execution_json(burn_passport_json, row=row)\n", - " break\n", + " burn_passport_json = contract_utils.burn_passport(row, token_id=get_passport_id(row['bostrom_address']), display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(burn_passport_json, row=row)\n", " else:\n", - " burn_passport_json_2 = burn_passport(row, token_id=get_passport_id(row['bostrom_address']))" + " pass" ], "metadata": { "collapsed": false, From 4012c76dc6450ef4962492d1323c1f79cb478d4c Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Tue, 19 Apr 2022 13:33:07 +0800 Subject: [PATCH 32/69] - Update job for passport creating, gift claiming and releasing --- .../generate_test_data/contract_utils.py | 6 +-- .../create_passport_and_claim_job.py | 52 ++++++++++++------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 34c3f2d..e291dcc 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -34,15 +34,15 @@ def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: def instantiate_contract(init_query: str, contract_code_id: str, contract_label: str, amount: str = '', - display_data: bool = False) -> str: + from_address: str = '$WALLET', display_data: bool = False) -> str: _init_output, _init_error = execute_bash( f'''INIT='{init_query}' \ - && cyber tx wasm instantiate {contract_code_id} "$INIT" --from $WALLET \ + && cyber tx wasm instantiate {contract_code_id} "$INIT" --from {from_address} \ {'--amount ' + amount + 'boot' if amount else ''} --label "{contract_label}" \ -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''') if display_data: try: - print(json.dumps(json.loads(_init_output.decode('utf-8')), indent=4, sort_keys=True)) + print(json.dumps(json.loads(_init_output), indent=4, sort_keys=True)) except json.JSONDecodeError: print(_init_output) if _init_error: diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py index b6aa7e5..c52420c 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -1,10 +1,11 @@ import pandas as pd import sys import json -import ipfshttpclient from contract_utils import ContractUtils import warnings from time import sleep +from aiohttp.client_exceptions import ClientConnectorError +from cyber_sdk.exceptions import LCDResponseError warnings.filterwarnings("ignore") @@ -12,27 +13,22 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False) -> dict: - ipfs_client = ipfshttpclient.connect() - contract_utils = ContractUtils(ipfs_client=ipfs_client, address_dict=address_dict) - _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION) - _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION) - _proof_cosmos_address_json = contract_utils.proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) - sleep(2) - _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION) - _claim_cosmos_json = contract_utils.claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) + + contract_utils = ContractUtils(ipfs_client=None, address_dict=address_dict) if release_bool: _release_ethereum_json = contract_utils.release(row, display_data=DISPLAY_TX_EXECUTION) _release_cosmos_json = contract_utils.release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) return { - 'create': _create_passport_json, - 'proof_ethereum': _proof_ethereum_address_json, - 'proof_cosmos': _proof_cosmos_address_json, - 'claim_ethereum': _claim_ethereum_json, - 'claim_cosmos': _claim_cosmos_json, 'release_ethereum': _release_ethereum_json, 'release_cosmos': _release_cosmos_json } else: + _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION) + _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION) + _proof_cosmos_address_json = contract_utils.proof_address(row, network='cosmos', + display_data=DISPLAY_TX_EXECUTION) + _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION) + _claim_cosmos_json = contract_utils.claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) return { 'create': _create_passport_json, 'proof_ethereum': _proof_ethereum_address_json, @@ -47,15 +43,31 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False source_file_name = sys.argv[1] index_number = sys.argv[2] gift_contract_address = sys.argv[3] + release_bool = True if len(sys.argv) > 4 and sys.argv[4] == 'True' else False + log_file = f'temp/contract_release_execution_log_{index_number}.txt' \ + if release_bool else f'temp/contract_participation_execution_log_{index_number}.txt' address_dict = {gift_contract_address: 'Gift Contract', 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8': 'Passport Contract'} - row = pd.read_csv(source_file_name).iloc[int(index_number)] + + row = pd.read_csv(source_file_name).iloc[int(index_number) % 10_000] row['ethereum_proof'] = row['ethereum_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') row['cosmos_proof'] = row['cosmos_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') - res = participation(row, address_dict) - - with open(f'temp/contract_execution_log_{index_number}.txt', 'w') as convert_file: - convert_file.write(json.dumps(res)) - print(f"{row['bostrom_address']}: done") + res = None + i = 0 + while res is None and i < 5: + try: + res = participation(row=row, address_dict=address_dict, release_bool=release_bool) + except (ClientConnectorError, LCDResponseError) as e: + sleep(10) + print(f'Error: {e}') + i += 1 + if res is not None: + with open(log_file, 'w') as convert_file: + convert_file.write(json.dumps(res)) + print(f"{row['bostrom_address']}: done") + else: + with open(log_file, 'w') as convert_file: + convert_file.write(f'Error: {e}') + print(f"{row['bostrom_address']}: unsuccessful") From a298038ed855d0bb32198618aaf8f5d00b53bd39 Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Wed, 20 Apr 2022 11:36:55 +0800 Subject: [PATCH 33/69] - Update load testing --- .../create_passport_and_claim_job.py | 8 +- ..._and_passport_contracts_load_testing.ipynb | 3502 ++--------------- 2 files changed, 394 insertions(+), 3116 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py index c52420c..f49ff7a 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -55,19 +55,21 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False row['cosmos_proof'] = row['cosmos_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') res = None + last_error = None i = 0 while res is None and i < 5: try: res = participation(row=row, address_dict=address_dict, release_bool=release_bool) except (ClientConnectorError, LCDResponseError) as e: sleep(10) - print(f'Error: {e}') + print(f'Error: {e}\n') + last_error = e i += 1 if res is not None: with open(log_file, 'w') as convert_file: convert_file.write(json.dumps(res)) print(f"{row['bostrom_address']}: done") - else: + elif last_error is not None: with open(log_file, 'w') as convert_file: - convert_file.write(f'Error: {e}') + convert_file.write(f'Error: {last_error}') print(f"{row['bostrom_address']}: unsuccessful") diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index d33aa5e..5fdfb30 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -17,7 +17,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/sergenedashkovsky/Library/Python/3.8/lib/python/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.10.0' (not in range: 0.5.0 ≤ … < 0.9.0)\n", + "/home/grovybear/.local/lib/python3.9/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.12.2' (not in range: 0.5.0 ≤ … < 0.9.0)\n", " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" ] } @@ -30,26 +30,28 @@ "from cyberpy._wallet import seed_to_privkey\n", "from eth_account.messages import encode_defunct\n", "import json\n", - "from time import time, sleep\n", + "from pprint import pprint\n", + "from time import time\n", "import ipfshttpclient\n", "from tqdm.notebook import tqdm\n", "from base64 import b64encode\n", "from multiprocess import Pool\n", "from math import ceil\n", "from dotenv import dotenv_values\n", - "from IPython.core.display import display, HTML\n", + "from IPython.display import display, HTML\n", "\n", "from contract_utils import execute_bash, instantiate_contract, execute_contract_bash, query_contract, get_ipfs_cid_from_str, get_proofs, ContractUtils\n", "\n", "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 500\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 40\n", + "NUMBER_OF_PARTICIPANTS = 10\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 5\n", + "NUMBER_OF_THREADS = 100\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [1_000_000] * NUMBER_OF_PARTICIPANTS\n", + "CLAIM_AMOUNT_LIST = [20_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", "COEF_UP = str(13)\n", @@ -59,9 +61,12 @@ "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", "PYTHON_PATH = dotenv_values('.env')['PYTHON_PATH']\n", + "\n", "DISPLAY_TX_EXECUTION = False\n", - "TEST_ACCOUNT_ADDRESS = 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'\n", - "TEST_ACCOUNT_SEED = 'end spread blind steak install glare pride pony switch exit zone faint opinion march layer illness can nest fence top debate monitor supreme noble'\n", + "CALCULATE_ADDRESS_SET = True\n", + "CALCULATE_PROOFS = True\n", + "SEND_COINS = True\n", + "PREFIX = 'terra'\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", "SUBGRAPH_CODE_ID = str(40)\n", @@ -75,7 +80,7 @@ "\n", "INIT_GIFT_CONTRACT = True\n", "GIFT_CODE_ID = str(20)\n", - "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom14swjuycwxmvghd9hgr3f3755388g6xkaqpn2dxcf700fzcwdm2nqum7453'\n", "\n", "PARTICIPANTS_FILE_NAME = 'participants_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv'\n", "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", @@ -102,13 +107,21 @@ "cell_type": "code", "execution_count": 2, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of tasks: 10\n", + "Number of threads: 100\n" + ] + }, { "data": { - "text/plain": " 0%| | 0/500 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16495701710QmV25axme4qJsqbYMoYZx9GQHXT25WHWBZYJ7YNUCmMpbf0xd1f01c98c6361b15c7176a08f248da306370fdd70x3a751d5df5c358f471edcc21c25d5f43b6dc3c37444d...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02cosmos1dth5c37g5zdq7mmxfr8l9sheyz35xmwer2qn3dnoodle prosper reflect donor bright inquiry co...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02...0x9dc5c14774bfb1d0ac9c3f61d4a274e0d220119b44e9...{'pub_key': 'A6j9IYOmx1Jt5DSedDgVNujK1nGLD5yNG...eyJwdWJfa2V5IjoiQTZqOUlZT214MUp0NURTZWREZ1ZOdW...
11000000john16495701711QmRdzvAKiWs4H6TpBJ3Q3QeqRAaY2wsguU1txJkPYJ7vcJ0x35176878370e039ccb8ba09a142358aad40c0be80xc6b2f06c863cb25e56499bc6f42a1543f8cecdf68072...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6vcosmos1wmapx0neuech3yw4ts3s75e7qck2ndhafc8qytthey upper require oval finish kitchen clog th...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v...0x14c6650cd3df447645eaa00f60ba673d921977b79a52...{'pub_key': 'ApLKDuuSXoLP1PqHVU34IHkv3v43PSoNs...eyJwdWJfa2V5IjoiQXBMS0R1dVNYb0xQMVBxSFZVMzRJSG...
21000000john16495701712QmPtY3cM1umfPHfV2ZfxBh8UKEfYFgq1Gfcvji3DVnMeU70x89101a2024e06f71724d4dc190ef5fdbc1370cd80x4345c4447770e2820312a60c7d2da29da0e4b2bafc22...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmqcosmos1m0j0gg27c9cjphsvw5fq3j794twtaddlk2qj98thank ski machine undo jewel neither replace s...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq...0x82314aa409cffe5148f822af633c85f9f1bd0c0192b7...{'pub_key': 'AhUCI1w0U4MSfkteLrwLM3EhUaQVWTFJ5...eyJwdWJfa2V5IjoiQWhVQ0kxdzBVNE1TZmt0ZUxyd0xNM0...
31000000john16495701713QmRHLv4J2Z6y2BFwZMrfoF3aujBk1rjshZkdmgdSsNCc290x34f1174d3717ac670f6751fcc036b34fc4a892ff0x4799e12d14b529d627b7ad608312abe3abe911e7c38f...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9cosmos1nnj8ud45p4ev7chg8m870jtv67d0sa8ee66x9zwoman bless wear chaos stereo grace inner firs...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9...0xb38bdf095218cbb8bc9c35601d25ca09170002b54f2d...{'pub_key': 'A1jQg1Ww8e2FsilUNNTH0gyAETzFp2Dn2...eyJwdWJfa2V5IjoiQTFqUWcxV3c4ZTJGc2lsVU5OVEgwZ3...
41000000john16495701714QmXPTPH9onvwMGECfC2a315jR5yHv1xc1AA24zo49KPDwA0x85c4291e76ca7d3c1d5dbe19778146653e1496430xd007d9f8286e6a49c4e1751ef67ca8462096b38d38e9...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrjcosmos1djhnjvl6rhfcqj60yw8sh8s8286jfsy85zzta4neither reopen hammer jazz smile muscle split ...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj...0x1d0ed6dc4c2d1c890d3d9e164aae5ca6a0380c2ff635...{'pub_key': 'AwJh/dhAK9yJo/yJO1G9LqpnaRSd9P0dt...eyJwdWJfa2V5IjoiQXdKaC9kaEFLOXlKby95Sk8xRzlMcX...
.......................................
4951000000john1649570171495QmR1PAbXT5yLAyFGDU1V2aiKwGKBeDTPppy4Xbtg2CaLKo0xaf9b15039827b9368bad79abcc3114b8626cd3200xac52e86a9d533d035f90151739db65a15d1f6795ecc8...bostrom1rq0957kew7kv8hj4sg3h2v9zsxad6y823cy7zncosmos1rq0957kew7kv8hj4sg3h2v9zsxad6y82jtsdu5bag sure walk battle rail exist sleep reject a...bostrom1rq0957kew7kv8hj4sg3h2v9zsxad6y823cy7zn...0xada4052d7140cbbac8e2236e0a613b0c7a2be5b2c60b...{'pub_key': 'AqtPOHbxslsnXFkwLV8Y5r+cpfZWEST51...eyJwdWJfa2V5IjoiQXF0UE9IYnhzbHNuWEZrd0xWOFk1ci...
4961000000john1649570171496QmdSW9gUSozfPae5fcogkScvp8gpP9n4patmJDHq1JBuLr0xba98748b4cb34b76c10440db31e89a1d88e3080f0x64fb49296e3ec3b797f0b7c71a9c7fb539312b06e4c9...bostrom1daedzeftlasfparuxka4qe25wckh9v8ewglz5rcosmos1daedzeftlasfparuxka4qe25wckh9v8edmt32yauction love lion dutch giant miracle vote sec...bostrom1daedzeftlasfparuxka4qe25wckh9v8ewglz5r...0x5e17c5615bec52860e55cb24c288fa55727a30d495e9...{'pub_key': 'AixjLGYWsjJ0ZdCYdYqvpzq1oiDJPMZn1...eyJwdWJfa2V5IjoiQWl4akxHWVdzakowWmRDWWRZcXZwen...
4971000000john1649570171497QmY4dLukHTJPphV1Wdx86GkXLc9zXKJkHBGAVQnfEeZSBG0x98668ddb798d94ce47038c9e15ce058fa3e7f96d0x02263b35db1b757f850e4ce29cb97d13583892a55300...bostrom1069t0hne60792r4lykss8nffphcw7p65z3n9y6cosmos1069t0hne60792r4lykss8nffphcw7p65pz8k6avendor bind grief rotate mutual question drink...bostrom1069t0hne60792r4lykss8nffphcw7p65z3n9y6...0x5473f9a13909829f6cff4889c6eae02ae7dd766555e4...{'pub_key': 'AtRi/+Fx+aWv39lxDJ3g1NfV+9bxT+CXr...eyJwdWJfa2V5IjoiQXRSaS8rRngrYVd2MzlseERKM2cxTm...
4981000000john1649570171498QmUFtq1nfsVHz4PN3R5H6wbBAcpiukDwcs7DZtceZPnf2L0x74252106af6f9d03f6cb704981fee915b8ad59320x5d648bdb2dfa020c2fc392ad2b6b8de4e704afe25caf...bostrom1p32r7340fgymndvwns3y46eys5gge5czpaf772cosmos1p32r7340fgymndvwns3y46eys5gge5czzwadqdplunge reward habit pond loyal bleak hat palm ...bostrom1p32r7340fgymndvwns3y46eys5gge5czpaf772...0x81adb9a1d38f53aebe3d1a7a662d36129205fa97bcc6...{'pub_key': 'Ar/QWRqPQp+UUvMQtCincdMoA+9umUX+J...eyJwdWJfa2V5IjoiQXIvUVdScVBRcCtVVXZNUXRDaW5jZE...
4991000000john1649570171499QmUJtBi64gaej9onAZvUkcnwkoXEWt2WE6yby3FuxNwuiC0x40218c89aa9400428589b82bc9b44828803926390x785a66fb878ec0293dfbad3ed97120f82898b3a068fe...bostrom1auqhx64tf60ccf8h9287xelke8cwpra7gnegg0cosmos1auqhx64tf60ccf8h9287xelke8cwpra7tqdmkgpurchase powder book much exhibit conduct scou...bostrom1auqhx64tf60ccf8h9287xelke8cwpra7gnegg0...0x7da30cfb7b493c4f15bdaaa8b59db793f3bd6c9bb5c4...{'pub_key': 'AvDB6dSq+iHovxrW0LWShEGPWYU0hQF4a...eyJwdWJfa2V5IjoiQXZEQjZkU3EraUhvdnhyVzBMV1NoRU...
\n

500 rows × 12 columns

\n" + "text/plain": " amount nickname avatar \\\n0 20000 john16504256240 QmP4nToEBpi6uiWj5Nb2au4dR17tkYy15fXgXqEYGBusJm \n1 20000 john16504256241 Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt \n2 20000 john16504256242 QmVmT11r27GhwMitNCiP6WM2nRDsizZZazRRFBD4QBwWre \n3 20000 john16504256243 QmPyJz5gJmVZkNHnjLtssqufLwQaQw7FPDgD7CY5uHfHNc \n4 20000 john16504256244 QmT2u7k3buV7Nhii1NoyoJNp8j1PskgzcynisqPX5vhGFR \n\n ethereum_address \\\n0 0x9a5f0bbf5c11d6a529cd8117554a8081027846fb \n1 0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61 \n2 0x905a168d90cff99902baf6297f682a0a1727cef2 \n3 0xb70ed2815618997c30da21244583e6c6401af6cb \n4 0x88688c62f9343cbc8135046f38d64c905e11c5d9 \n\n ethereum_private_key \\\n0 0xfe86a12db9a254e9d218ad1ea5fea014689a02e3b8f6... \n1 0xf184592e269f930ed1211e5953c4c5703fbf283c05a1... \n2 0xc36d13f58573be843be6d38ef21ed71bebf6fc37ef3a... \n3 0x0d1d64c44de49655fcfeafd45194cc2cfdca0d652fb7... \n4 0x4c9e62a47f27b72a2f287f8ca80b22dbc4d66bd406a1... \n\n bostrom_address \\\n0 bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6 \n1 bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq \n2 bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8 \n3 bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k \n4 bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s \n\n cosmos_address \\\n0 terra1mpxadqzwgfahat2u8ch5lf398sw3gyggwh3aja \n1 terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8 \n2 terra1dzkua4flhf5g5vkzc37ne3dwzwf2pry7elcvtq \n3 terra1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gvh5tx3 \n4 terra1ng4677w8sq48dsvhxpqqrs07enqn43v5vq9czh \n\n cosmos_seed \\\n0 card choose elevator truly lottery write denia... \n1 ability hour sleep stem jewel industry respons... \n2 fog screen cluster vivid exhibit violin myth e... \n3 huge arch muscle wrestle pig party mouse stree... \n4 lab tone caught reunion urban another loyal sk... \n\n message \\\n0 bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6... \n1 bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq... \n2 bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8... \n3 bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k... \n4 bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s... \n\n ethereum_message_signature \\\n0 0xd5cd520a249cfb60ccea30795d65765e652525f2e5db... \n1 0x95bb7ad4e0ff4e8ff1a95515d9eaf0467aef73abe253... \n2 0xd7df657766b823f958f2ac687c13cdf47aab36546e1f... \n3 0x09aef9028c2ac4737068427a2ce96ff2b82718d494f4... \n4 0x3ca4073a15d383f44bf852294bbb155d689dbcdbde02... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'As9N9jZB+OnV7elydUz7l0sHCp1g0Qyn/... \n1 {'pub_key': 'At1Gc8lVuvPmiY3cBO3n2NBIUK/qak6fy... \n2 {'pub_key': 'AjXCkZZoFKOjTXZ5B1RHjqE9ntRHRSsED... \n3 {'pub_key': 'AlIlP/46XgHznglIjjoOOy9IAKv00CHdM... \n4 {'pub_key': 'A8aj971kLRSLraxvGk2CO6x7T0CibPf5R... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXM5TjlqWkIrT25WN2VseWRVejdsMH... \n1 eyJwdWJfa2V5IjoiQXQxR2M4bFZ1dlBtaVkzY0JPM24yTk... \n2 eyJwdWJfa2V5IjoiQWpYQ2taWm9GS09qVFhaNUIxUkhqcU... \n3 eyJwdWJfa2V5IjoiQWxJbFAvNDZYZ0h6bmdsSWpqb09PeT... \n4 eyJwdWJfa2V5IjoiQThhajk3MWtMUlNMcmF4dkdrMkNPNn... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
020000john16504256240QmP4nToEBpi6uiWj5Nb2au4dR17tkYy15fXgXqEYGBusJm0x9a5f0bbf5c11d6a529cd8117554a8081027846fb0xfe86a12db9a254e9d218ad1ea5fea014689a02e3b8f6...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6terra1mpxadqzwgfahat2u8ch5lf398sw3gyggwh3ajacard choose elevator truly lottery write denia...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6...0xd5cd520a249cfb60ccea30795d65765e652525f2e5db...{'pub_key': 'As9N9jZB+OnV7elydUz7l0sHCp1g0Qyn/...eyJwdWJfa2V5IjoiQXM5TjlqWkIrT25WN2VseWRVejdsMH...
120000john16504256241Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b610xf184592e269f930ed1211e5953c4c5703fbf283c05a1...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuqterra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8ability hour sleep stem jewel industry respons...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq...0x95bb7ad4e0ff4e8ff1a95515d9eaf0467aef73abe253...{'pub_key': 'At1Gc8lVuvPmiY3cBO3n2NBIUK/qak6fy...eyJwdWJfa2V5IjoiQXQxR2M4bFZ1dlBtaVkzY0JPM24yTk...
220000john16504256242QmVmT11r27GhwMitNCiP6WM2nRDsizZZazRRFBD4QBwWre0x905a168d90cff99902baf6297f682a0a1727cef20xc36d13f58573be843be6d38ef21ed71bebf6fc37ef3a...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8terra1dzkua4flhf5g5vkzc37ne3dwzwf2pry7elcvtqfog screen cluster vivid exhibit violin myth e...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8...0xd7df657766b823f958f2ac687c13cdf47aab36546e1f...{'pub_key': 'AjXCkZZoFKOjTXZ5B1RHjqE9ntRHRSsED...eyJwdWJfa2V5IjoiQWpYQ2taWm9GS09qVFhaNUIxUkhqcU...
320000john16504256243QmPyJz5gJmVZkNHnjLtssqufLwQaQw7FPDgD7CY5uHfHNc0xb70ed2815618997c30da21244583e6c6401af6cb0x0d1d64c44de49655fcfeafd45194cc2cfdca0d652fb7...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6kterra1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gvh5tx3huge arch muscle wrestle pig party mouse stree...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k...0x09aef9028c2ac4737068427a2ce96ff2b82718d494f4...{'pub_key': 'AlIlP/46XgHznglIjjoOOy9IAKv00CHdM...eyJwdWJfa2V5IjoiQWxJbFAvNDZYZ0h6bmdsSWpqb09PeT...
420000john16504256244QmT2u7k3buV7Nhii1NoyoJNp8j1PskgzcynisqPX5vhGFR0x88688c62f9343cbc8135046f38d64c905e11c5d90x4c9e62a47f27b72a2f287f8ca80b22dbc4d66bd406a1...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7sterra1ng4677w8sq48dsvhxpqqrs07enqn43v5vq9czhlab tone caught reunion urban another loyal sk...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s...0x3ca4073a15d383f44bf852294bbb155d689dbcdbde02...{'pub_key': 'A8aj971kLRSLraxvGk2CO6x7T0CibPf5R...eyJwdWJfa2V5IjoiQThhajk3MWtMUlNMcmF4dkdrMkNPNn...
\n
" }, "execution_count": 2, "metadata": {}, @@ -125,11 +138,11 @@ } ], "source": [ - "claims_list = []\n", - "for i in tqdm(range(NUMBER_OF_PARTICIPANTS)):\n", + "def generate_wallet_data(i: int, prefix: str = PREFIX) -> dict:\n", + "\n", " claim_item = {'amount': CLAIM_AMOUNT_LIST[i],\n", - " 'nickname': NICKNAME_LIST[i],\n", - " 'avatar': AVATAR_CID_LIST[i]}\n", + " 'nickname': NICKNAME_LIST[i],\n", + " 'avatar': AVATAR_CID_LIST[i]}\n", "\n", " # Generate Ethereum wallet\n", " ethereum_wallet = w3.eth.account.create(KEY_PHRASE)\n", @@ -139,7 +152,7 @@ " # Generate Bostrom and Cosmos wallet\n", " bostrom_wallet = generate_wallet()\n", " claim_item['bostrom_address'] = bostrom_wallet['address']\n", - " claim_item['cosmos_address'] = address_to_address(bostrom_wallet['address'], 'cosmos')\n", + " claim_item['cosmos_address'] = address_to_address(bostrom_wallet['address'], prefix)\n", " claim_item['cosmos_seed'] = bostrom_wallet['seed']\n", "\n", " # Create message\n", @@ -150,12 +163,11 @@ " w3.eth.account.sign_message(\n", " signable_message=encode_defunct(text=claim_item['message']),\n", " private_key=ethereum_wallet.privateKey)\n", - " # print(signed_message.signature)\n", " claim_item['ethereum_message_signature'] = ethereum_signed_message.signature.hex()\n", "\n", " # Sign message form Cosmos address\n", " cosmos_msg = Message(privkey=seed_to_privkey(seed=claim_item['cosmos_seed']))\n", - " cosmos_msg.add_message(signing_message=claim_item['message'], signer_prefix='cosmos')\n", + " cosmos_msg.add_message(signing_message=claim_item['message'], signer_prefix=prefix)\n", " claim_item['cosmos_message_signed_row'] = cosmos_msg.get_signed_message()\n", " claim_item['cosmos_message_signature'] = b64encode(json.dumps(claim_item['cosmos_message_signed_row']).replace('\\n', '').replace(' ', '').encode('utf-8')).decode(\"utf-8\")\n", "\n", @@ -164,11 +176,22 @@ " signable_message=encode_defunct(text=claim_item['message']),\n", " signature=claim_item['ethereum_message_signature']).lower()\n", "\n", - " claims_list.append(claim_item)\n", + " return claim_item\n", "\n", - "claims_df = pd.DataFrame(claims_list)\n", - "claims_df.to_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", - "claims_df" + "\n", + "if CALCULATE_ADDRESS_SET:\n", + "\n", + " tasks = list(range(NUMBER_OF_PARTICIPANTS))\n", + " print(f'Number of tasks: {len(tasks)}')\n", + " print(f'Number of threads: {NUMBER_OF_THREADS}')\n", + " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " claims_list = list(tqdm(pool.imap(generate_wallet_data, tasks), total=len(tasks)))\n", + "\n", + " claims_df = pd.DataFrame(claims_list)\n", + " claims_df.to_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "else:\n", + " claims_df = pd.read_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df.head()" ], "metadata": { "collapsed": false, @@ -194,10 +217,10 @@ "execution_count": 3, "outputs": [], "source": [ - "root_source_list = [{'address': _item['ethereum_address'],\n", - " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", - " [{'address': _item['cosmos_address'],\n", - " 'amount': str(_item['amount'])} for _item in claims_list]\n", + "root_source_list = [{'address': _item[0],\n", + " 'amount': str(_item[1])} for _item in claims_df[['ethereum_address', 'amount']].values.tolist()]+ \\\n", + " [{'address': _item[0],\n", + " 'amount': str(_item[1])} for _item in claims_df[['cosmos_address', 'amount']].values.tolist()]\n", "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", " outfile.write(str(root_source_list).replace(\"'\", '\"'))" @@ -217,18 +240,36 @@ "name": "stdout", "output_type": "stream", "text": [ - "{('root_testing_source_500_addresses.json', 'temp/proofs_0.json', 0, 1001)}\n", - "yarn run v1.22.17\n", - "$ ts-node index.ts --input root_testing_source_500_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 1001\n", - "Merkle root: b40fa6d3d0ffdc7a746792841507786fc00d4e64c8a22d090c6afe08e64ab4e0\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 2.68s.\n", + "{('root_testing_source_10_addresses.json', 'temp/proofs_0.json', 0, 21)}\n" + ] + }, + { + "data": { + "text/plain": " 0%| | 0/1 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00xd1f01c98c6361b15c7176a08f248da306370fdd71000000[3eac5929d5872721fe1e2828d9373a1c62cfebf90cd8b...
10x35176878370e039ccb8ba09a142358aad40c0be81000000[1579595b7b694fbc1ac5abebad21bcceb43614c7d927c...
20x89101a2024e06f71724d4dc190ef5fdbc1370cd81000000[c560b5e2f62a4c4c889c3537b6977b2204d4af1a98254...
30x34f1174d3717ac670f6751fcc036b34fc4a892ff1000000[2cbbe2be547e8618c958a984b7c1dfedd982a5ba197ce...
40x85c4291e76ca7d3c1d5dbe19778146653e1496431000000[cfe5030a7cad4140c112a510605c171c192347aba5619...
............
996cosmos1daedzeftlasfparuxka4qe25wckh9v8edmt32y1000000[da14fbcae7ae4c22f5d5deb5c2258cc51081c0127f99c...
997cosmos1069t0hne60792r4lykss8nffphcw7p65pz8k6a1000000[0de2c489263dca24232b7d009a00f270eed06bc04f9df...
998cosmos1p32r7340fgymndvwns3y46eys5gge5czzwadqd1000000[a5f816610fa05b805e2ad12edea93366f7bc60e438cd1...
999cosmos1auqhx64tf60ccf8h9287xelke8cwpra7tqdmkg1000000[ea364902c359b1e2c6ab41843473482ee9adc6dcd6eb9...
10000xf2749114feaad68854e01c8ee762c7170532fdfd10000000[78730b5dcd34ceae74b3f8ebfe2fe376582a621069d15...
\n

1001 rows × 3 columns

\n" + "text/plain": " amount nickname avatar \\\n0 20000 john16504256240 QmP4nToEBpi6uiWj5Nb2au4dR17tkYy15fXgXqEYGBusJm \n1 20000 john16504256241 Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt \n2 20000 john16504256242 QmVmT11r27GhwMitNCiP6WM2nRDsizZZazRRFBD4QBwWre \n3 20000 john16504256243 QmPyJz5gJmVZkNHnjLtssqufLwQaQw7FPDgD7CY5uHfHNc \n4 20000 john16504256244 QmT2u7k3buV7Nhii1NoyoJNp8j1PskgzcynisqPX5vhGFR \n\n ethereum_address \\\n0 0x9a5f0bbf5c11d6a529cd8117554a8081027846fb \n1 0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61 \n2 0x905a168d90cff99902baf6297f682a0a1727cef2 \n3 0xb70ed2815618997c30da21244583e6c6401af6cb \n4 0x88688c62f9343cbc8135046f38d64c905e11c5d9 \n\n ethereum_private_key \\\n0 0xfe86a12db9a254e9d218ad1ea5fea014689a02e3b8f6... \n1 0xf184592e269f930ed1211e5953c4c5703fbf283c05a1... \n2 0xc36d13f58573be843be6d38ef21ed71bebf6fc37ef3a... \n3 0x0d1d64c44de49655fcfeafd45194cc2cfdca0d652fb7... \n4 0x4c9e62a47f27b72a2f287f8ca80b22dbc4d66bd406a1... \n\n bostrom_address \\\n0 bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6 \n1 bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq \n2 bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8 \n3 bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k \n4 bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s \n\n cosmos_address \\\n0 terra1mpxadqzwgfahat2u8ch5lf398sw3gyggwh3aja \n1 terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8 \n2 terra1dzkua4flhf5g5vkzc37ne3dwzwf2pry7elcvtq \n3 terra1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gvh5tx3 \n4 terra1ng4677w8sq48dsvhxpqqrs07enqn43v5vq9czh \n\n cosmos_seed \\\n0 card choose elevator truly lottery write denia... \n1 ability hour sleep stem jewel industry respons... \n2 fog screen cluster vivid exhibit violin myth e... \n3 huge arch muscle wrestle pig party mouse stree... \n4 lab tone caught reunion urban another loyal sk... \n\n message \\\n0 bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6... \n1 bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq... \n2 bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8... \n3 bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k... \n4 bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s... \n\n ethereum_message_signature \\\n0 0xd5cd520a249cfb60ccea30795d65765e652525f2e5db... \n1 0x95bb7ad4e0ff4e8ff1a95515d9eaf0467aef73abe253... \n2 0xd7df657766b823f958f2ac687c13cdf47aab36546e1f... \n3 0x09aef9028c2ac4737068427a2ce96ff2b82718d494f4... \n4 0x3ca4073a15d383f44bf852294bbb155d689dbcdbde02... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'As9N9jZB+OnV7elydUz7l0sHCp1g0Qyn/... \n1 {'pub_key': 'At1Gc8lVuvPmiY3cBO3n2NBIUK/qak6fy... \n2 {'pub_key': 'AjXCkZZoFKOjTXZ5B1RHjqE9ntRHRSsED... \n3 {'pub_key': 'AlIlP/46XgHznglIjjoOOy9IAKv00CHdM... \n4 {'pub_key': 'A8aj971kLRSLraxvGk2CO6x7T0CibPf5R... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQXM5TjlqWkIrT25WN2VseWRVejdsMH... \n1 eyJwdWJfa2V5IjoiQXQxR2M4bFZ1dlBtaVkzY0JPM24yTk... \n2 eyJwdWJfa2V5IjoiQWpYQ2taWm9GS09qVFhaNUIxUkhqcU... \n3 eyJwdWJfa2V5IjoiQWxJbFAvNDZYZ0h6bmdsSWpqb09PeT... \n4 eyJwdWJfa2V5IjoiQThhajk3MWtMUlNMcmF4dkdrMkNPNn... \n\n ethereum_proof \\\n0 [c11b8fd1bf4acbb10d9a2938934798692f31eca0c5e98... \n1 [a76348d8a6006c0d04fb046ebe968c80a9371ae1dc4a4... \n2 [39e347286602d0d2ccb3ed52293967d23735e7648b4e9... \n3 [17c7ae3fd12ce47596f08f97dfae61f0f8bc62d3e37bd... \n4 [837f5204efbf16ba6ef9cf0680010f79876a313e9c811... \n\n cosmos_proof \n0 [e30b13867a702d325c698dbf43db1229fb531d43d32e6... \n1 [eb00b5aac8ff0113e4c011c2920ea161d10dab7cf48b5... \n2 [8a28c78c36b5cd5f35dd0294a7d9ac3b27bea0cb8d23d... \n3 [67c905493fb16671a33a7da378475269a41b66cdd4e14... \n4 [a484f51b4afcea3792bf7f3f7864ddf2ec94774c243f5... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
020000john16504256240QmP4nToEBpi6uiWj5Nb2au4dR17tkYy15fXgXqEYGBusJm0x9a5f0bbf5c11d6a529cd8117554a8081027846fb0xfe86a12db9a254e9d218ad1ea5fea014689a02e3b8f6...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6terra1mpxadqzwgfahat2u8ch5lf398sw3gyggwh3ajacard choose elevator truly lottery write denia...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6...0xd5cd520a249cfb60ccea30795d65765e652525f2e5db...{'pub_key': 'As9N9jZB+OnV7elydUz7l0sHCp1g0Qyn/...eyJwdWJfa2V5IjoiQXM5TjlqWkIrT25WN2VseWRVejdsMH...[c11b8fd1bf4acbb10d9a2938934798692f31eca0c5e98...[e30b13867a702d325c698dbf43db1229fb531d43d32e6...
120000john16504256241Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b610xf184592e269f930ed1211e5953c4c5703fbf283c05a1...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuqterra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8ability hour sleep stem jewel industry respons...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq...0x95bb7ad4e0ff4e8ff1a95515d9eaf0467aef73abe253...{'pub_key': 'At1Gc8lVuvPmiY3cBO3n2NBIUK/qak6fy...eyJwdWJfa2V5IjoiQXQxR2M4bFZ1dlBtaVkzY0JPM24yTk...[a76348d8a6006c0d04fb046ebe968c80a9371ae1dc4a4...[eb00b5aac8ff0113e4c011c2920ea161d10dab7cf48b5...
220000john16504256242QmVmT11r27GhwMitNCiP6WM2nRDsizZZazRRFBD4QBwWre0x905a168d90cff99902baf6297f682a0a1727cef20xc36d13f58573be843be6d38ef21ed71bebf6fc37ef3a...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8terra1dzkua4flhf5g5vkzc37ne3dwzwf2pry7elcvtqfog screen cluster vivid exhibit violin myth e...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8...0xd7df657766b823f958f2ac687c13cdf47aab36546e1f...{'pub_key': 'AjXCkZZoFKOjTXZ5B1RHjqE9ntRHRSsED...eyJwdWJfa2V5IjoiQWpYQ2taWm9GS09qVFhaNUIxUkhqcU...[39e347286602d0d2ccb3ed52293967d23735e7648b4e9...[8a28c78c36b5cd5f35dd0294a7d9ac3b27bea0cb8d23d...
320000john16504256243QmPyJz5gJmVZkNHnjLtssqufLwQaQw7FPDgD7CY5uHfHNc0xb70ed2815618997c30da21244583e6c6401af6cb0x0d1d64c44de49655fcfeafd45194cc2cfdca0d652fb7...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6kterra1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gvh5tx3huge arch muscle wrestle pig party mouse stree...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k...0x09aef9028c2ac4737068427a2ce96ff2b82718d494f4...{'pub_key': 'AlIlP/46XgHznglIjjoOOy9IAKv00CHdM...eyJwdWJfa2V5IjoiQWxJbFAvNDZYZ0h6bmdsSWpqb09PeT...[17c7ae3fd12ce47596f08f97dfae61f0f8bc62d3e37bd...[67c905493fb16671a33a7da378475269a41b66cdd4e14...
420000john16504256244QmT2u7k3buV7Nhii1NoyoJNp8j1PskgzcynisqPX5vhGFR0x88688c62f9343cbc8135046f38d64c905e11c5d90x4c9e62a47f27b72a2f287f8ca80b22dbc4d66bd406a1...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7sterra1ng4677w8sq48dsvhxpqqrs07enqn43v5vq9czhlab tone caught reunion urban another loyal sk...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s...0x3ca4073a15d383f44bf852294bbb155d689dbcdbde02...{'pub_key': 'A8aj971kLRSLraxvGk2CO6x7T0CibPf5R...eyJwdWJfa2V5IjoiQThhajk3MWtMUlNMcmF4dkdrMkNPNn...[837f5204efbf16ba6ef9cf0680010f79876a313e9c811...[a484f51b4afcea3792bf7f3f7864ddf2ec94774c243f5...
\n
" }, "execution_count": 5, "metadata": {}, @@ -267,16 +309,39 @@ } ], "source": [ - "roots = []\n", - "proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", - "for task in tasks:\n", - " with open(task[1], 'r') as proof_file:\n", + "if CALCULATE_PROOFS:\n", + " roots = []\n", + " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + " for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", + " assert roots == [roots[0]] * len(roots)\n", + " root = roots[0]\n", + "\n", + " cosmos_proofs_df = proofs_df[proofs_df.address.str.startswith(PREFIX)][['address', 'proof']]\n", + " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + "\n", + " claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='left',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='left',\n", + " on='cosmos_address')\n", + "\n", + " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", + "else:\n", + " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", + " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " with open('temp/proofs_1.json', 'r') as proof_file:\n", " root_and_proof_json = json.load(proof_file)\n", - " roots.append(root_and_proof_json['merkle_root'])\n", - " proofs_df = proofs_df.append(pd.DataFrame(root_and_proof_json['proofs']), ignore_index=True)\n", - "assert roots == [roots[0]] * len(roots)\n", - "root = roots[0]\n", - "proofs_df" + " root = root_and_proof_json['merkle_root']\n", + "claims_with_proofs_df.head()" ], "metadata": { "collapsed": false, @@ -288,33 +353,10 @@ { "cell_type": "code", "execution_count": 6, - "outputs": [ - { - "data": { - "text/plain": " amount nickname avatar \\\n0 1000000 john16495701710 QmV25axme4qJsqbYMoYZx9GQHXT25WHWBZYJ7YNUCmMpbf \n1 1000000 john16495701711 QmRdzvAKiWs4H6TpBJ3Q3QeqRAaY2wsguU1txJkPYJ7vcJ \n2 1000000 john16495701712 QmPtY3cM1umfPHfV2ZfxBh8UKEfYFgq1Gfcvji3DVnMeU7 \n3 1000000 john16495701713 QmRHLv4J2Z6y2BFwZMrfoF3aujBk1rjshZkdmgdSsNCc29 \n4 1000000 john16495701714 QmXPTPH9onvwMGECfC2a315jR5yHv1xc1AA24zo49KPDwA \n\n ethereum_address \\\n0 0xd1f01c98c6361b15c7176a08f248da306370fdd7 \n1 0x35176878370e039ccb8ba09a142358aad40c0be8 \n2 0x89101a2024e06f71724d4dc190ef5fdbc1370cd8 \n3 0x34f1174d3717ac670f6751fcc036b34fc4a892ff \n4 0x85c4291e76ca7d3c1d5dbe19778146653e149643 \n\n ethereum_private_key \\\n0 0x3a751d5df5c358f471edcc21c25d5f43b6dc3c37444d... \n1 0xc6b2f06c863cb25e56499bc6f42a1543f8cecdf68072... \n2 0x4345c4447770e2820312a60c7d2da29da0e4b2bafc22... \n3 0x4799e12d14b529d627b7ad608312abe3abe911e7c38f... \n4 0xd007d9f8286e6a49c4e1751ef67ca8462096b38d38e9... \n\n bostrom_address \\\n0 bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02 \n1 bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v \n2 bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq \n3 bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9 \n4 bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj \n\n cosmos_address \\\n0 cosmos1dth5c37g5zdq7mmxfr8l9sheyz35xmwer2qn3d \n1 cosmos1wmapx0neuech3yw4ts3s75e7qck2ndhafc8qyt \n2 cosmos1m0j0gg27c9cjphsvw5fq3j794twtaddlk2qj98 \n3 cosmos1nnj8ud45p4ev7chg8m870jtv67d0sa8ee66x9z \n4 cosmos1djhnjvl6rhfcqj60yw8sh8s8286jfsy85zzta4 \n\n cosmos_seed \\\n0 noodle prosper reflect donor bright inquiry co... \n1 they upper require oval finish kitchen clog th... \n2 thank ski machine undo jewel neither replace s... \n3 woman bless wear chaos stereo grace inner firs... \n4 neither reopen hammer jazz smile muscle split ... \n\n message \\\n0 bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02... \n1 bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v... \n2 bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq... \n3 bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9... \n4 bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj... \n\n ethereum_message_signature \\\n0 0x9dc5c14774bfb1d0ac9c3f61d4a274e0d220119b44e9... \n1 0x14c6650cd3df447645eaa00f60ba673d921977b79a52... \n2 0x82314aa409cffe5148f822af633c85f9f1bd0c0192b7... \n3 0xb38bdf095218cbb8bc9c35601d25ca09170002b54f2d... \n4 0x1d0ed6dc4c2d1c890d3d9e164aae5ca6a0380c2ff635... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A6j9IYOmx1Jt5DSedDgVNujK1nGLD5yNG... \n1 {'pub_key': 'ApLKDuuSXoLP1PqHVU34IHkv3v43PSoNs... \n2 {'pub_key': 'AhUCI1w0U4MSfkteLrwLM3EhUaQVWTFJ5... \n3 {'pub_key': 'A1jQg1Ww8e2FsilUNNTH0gyAETzFp2Dn2... \n4 {'pub_key': 'AwJh/dhAK9yJo/yJO1G9LqpnaRSd9P0dt... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTZqOUlZT214MUp0NURTZWREZ1ZOdW... \n1 eyJwdWJfa2V5IjoiQXBMS0R1dVNYb0xQMVBxSFZVMzRJSG... \n2 eyJwdWJfa2V5IjoiQWhVQ0kxdzBVNE1TZmt0ZUxyd0xNM0... \n3 eyJwdWJfa2V5IjoiQTFqUWcxV3c4ZTJGc2lsVU5OVEgwZ3... \n4 eyJwdWJfa2V5IjoiQXdKaC9kaEFLOXlKby95Sk8xRzlMcX... \n\n ethereum_proof \\\n0 [3eac5929d5872721fe1e2828d9373a1c62cfebf90cd8b... \n1 [1579595b7b694fbc1ac5abebad21bcceb43614c7d927c... \n2 [c560b5e2f62a4c4c889c3537b6977b2204d4af1a98254... \n3 [2cbbe2be547e8618c958a984b7c1dfedd982a5ba197ce... \n4 [cfe5030a7cad4140c112a510605c171c192347aba5619... \n\n cosmos_proof \n0 [f05c1c3ed43f2f73c930b4077562375c55e42716cb11e... \n1 [298a35ac9c7a1531a22d63608124d52ae946bf16478ba... \n2 [fadaf81d5a751a0cd4a17c23fbfc84cc3da759d7b04f4... \n3 [ad20470a308fe5746c97802dc8785e7c0c683fc8de7c1... \n4 [728628f60cfcd64001c2c23a523c6de169fa40feb1600... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16495701710QmV25axme4qJsqbYMoYZx9GQHXT25WHWBZYJ7YNUCmMpbf0xd1f01c98c6361b15c7176a08f248da306370fdd70x3a751d5df5c358f471edcc21c25d5f43b6dc3c37444d...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02cosmos1dth5c37g5zdq7mmxfr8l9sheyz35xmwer2qn3dnoodle prosper reflect donor bright inquiry co...bostrom1dth5c37g5zdq7mmxfr8l9sheyz35xmweqe5q02...0x9dc5c14774bfb1d0ac9c3f61d4a274e0d220119b44e9...{'pub_key': 'A6j9IYOmx1Jt5DSedDgVNujK1nGLD5yNG...eyJwdWJfa2V5IjoiQTZqOUlZT214MUp0NURTZWREZ1ZOdW...[3eac5929d5872721fe1e2828d9373a1c62cfebf90cd8b...[f05c1c3ed43f2f73c930b4077562375c55e42716cb11e...
11000000john16495701711QmRdzvAKiWs4H6TpBJ3Q3QeqRAaY2wsguU1txJkPYJ7vcJ0x35176878370e039ccb8ba09a142358aad40c0be80xc6b2f06c863cb25e56499bc6f42a1543f8cecdf68072...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6vcosmos1wmapx0neuech3yw4ts3s75e7qck2ndhafc8qytthey upper require oval finish kitchen clog th...bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v...0x14c6650cd3df447645eaa00f60ba673d921977b79a52...{'pub_key': 'ApLKDuuSXoLP1PqHVU34IHkv3v43PSoNs...eyJwdWJfa2V5IjoiQXBMS0R1dVNYb0xQMVBxSFZVMzRJSG...[1579595b7b694fbc1ac5abebad21bcceb43614c7d927c...[298a35ac9c7a1531a22d63608124d52ae946bf16478ba...
21000000john16495701712QmPtY3cM1umfPHfV2ZfxBh8UKEfYFgq1Gfcvji3DVnMeU70x89101a2024e06f71724d4dc190ef5fdbc1370cd80x4345c4447770e2820312a60c7d2da29da0e4b2bafc22...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmqcosmos1m0j0gg27c9cjphsvw5fq3j794twtaddlk2qj98thank ski machine undo jewel neither replace s...bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq...0x82314aa409cffe5148f822af633c85f9f1bd0c0192b7...{'pub_key': 'AhUCI1w0U4MSfkteLrwLM3EhUaQVWTFJ5...eyJwdWJfa2V5IjoiQWhVQ0kxdzBVNE1TZmt0ZUxyd0xNM0...[c560b5e2f62a4c4c889c3537b6977b2204d4af1a98254...[fadaf81d5a751a0cd4a17c23fbfc84cc3da759d7b04f4...
31000000john16495701713QmRHLv4J2Z6y2BFwZMrfoF3aujBk1rjshZkdmgdSsNCc290x34f1174d3717ac670f6751fcc036b34fc4a892ff0x4799e12d14b529d627b7ad608312abe3abe911e7c38f...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9cosmos1nnj8ud45p4ev7chg8m870jtv67d0sa8ee66x9zwoman bless wear chaos stereo grace inner firs...bostrom1nnj8ud45p4ev7chg8m870jtv67d0sa8e6fw4m9...0xb38bdf095218cbb8bc9c35601d25ca09170002b54f2d...{'pub_key': 'A1jQg1Ww8e2FsilUNNTH0gyAETzFp2Dn2...eyJwdWJfa2V5IjoiQTFqUWcxV3c4ZTJGc2lsVU5OVEgwZ3...[2cbbe2be547e8618c958a984b7c1dfedd982a5ba197ce...[ad20470a308fe5746c97802dc8785e7c0c683fc8de7c1...
41000000john16495701714QmXPTPH9onvwMGECfC2a315jR5yHv1xc1AA24zo49KPDwA0x85c4291e76ca7d3c1d5dbe19778146653e1496430xd007d9f8286e6a49c4e1751ef67ca8462096b38d38e9...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrjcosmos1djhnjvl6rhfcqj60yw8sh8s8286jfsy85zzta4neither reopen hammer jazz smile muscle split ...bostrom1djhnjvl6rhfcqj60yw8sh8s8286jfsy8h3kcrj...0x1d0ed6dc4c2d1c890d3d9e164aae5ca6a0380c2ff635...{'pub_key': 'AwJh/dhAK9yJo/yJO1G9LqpnaRSd9P0dt...eyJwdWJfa2V5IjoiQXdKaC9kaEFLOXlKby95Sk8xRzlMcX...[cfe5030a7cad4140c112a510605c171c192347aba5619...[728628f60cfcd64001c2c23a523c6de169fa40feb1600...
\n
" - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "cosmos_proofs_df = proofs_df[proofs_df.address.str.startswith('cosmos')][['address', 'proof']]\n", - "ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", - "\n", - "claims_with_proofs_df = claims_df\\\n", - " .merge(\n", - " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", - " how='left',\n", - " on='ethereum_address')\\\n", - " .merge(\n", - " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", - " how='left',\n", - " on='cosmos_address')\n", - "\n", - "claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", - "claims_with_proofs_df.head()" + "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", + " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" ], "metadata": { "collapsed": false, @@ -361,12 +403,14 @@ " instantiate_contract(\n", " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test avatar subgraph')\n", + " contract_label='test avatar subgraph',\n", + " from_address=WALLET_ADDRESS)\n", " proof_subgraph_contract_address = \\\n", " instantiate_contract(\n", " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test proof subgraph')\n", + " contract_label='test proof subgraph',\n", + " from_address=WALLET_ADDRESS)\n", "else:\n", " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", @@ -412,7 +456,8 @@ " instantiate_contract(\n", " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", " contract_code_id=PASSPORT_CODE_ID,\n", - " contract_label='test passport')\n", + " contract_label='test passport',\n", + " from_address=WALLET_ADDRESS)\n", "else:\n", " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", "print(f'Passport contract address: {passport_contract_address}')" @@ -479,7 +524,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom14d067652qyney947evnlllydm9mxhg3wq4r3k585tc2dt5x2qrdsgxhm06\n" + "Gift contract address: bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\n" ] } ], @@ -490,7 +535,9 @@ " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", " contract_code_id=GIFT_CODE_ID,\n", " amount=INITIAL_BALANCE,\n", - " contract_label='test gift')\n", + " contract_label='test gift',\n", + " from_address=WALLET_ADDRESS,\n", + " display_data=False)\n", "else:\n", " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", "print(f'Gift contract address: {gift_contract_address}')" @@ -576,9 +623,9 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: b40fa6d3d0ffdc7a746792841507786fc00d4e64c8a22d090c6afe08e64ab4e0\n", + "\tmerkle_root: 38972df4bb090bf59f5f762d03683fe741f742ae66b0dc96906d02cc8b0be033\n", "Gas used: 121,492\n", - "Tx hash: 310C6BBFB39E1FD6AF4375D90030700ED4AC7A509B9DFF12805391C030697FB1\n" + "Tx hash: 18BD6190A6CF7E929E2EE8777C4845479B6F94070CEFB5A81927F96259DF56A2\n" ] } ], @@ -617,8 +664,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom14d067652qyney947evnlllydm9mxhg3wq4r3k585tc2dt5x2qrdsgxhm06\n", - "{'data': {'merkle_root': 'b40fa6d3d0ffdc7a746792841507786fc00d4e64c8a22d090c6afe08e64ab4e0'}}\n" + "Gift contract bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\n", + "{'data': {'merkle_root': '38972df4bb090bf59f5f762d03683fe741f742ae66b0dc96906d02cc8b0be033'}}\n" ] } ], @@ -660,6 +707,18 @@ "cell_type": "code", "execution_count": 14, "outputs": [ + { + "data": { + "text/plain": " 0%| | 0/1 [00:00 bool:\n", - " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py {PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address}')\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address}')\n", " if _output:\n", " return _output\n", " else:\n", " return _error\n", "\n", - "NUMBER_OF_THREADS = 20\n", + "NUMBER_OF_THREADS = 100\n", "\n", - "tasks = [[item] for item in range(NUMBER_OF_ACTIVATED_PARTICIPANTS)]\n", + "tasks = list(range(NUMBER_OF_ACTIVATED_PARTICIPANTS))\n", "print(f'Number of tasks: {len(tasks)}')\n", "print(f'Number of threads: {NUMBER_OF_THREADS}')\n", "\n", + "\n", "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", - " res = pool.starmap(execute_participation, tasks)" + " res_participation = list(tqdm(pool.imap(execute_participation, tasks), total=len(tasks)))" ], "metadata": { "collapsed": false, @@ -3751,10 +884,10 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "outputs": [], "source": [ - "with open('temp/contract_execution_log_10.txt', 'r') as f:\n", + "with open('temp/contract_participation_execution_log_1.txt', 'r') as f:\n", " data = json.load(f)" ], "metadata": { @@ -3764,6 +897,32 @@ } } }, + { + "cell_type": "code", + "execution_count": 17, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'claim_cosmos': '{\"code\":0,\"codespace\":\"\",\"data\":null,\"gas_used\":314457,\"gas_wanted\":400000,\"height\":2297173,\"info\":null,\"logs\":[{\"events\":[{\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"},{\"key\":\"amount\",\"value\":\"100000boot\"}],\"type\":\"coin_received\"},{\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"},{\"key\":\"amount\",\"value\":\"100000boot\"}],\"type\":\"coin_spent\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"}],\"type\":\"execute\"},{\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"}],\"type\":\"message\"},{\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"},{\"key\":\"sender\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"},{\"key\":\"amount\",\"value\":\"100000boot\"}],\"type\":\"transfer\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"},{\"key\":\"action\",\"value\":\"claim\"},{\"key\":\"original\",\"value\":\"terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\"},{\"key\":\"target\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"},{\"key\":\"amount\",\"value\":\"259781\"}],\"type\":\"wasm\"}],\"events_by_type\":{\"coin_received\":{\"amount\":[\"100000boot\"],\"receiver\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]},\"coin_spent\":{\"amount\":[\"100000boot\"],\"spender\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"]},\"execute\":{\"_contract_address\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"]},\"message\":{\"action\":[\"/cosmwasm.wasm.v1.MsgExecuteContract\"],\"module\":[\"wasm\"],\"sender\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]},\"transfer\":{\"amount\":[\"100000boot\"],\"recipient\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"],\"sender\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"]},\"wasm\":{\"_contract_address\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"],\"action\":[\"claim\"],\"amount\":[\"259781\"],\"original\":[\"terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\"],\"target\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]}},\"log\":\"\",\"msg_index\":0}],\"raw_log\":\"[{\\\\\"events\\\\\":[{\\\\\"type\\\\\":\\\\\"coin_received\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"receiver\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"100000boot\\\\\"}]},{\\\\\"type\\\\\":\\\\\"coin_spent\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"spender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"100000boot\\\\\"}]},{\\\\\"type\\\\\":\\\\\"execute\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"}]},{\\\\\"type\\\\\":\\\\\"message\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\\\"},{\\\\\"key\\\\\":\\\\\"module\\\\\",\\\\\"value\\\\\":\\\\\"wasm\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"transfer\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"recipient\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"100000boot\\\\\"}]},{\\\\\"type\\\\\":\\\\\"wasm\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"},{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"claim\\\\\"},{\\\\\"key\\\\\":\\\\\"original\\\\\",\\\\\"value\\\\\":\\\\\"terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\\\\\"},{\\\\\"key\\\\\":\\\\\"target\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"259781\\\\\"}]}]}]\",\"timestamp\":null,\"txhash\":\"664139380EB6BA055A507BDAF9C645EE1AE08E7A2DFA3442A2CB7AB8FBD18297\"}',\n", + " 'claim_ethereum': '{\"code\":0,\"codespace\":\"\",\"data\":null,\"gas_used\":315596,\"gas_wanted\":400000,\"height\":2297172,\"info\":null,\"logs\":[{\"events\":[{\"attributes\":[{\"key\":\"receiver\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"},{\"key\":\"amount\",\"value\":\"100000boot\"}],\"type\":\"coin_received\"},{\"attributes\":[{\"key\":\"spender\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"},{\"key\":\"amount\",\"value\":\"100000boot\"}],\"type\":\"coin_spent\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"}],\"type\":\"execute\"},{\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"}],\"type\":\"message\"},{\"attributes\":[{\"key\":\"recipient\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"},{\"key\":\"sender\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"},{\"key\":\"amount\",\"value\":\"100000boot\"}],\"type\":\"transfer\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"},{\"key\":\"action\",\"value\":\"claim\"},{\"key\":\"original\",\"value\":\"0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61\"},{\"key\":\"target\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"},{\"key\":\"amount\",\"value\":\"259906\"}],\"type\":\"wasm\"}],\"events_by_type\":{\"coin_received\":{\"amount\":[\"100000boot\"],\"receiver\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]},\"coin_spent\":{\"amount\":[\"100000boot\"],\"spender\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"]},\"execute\":{\"_contract_address\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"]},\"message\":{\"action\":[\"/cosmwasm.wasm.v1.MsgExecuteContract\"],\"module\":[\"wasm\"],\"sender\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]},\"transfer\":{\"amount\":[\"100000boot\"],\"recipient\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"],\"sender\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"]},\"wasm\":{\"_contract_address\":[\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\"],\"action\":[\"claim\"],\"amount\":[\"259906\"],\"original\":[\"0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61\"],\"target\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]}},\"log\":\"\",\"msg_index\":0}],\"raw_log\":\"[{\\\\\"events\\\\\":[{\\\\\"type\\\\\":\\\\\"coin_received\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"receiver\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"100000boot\\\\\"}]},{\\\\\"type\\\\\":\\\\\"coin_spent\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"spender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"100000boot\\\\\"}]},{\\\\\"type\\\\\":\\\\\"execute\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"}]},{\\\\\"type\\\\\":\\\\\"message\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\\\"},{\\\\\"key\\\\\":\\\\\"module\\\\\",\\\\\"value\\\\\":\\\\\"wasm\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"transfer\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"recipient\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"100000boot\\\\\"}]},{\\\\\"type\\\\\":\\\\\"wasm\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\\\\\"},{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"claim\\\\\"},{\\\\\"key\\\\\":\\\\\"original\\\\\",\\\\\"value\\\\\":\\\\\"0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61\\\\\"},{\\\\\"key\\\\\":\\\\\"target\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"},{\\\\\"key\\\\\":\\\\\"amount\\\\\",\\\\\"value\\\\\":\\\\\"259906\\\\\"}]}]}]\",\"timestamp\":null,\"txhash\":\"4ADF43482F36060450419C0B8D9A17D68FBF0A196FC56B017CD48162A4968426\"}',\n", + " 'create': '{\"code\":0,\"codespace\":\"\",\"data\":null,\"gas_used\":440639,\"gas_wanted\":500000,\"height\":2297169,\"info\":null,\"logs\":[{\"events\":[{\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\"},{\"key\":\"particleTo\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"particleFrom\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"particleTo\",\"value\":\"QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\"},{\"key\":\"neuron\",\"value\":\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\"},{\"key\":\"particleFrom\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"particleTo\",\"value\":\"Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\"},{\"key\":\"particleFrom\",\"value\":\"Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\"},{\"key\":\"particleTo\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"neuron\",\"value\":\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"}],\"type\":\"cyberlink\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"_contract_address\",\"value\":\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\"},{\"key\":\"_contract_address\",\"value\":\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"}],\"type\":\"execute\"},{\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"}],\"type\":\"message\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"action\",\"value\":\"mint\"},{\"key\":\"minter\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"token_id\",\"value\":\"273396\"}],\"type\":\"wasm\"}],\"events_by_type\":{\"cyberlink\":{\"neuron\":[\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\",\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"],\"particleFrom\":[\"QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\",\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\",\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\",\"Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\"],\"particleTo\":[\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\",\"QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\",\"Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\",\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"]},\"execute\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\",\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\",\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"]},\"message\":{\"action\":[\"/cosmwasm.wasm.v1.MsgExecuteContract\"],\"module\":[\"wasm\"],\"sender\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]},\"wasm\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"],\"action\":[\"mint\"],\"minter\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"],\"token_id\":[\"273396\"]}},\"log\":\"\",\"msg_index\":0}],\"raw_log\":\"[{\\\\\"events\\\\\":[{\\\\\"type\\\\\":\\\\\"cyberlink\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\\\\\"},{\\\\\"key\\\\\":\\\\\"neuron\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"neuron\\\\\",\\\\\"value\\\\\":\\\\\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"execute\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\\\\\"},{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"message\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\\\"},{\\\\\"key\\\\\":\\\\\"module\\\\\",\\\\\"value\\\\\":\\\\\"wasm\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"wasm\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"mint\\\\\"},{\\\\\"key\\\\\":\\\\\"minter\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"token_id\\\\\",\\\\\"value\\\\\":\\\\\"273396\\\\\"}]}]}]\",\"timestamp\":null,\"txhash\":\"AEB78D27926A2870BF0290A90D3CA7B949196FE2521119BA16117A5C6D105D5D\"}',\n", + " 'proof_cosmos': '{\"code\":0,\"codespace\":\"\",\"data\":null,\"gas_used\":284668,\"gas_wanted\":400000,\"height\":2297171,\"info\":null,\"logs\":[{\"events\":[{\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"particleTo\",\"value\":\"QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\"},{\"key\":\"particleFrom\",\"value\":\"QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\"},{\"key\":\"particleTo\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"neuron\",\"value\":\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"}],\"type\":\"cyberlink\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"_contract_address\",\"value\":\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"}],\"type\":\"execute\"},{\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"}],\"type\":\"message\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16504256241\"},{\"key\":\"address\",\"value\":\"terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\"}],\"type\":\"wasm\"}],\"events_by_type\":{\"cyberlink\":{\"neuron\":[\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"],\"particleFrom\":[\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\",\"QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\"],\"particleTo\":[\"QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\",\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"]},\"execute\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\",\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"]},\"message\":{\"action\":[\"/cosmwasm.wasm.v1.MsgExecuteContract\"],\"module\":[\"wasm\"],\"sender\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]},\"wasm\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"],\"action\":[\"proof_address\"],\"address\":[\"terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\"],\"nickname\":[\"john16504256241\"]}},\"log\":\"\",\"msg_index\":0}],\"raw_log\":\"[{\\\\\"events\\\\\":[{\\\\\"type\\\\\":\\\\\"cyberlink\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"neuron\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\\\\\"}]},{\\\\\"type\\\\\":\\\\\"execute\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\\\\\"}]},{\\\\\"type\\\\\":\\\\\"message\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\\\"},{\\\\\"key\\\\\":\\\\\"module\\\\\",\\\\\"value\\\\\":\\\\\"wasm\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"wasm\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"proof_address\\\\\"},{\\\\\"key\\\\\":\\\\\"nickname\\\\\",\\\\\"value\\\\\":\\\\\"john16504256241\\\\\"},{\\\\\"key\\\\\":\\\\\"address\\\\\",\\\\\"value\\\\\":\\\\\"terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\\\\\"}]}]}]\",\"timestamp\":null,\"txhash\":\"282376D133C956370A4F3F6F658A3724BBD2F7ADAEB113580B7E1708A8B6DBEF\"}',\n", + " 'proof_ethereum': '{\"code\":0,\"codespace\":\"\",\"data\":null,\"gas_used\":281286,\"gas_wanted\":400000,\"height\":2297170,\"info\":null,\"logs\":[{\"events\":[{\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"particleTo\",\"value\":\"QmdatLam7fTHVEdWD7y394gNQhX4Y4iBiWSSJq5UGWX5xn\"},{\"key\":\"particleFrom\",\"value\":\"QmdatLam7fTHVEdWD7y394gNQhX4Y4iBiWSSJq5UGWX5xn\"},{\"key\":\"particleTo\",\"value\":\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"},{\"key\":\"neuron\",\"value\":\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"}],\"type\":\"cyberlink\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"_contract_address\",\"value\":\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"}],\"type\":\"execute\"},{\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"}],\"type\":\"message\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16504256241\"},{\"key\":\"address\",\"value\":\"0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61\"}],\"type\":\"wasm\"}],\"events_by_type\":{\"cyberlink\":{\"neuron\":[\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"],\"particleFrom\":[\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\",\"QmdatLam7fTHVEdWD7y394gNQhX4Y4iBiWSSJq5UGWX5xn\"],\"particleTo\":[\"QmdatLam7fTHVEdWD7y394gNQhX4Y4iBiWSSJq5UGWX5xn\",\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\"]},\"execute\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\",\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"]},\"message\":{\"action\":[\"/cosmwasm.wasm.v1.MsgExecuteContract\"],\"module\":[\"wasm\"],\"sender\":[\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\"]},\"wasm\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"],\"action\":[\"proof_address\"],\"address\":[\"0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61\"],\"nickname\":[\"john16504256241\"]}},\"log\":\"\",\"msg_index\":0}],\"raw_log\":\"[{\\\\\"events\\\\\":[{\\\\\"type\\\\\":\\\\\"cyberlink\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmdatLam7fTHVEdWD7y394gNQhX4Y4iBiWSSJq5UGWX5xn\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmdatLam7fTHVEdWD7y394gNQhX4Y4iBiWSSJq5UGWX5xn\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\\\\\"},{\\\\\"key\\\\\":\\\\\"neuron\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\\\\\"}]},{\\\\\"type\\\\\":\\\\\"execute\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\\\\\"}]},{\\\\\"type\\\\\":\\\\\"message\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\\\"},{\\\\\"key\\\\\":\\\\\"module\\\\\",\\\\\"value\\\\\":\\\\\"wasm\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"wasm\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"proof_address\\\\\"},{\\\\\"key\\\\\":\\\\\"nickname\\\\\",\\\\\"value\\\\\":\\\\\"john16504256241\\\\\"},{\\\\\"key\\\\\":\\\\\"address\\\\\",\\\\\"value\\\\\":\\\\\"0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61\\\\\"}]}]}]\",\"timestamp\":null,\"txhash\":\"973AF4CA217BB50BB033322D058100164714CEBC7B3D03059300C0C2C90D93EE\"}'}\n" + ] + } + ], + "source": [ + "pprint(data)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "code", "execution_count": 18, @@ -3776,12 +935,12 @@ "Events\n", "\n", "cyberlinks\n", - "\tQmemPmMC2CTtAFhDmwvjs5uGCVTfrf3RSdRDjAiF4AeeaJ -> Qma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc\n", - "\tQma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc -> QmemPmMC2CTtAFhDmwvjs5uGCVTfrf3RSdRDjAiF4AeeaJ\n", + "\tQmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv -> QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\n", + "\tQmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY -> QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\n", "\tneuron: Name Subgraph Contract\n", "\n", - "\tQma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc -> QmeMj59L9JW8QNVqL9TsVDmxTEhTDsV6q6XAH3T71aVHhC\n", - "\tQmeMj59L9JW8QNVqL9TsVDmxTEhTDsV6q6XAH3T71aVHhC -> Qma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc\n", + "\tQmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY -> Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\n", + "\tQme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt -> QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\n", "\tneuron: Avatar Subgraph Contract\n", "\n", "\n", @@ -3790,15 +949,15 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 1384\n", - "Gas used: 440,265\n", - "Tx hash: E0B0F94C1835A04419B5EA7BFBE95B15553061B170AA13B68DEB5933B288E82C\n" + "\ttoken_id: 273396\n", + "Gas used: 440,639\n", + "Tx hash: AEB78D27926A2870BF0290A90D3CA7B949196FE2521119BA16117A5C6D105D5D\n" ] } ], @@ -3824,8 +983,8 @@ "Events\n", "\n", "cyberlinks\n", - "\tQma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc -> QmYfHHqWxi7PrGuXhDsTXPBdrAPh5BnWR7MkqfsAN3priG\n", - "\tQmYfHHqWxi7PrGuXhDsTXPBdrAPh5BnWR7MkqfsAN3priG -> Qma1WXgcUeKRooe5ydVLptoY5rRogZA7yVuBb8ftoARENc\n", + "\tQmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY -> QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\n", + "\tQmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ -> QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\n", "\tneuron: Proof Subgraph Contract\n", "\n", "\n", @@ -3833,20 +992,20 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john164957017110\n", - "\taddress: 0x51126745fe2b70bf42f329e5c451c6c2e067d61c\n", - "Gas used: 281,156\n", - "Tx hash: 66ADD954E5CB27059B18593EEF566DC3F2B3FA70977949A1C736F3ACD6C64441\n" + "\tnickname: john16504256241\n", + "\taddress: terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\n", + "Gas used: 284,668\n", + "Tx hash: 282376D133C956370A4F3F6F658A3724BBD2F7ADAEB113580B7E1708A8B6DBEF\n" ] } ], "source": [ - "contract_utils.parse_contract_execution_json(data['proof_ethereum'])" + "contract_utils.parse_contract_execution_json(data['proof_cosmos'])" ], "metadata": { "collapsed": false, @@ -3867,7 +1026,7 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", + "\treceiver: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", "\tamount: 100000boot\n", "\n", "coin spent\n", @@ -3877,26 +1036,143 @@ "execute\n", "\texecute contract: Gift Contract\n", "\n", - "message from bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", + "\trecipient: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: 0x51126745fe2b70bf42f329e5c451c6c2e067d61c\n", - "\ttarget: bostrom1g4vq7rvxlmvt7xu42m88drvg6z25vvsdgwez0u\n", - "\tamount: 12,236,691\n", - "Gas used: 322,718\n", - "Tx hash: 0381A20561A88F18A78ADB94083DA34B4E1A69802444673E7AF23E6DF8CB71D7\n" + "\toriginal: terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\n", + "\ttarget: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", + "\tamount: 259,781\n", + "Gas used: 314,457\n", + "Tx hash: 664139380EB6BA055A507BDAF9C645EE1AE08E7A2DFA3442A2CB7AB8FBD18297\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['claim_cosmos'])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 21, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of tasks: 5\n", + "Number of threads: 100\n" + ] + }, + { + "data": { + "text/plain": " 0%| | 0/5 [00:00 bool:\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address} True')\n", + " if _output:\n", + " return _output\n", + " else:\n", + " return _error\n", + "\n", + "\n", + "NUMBER_OF_THREADS = 100\n", + "\n", + "tasks = list(range(NUMBER_OF_ACTIVATED_PARTICIPANTS))\n", + "print(f'Number of tasks: {len(tasks)}')\n", + "print(f'Number of threads: {NUMBER_OF_THREADS}')\n", + "\n", + "\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res_release = list(tqdm(pool.imap(execute_release, tasks), total=len(tasks)))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 22, + "outputs": [], + "source": [ + "with open('temp/contract_release_execution_log_1.txt', 'r') as f:\n", + " release_data = json.load(f)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 23, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", + "\tamount: 15990boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 15990boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", + "\tsender: Gift Contract\n", + "\tamount: 15990boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", + "\tgift_address: 0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b61\n", + "\tstage: 9\n", + "\tamount: 15,990\n", + "Gas used: 157,447\n", + "Tx hash: 5D59183EE4403DB7425BA8A87BD93AF1BD59CB2FC81931FA542813B5C0326ACA\n" ] } ], "source": [ - "contract_utils.parse_contract_execution_json(data['claim_ethereum'])" + "contract_utils.parse_contract_execution_json(release_data['release_ethereum'])" ], "metadata": { "collapsed": false, @@ -3920,7 +1196,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 24, "outputs": [], "source": [ "def get_passport_id(bostrom_address: str) -> str:\n", @@ -3936,7 +1212,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 25, "outputs": [ { "data": { @@ -3944,7 +1220,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "233af41bf63743bca923e10668c81577" + "model_id": "ea297965f0ef47868d18d531c68e8ad5" } }, "metadata": {}, @@ -3968,7 +1244,7 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Avatar Subgraph Contract\n", @@ -3976,11 +1252,11 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom1wmapx0neuech3yw4ts3s75e7qck2ndha2tnn6v\n", + "\tsender: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 1386\n", - "Gas used: 385,800\n", - "Tx hash: FFAF3465A41FABAA47EB845FAEBE709EEC1F01C4198CFACD12F57BB978FD5881\n" + "\ttoken_id: 273396\n", + "Gas used: 386,223\n", + "Tx hash: BD20CBEF172D95F75E69EE7AB14AC3C36287B4E25AD9B1B1EC79776A34115A40\n" ] } ], @@ -4019,7 +1295,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 26, "outputs": [ { "data": { @@ -4027,7 +1303,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "bc8594b0b68144f387753750923bbc59" + "model_id": "4f7bb38f174e4abe8ed5bb8d98100d92" } }, "metadata": {}, @@ -4055,15 +1331,15 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom1m0j0gg27c9cjphsvw5fq3j794twtaddl4e5pmq\n", - "\ttoken_id: 1390\n", - "Gas used: 381,878\n", - "Tx hash: 2557A6805C6EFF0440357CF80D7F404E83BA2BEE0A82A310F41CB291A0C5D57D\n" + "\tsender: bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8\n", + "\ttoken_id: 273395\n", + "Gas used: 382,058\n", + "Tx hash: B5B341737C1C79EC63923DAC82F2EC5538ED2E1456C27B396CFDBE87065FF0DB\n" ] } ], From 90bec6dddb10422ee3c3f880c0ad705e4d43a497 Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Fri, 22 Apr 2022 12:41:53 +0800 Subject: [PATCH 34/69] - Update load testing - Add sleeping for fixing sequence mismatch --- .../generate_test_data/contract_utils.py | 4 - .../create_passport_and_claim_job.py | 5 + ..._and_passport_contracts_load_testing.ipynb | 3721 ++++++++++++++--- 3 files changed, 3112 insertions(+), 618 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index e291dcc..955594e 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -203,10 +203,6 @@ def proof_address(self, claim_row: pd.Series, network: str = 'ethereum', display display_data=display_data) def claim(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): - print({"claim": {"nickname": claim_row['nickname'], - "gift_claiming_address": claim_row[network + "_address"], - "gift_amount": str(claim_row['amount']), - "proof": claim_row[network + "_proof"]}}) return self.execute_contract( execute_msg={ "claim": {"nickname": claim_row['nickname'], "gift_claiming_address": claim_row[network + "_address"], diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py index f49ff7a..4d5bf10 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -17,6 +17,7 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False contract_utils = ContractUtils(ipfs_client=None, address_dict=address_dict) if release_bool: _release_ethereum_json = contract_utils.release(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) _release_cosmos_json = contract_utils.release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) return { 'release_ethereum': _release_ethereum_json, @@ -24,10 +25,14 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False } else: _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) _proof_cosmos_address_json = contract_utils.proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) + sleep(1) _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) _claim_cosmos_json = contract_utils.claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) return { 'create': _create_passport_json, diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index 5fdfb30..f331e1f 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -30,6 +30,7 @@ "from cyberpy._wallet import seed_to_privkey\n", "from eth_account.messages import encode_defunct\n", "import json\n", + "import random\n", "from pprint import pprint\n", "from time import time\n", "import ipfshttpclient\n", @@ -45,13 +46,14 @@ "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 10\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 5\n", + "NUMBER_OF_PARTICIPANTS = 100_000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 50_000\n", "NUMBER_OF_THREADS = 100\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", "CLAIM_AMOUNT_LIST = [20_000] * NUMBER_OF_PARTICIPANTS\n", + "PREFIXES = ['cosmos', 'osmo', 'terra']\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", "COEF_UP = str(13)\n", @@ -66,7 +68,6 @@ "CALCULATE_ADDRESS_SET = True\n", "CALCULATE_PROOFS = True\n", "SEND_COINS = True\n", - "PREFIX = 'terra'\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", "SUBGRAPH_CODE_ID = str(40)\n", @@ -111,17 +112,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 10\n", + "Number of tasks: 100000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/10 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
020000john16504256240QmP4nToEBpi6uiWj5Nb2au4dR17tkYy15fXgXqEYGBusJm0x9a5f0bbf5c11d6a529cd8117554a8081027846fb0xfe86a12db9a254e9d218ad1ea5fea014689a02e3b8f6...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6terra1mpxadqzwgfahat2u8ch5lf398sw3gyggwh3ajacard choose elevator truly lottery write denia...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6...0xd5cd520a249cfb60ccea30795d65765e652525f2e5db...{'pub_key': 'As9N9jZB+OnV7elydUz7l0sHCp1g0Qyn/...eyJwdWJfa2V5IjoiQXM5TjlqWkIrT25WN2VseWRVejdsMH...
120000john16504256241Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b610xf184592e269f930ed1211e5953c4c5703fbf283c05a1...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuqterra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8ability hour sleep stem jewel industry respons...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq...0x95bb7ad4e0ff4e8ff1a95515d9eaf0467aef73abe253...{'pub_key': 'At1Gc8lVuvPmiY3cBO3n2NBIUK/qak6fy...eyJwdWJfa2V5IjoiQXQxR2M4bFZ1dlBtaVkzY0JPM24yTk...
220000john16504256242QmVmT11r27GhwMitNCiP6WM2nRDsizZZazRRFBD4QBwWre0x905a168d90cff99902baf6297f682a0a1727cef20xc36d13f58573be843be6d38ef21ed71bebf6fc37ef3a...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8terra1dzkua4flhf5g5vkzc37ne3dwzwf2pry7elcvtqfog screen cluster vivid exhibit violin myth e...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8...0xd7df657766b823f958f2ac687c13cdf47aab36546e1f...{'pub_key': 'AjXCkZZoFKOjTXZ5B1RHjqE9ntRHRSsED...eyJwdWJfa2V5IjoiQWpYQ2taWm9GS09qVFhaNUIxUkhqcU...
320000john16504256243QmPyJz5gJmVZkNHnjLtssqufLwQaQw7FPDgD7CY5uHfHNc0xb70ed2815618997c30da21244583e6c6401af6cb0x0d1d64c44de49655fcfeafd45194cc2cfdca0d652fb7...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6kterra1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gvh5tx3huge arch muscle wrestle pig party mouse stree...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k...0x09aef9028c2ac4737068427a2ce96ff2b82718d494f4...{'pub_key': 'AlIlP/46XgHznglIjjoOOy9IAKv00CHdM...eyJwdWJfa2V5IjoiQWxJbFAvNDZYZ0h6bmdsSWpqb09PeT...
420000john16504256244QmT2u7k3buV7Nhii1NoyoJNp8j1PskgzcynisqPX5vhGFR0x88688c62f9343cbc8135046f38d64c905e11c5d90x4c9e62a47f27b72a2f287f8ca80b22dbc4d66bd406a1...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7sterra1ng4677w8sq48dsvhxpqqrs07enqn43v5vq9czhlab tone caught reunion urban another loyal sk...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s...0x3ca4073a15d383f44bf852294bbb155d689dbcdbde02...{'pub_key': 'A8aj971kLRSLraxvGk2CO6x7T0CibPf5R...eyJwdWJfa2V5IjoiQThhajk3MWtMUlNMcmF4dkdrMkNPNn...
\n" + "text/plain": " amount nickname avatar \\\n0 20000 john16505145390 QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv \n1 20000 john16505145391 QmcbX6Af2hx9Co1wDKnkpG5HwTVoC4sYUiJNdKiSgRgNsg \n2 20000 john16505145392 QmNg2da2P9CQppC5QdRsu8zy8LCbKSgwSCX7K51zexf2xq \n3 20000 john16505145393 QmbEz8ZGkWeQnpEJPSQrjnDpcyCxwyaerkmd1gxWYMn2Kf \n4 20000 john16505145394 QmaBhHHPYivF8a6otweD8ZgtVWSVbB5AXpqtmVPQvfx3kB \n\n ethereum_address \\\n0 0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca \n1 0x54a31fa6e38731c1b8eda7579cf156a33769179f \n2 0x7bd9105d6084694757c819f8a965e39ecf7ff8a2 \n3 0x60920d73ebeaede54d58d56f0a7e22b6c051a912 \n4 0xa38253e4257fda031a2cf619e8dd9f455211e22a \n\n ethereum_private_key \\\n0 0xea1e4958631e349eeec2e49d59281f69eb0b453120b3... \n1 0xce2da6faaae94781d2881cc33edaf8ce32fd05f52ad1... \n2 0x6213c521d7e6533db5bd4af75ef0ad61251afb632a0f... \n3 0x289c072a670df38e707d7c26f9c1b7ebe255431b56d6... \n4 0x3688c537e031cd40687ddcce934fba76a370e2f2d04f... \n\n bostrom_address \\\n0 bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 \n1 bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg \n2 bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2 \n3 bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3 \n4 bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4c \n\n cosmos_address \\\n0 osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6 \n1 osmo1h48dqhht7cfukuxusujqgeuzpt43jtg8gl7kpa \n2 cosmos1c0h2ysdynjq7sslef0ktx86a9yk0dkp96lka7d \n3 cosmos1na6xl94tl7r5sjxyuhva04sy8p68jhhzhw7pxk \n4 terra1zt4phgz5xpfzvymhnnemqesdyyw2spe8hw8pfl \n\n cosmos_seed \\\n0 pottery hen display later journey drastic need... \n1 arrange sure benefit recipe replace width fan ... \n2 joke vacuum town dress below either height tig... \n3 collect hockey simple firm joke air polar salo... \n4 recall pitch fork dune rebuild priority habit ... \n\n message \\\n0 bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50... \n1 bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg... \n2 bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2... \n3 bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3... \n4 bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4c... \n\n ethereum_message_signature \\\n0 0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef... \n1 0x7af0aed2bbf9b33e3e73a34cff62a19d2078f84030fa... \n2 0x73d09d6c82e35d6bd9379519a1957504ef235744e74d... \n3 0x7d92f8e2e6b9db95853d5a7692bcd4c87c3b32966c58... \n4 0xb83b211090ffee9f2e27d37552a8e346ee4604171d61... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e... \n1 {'pub_key': 'AtzxTgc/gj7M7q1a6oVBOz/V9uqAWmjjP... \n2 {'pub_key': 'AhE823RJVhq2gyouGMwgcDvOQK80l/hap... \n3 {'pub_key': 'A2COW5KWNuVXMJPyoNNNpsIxlcs7N7CfX... \n4 {'pub_key': 'AynVqVXox56sBogu4VL45Uk1KD9KvvtAd... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND... \n1 eyJwdWJfa2V5IjoiQXR6eFRnYy9najdNN3ExYTZvVkJPei... \n2 eyJwdWJfa2V5IjoiQWhFODIzUkpWaHEyZ3lvdUdNd2djRH... \n3 eyJwdWJfa2V5IjoiQTJDT1c1S1dOdVZYTUpQeW9OTk5wc0... \n4 eyJwdWJfa2V5IjoiQXluVnFWWG94NTZzQm9ndTRWTDQ1VW... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
020000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...
120000john16505145391QmcbX6Af2hx9Co1wDKnkpG5HwTVoC4sYUiJNdKiSgRgNsg0x54a31fa6e38731c1b8eda7579cf156a33769179f0xce2da6faaae94781d2881cc33edaf8ce32fd05f52ad1...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fgosmo1h48dqhht7cfukuxusujqgeuzpt43jtg8gl7kpaarrange sure benefit recipe replace width fan ...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg...0x7af0aed2bbf9b33e3e73a34cff62a19d2078f84030fa...{'pub_key': 'AtzxTgc/gj7M7q1a6oVBOz/V9uqAWmjjP...eyJwdWJfa2V5IjoiQXR6eFRnYy9najdNN3ExYTZvVkJPei...
220000john16505145392QmNg2da2P9CQppC5QdRsu8zy8LCbKSgwSCX7K51zexf2xq0x7bd9105d6084694757c819f8a965e39ecf7ff8a20x6213c521d7e6533db5bd4af75ef0ad61251afb632a0f...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2cosmos1c0h2ysdynjq7sslef0ktx86a9yk0dkp96lka7djoke vacuum town dress below either height tig...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2...0x73d09d6c82e35d6bd9379519a1957504ef235744e74d...{'pub_key': 'AhE823RJVhq2gyouGMwgcDvOQK80l/hap...eyJwdWJfa2V5IjoiQWhFODIzUkpWaHEyZ3lvdUdNd2djRH...
320000john16505145393QmbEz8ZGkWeQnpEJPSQrjnDpcyCxwyaerkmd1gxWYMn2Kf0x60920d73ebeaede54d58d56f0a7e22b6c051a9120x289c072a670df38e707d7c26f9c1b7ebe255431b56d6...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3cosmos1na6xl94tl7r5sjxyuhva04sy8p68jhhzhw7pxkcollect hockey simple firm joke air polar salo...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3...0x7d92f8e2e6b9db95853d5a7692bcd4c87c3b32966c58...{'pub_key': 'A2COW5KWNuVXMJPyoNNNpsIxlcs7N7CfX...eyJwdWJfa2V5IjoiQTJDT1c1S1dOdVZYTUpQeW9OTk5wc0...
420000john16505145394QmaBhHHPYivF8a6otweD8ZgtVWSVbB5AXpqtmVPQvfx3kB0xa38253e4257fda031a2cf619e8dd9f455211e22a0x3688c537e031cd40687ddcce934fba76a370e2f2d04f...bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4cterra1zt4phgz5xpfzvymhnnemqesdyyw2spe8hw8pflrecall pitch fork dune rebuild priority habit ...bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4c...0xb83b211090ffee9f2e27d37552a8e346ee4604171d61...{'pub_key': 'AynVqVXox56sBogu4VL45Uk1KD9KvvtAd...eyJwdWJfa2V5IjoiQXluVnFWWG94NTZzQm9ndTRWTDQ1VW...
\n
" }, "execution_count": 2, "metadata": {}, @@ -138,7 +139,9 @@ } ], "source": [ - "def generate_wallet_data(i: int, prefix: str = PREFIX) -> dict:\n", + "def generate_wallet_data(i: int, prefixes: list = PREFIXES) -> dict:\n", + "\n", + " prefix = random.choice(prefixes)\n", "\n", " claim_item = {'amount': CLAIM_AMOUNT_LIST[i],\n", " 'nickname': NICKNAME_LIST[i],\n", @@ -240,16 +243,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "{('root_testing_source_10_addresses.json', 'temp/proofs_0.json', 0, 21)}\n" + "{('root_testing_source_100000_addresses.json', 'temp/proofs_166.json', 166000, 167001), ('root_testing_source_100000_addresses.json', 'temp/proofs_132.json', 132000, 133001), ('root_testing_source_100000_addresses.json', 'temp/proofs_54.json', 54000, 55001), ('root_testing_source_100000_addresses.json', 'temp/proofs_120.json', 120000, 121001), ('root_testing_source_100000_addresses.json', 'temp/proofs_29.json', 29000, 30001), ('root_testing_source_100000_addresses.json', 'temp/proofs_149.json', 149000, 150001), ('root_testing_source_100000_addresses.json', 'temp/proofs_63.json', 63000, 64001), ('root_testing_source_100000_addresses.json', 'temp/proofs_145.json', 145000, 146001), ('root_testing_source_100000_addresses.json', 'temp/proofs_105.json', 105000, 106001), ('root_testing_source_100000_addresses.json', 'temp/proofs_156.json', 156000, 157001), ('root_testing_source_100000_addresses.json', 'temp/proofs_49.json', 49000, 50001), ('root_testing_source_100000_addresses.json', 'temp/proofs_137.json', 137000, 138001), ('root_testing_source_100000_addresses.json', 'temp/proofs_161.json', 161000, 162001), ('root_testing_source_100000_addresses.json', 'temp/proofs_37.json', 37000, 38001), ('root_testing_source_100000_addresses.json', 'temp/proofs_68.json', 68000, 69001), ('root_testing_source_100000_addresses.json', 'temp/proofs_40.json', 40000, 41001), ('root_testing_source_100000_addresses.json', 'temp/proofs_17.json', 17000, 18001), ('root_testing_source_100000_addresses.json', 'temp/proofs_52.json', 52000, 53001), ('root_testing_source_100000_addresses.json', 'temp/proofs_79.json', 79000, 80001), ('root_testing_source_100000_addresses.json', 'temp/proofs_111.json', 111000, 112001), ('root_testing_source_100000_addresses.json', 'temp/proofs_53.json', 53000, 54001), ('root_testing_source_100000_addresses.json', 'temp/proofs_160.json', 160000, 161001), ('root_testing_source_100000_addresses.json', 'temp/proofs_191.json', 191000, 192001), ('root_testing_source_100000_addresses.json', 'temp/proofs_87.json', 87000, 88001), ('root_testing_source_100000_addresses.json', 'temp/proofs_46.json', 46000, 47001), ('root_testing_source_100000_addresses.json', 'temp/proofs_39.json', 39000, 40001), ('root_testing_source_100000_addresses.json', 'temp/proofs_130.json', 130000, 131001), ('root_testing_source_100000_addresses.json', 'temp/proofs_60.json', 60000, 61001), ('root_testing_source_100000_addresses.json', 'temp/proofs_71.json', 71000, 72001), ('root_testing_source_100000_addresses.json', 'temp/proofs_131.json', 131000, 132001), ('root_testing_source_100000_addresses.json', 'temp/proofs_56.json', 56000, 57001), ('root_testing_source_100000_addresses.json', 'temp/proofs_5.json', 5000, 6001), ('root_testing_source_100000_addresses.json', 'temp/proofs_88.json', 88000, 89001), ('root_testing_source_100000_addresses.json', 'temp/proofs_197.json', 197000, 198001), ('root_testing_source_100000_addresses.json', 'temp/proofs_47.json', 47000, 48001), ('root_testing_source_100000_addresses.json', 'temp/proofs_66.json', 66000, 67001), ('root_testing_source_100000_addresses.json', 'temp/proofs_139.json', 139000, 140001), ('root_testing_source_100000_addresses.json', 'temp/proofs_175.json', 175000, 176001), ('root_testing_source_100000_addresses.json', 'temp/proofs_30.json', 30000, 31001), ('root_testing_source_100000_addresses.json', 'temp/proofs_107.json', 107000, 108001), ('root_testing_source_100000_addresses.json', 'temp/proofs_128.json', 128000, 129001), ('root_testing_source_100000_addresses.json', 'temp/proofs_36.json', 36000, 37001), ('root_testing_source_100000_addresses.json', 'temp/proofs_185.json', 185000, 186001), ('root_testing_source_100000_addresses.json', 'temp/proofs_62.json', 62000, 63001), ('root_testing_source_100000_addresses.json', 'temp/proofs_104.json', 104000, 105001), ('root_testing_source_100000_addresses.json', 'temp/proofs_114.json', 114000, 115001), ('root_testing_source_100000_addresses.json', 'temp/proofs_28.json', 28000, 29001), ('root_testing_source_100000_addresses.json', 'temp/proofs_2.json', 2000, 3001), ('root_testing_source_100000_addresses.json', 'temp/proofs_72.json', 72000, 73001), ('root_testing_source_100000_addresses.json', 'temp/proofs_78.json', 78000, 79001), ('root_testing_source_100000_addresses.json', 'temp/proofs_133.json', 133000, 134001), ('root_testing_source_100000_addresses.json', 'temp/proofs_173.json', 173000, 174001), ('root_testing_source_100000_addresses.json', 'temp/proofs_92.json', 92000, 93001), ('root_testing_source_100000_addresses.json', 'temp/proofs_123.json', 123000, 124001), ('root_testing_source_100000_addresses.json', 'temp/proofs_174.json', 174000, 175001), ('root_testing_source_100000_addresses.json', 'temp/proofs_76.json', 76000, 77001), ('root_testing_source_100000_addresses.json', 'temp/proofs_65.json', 65000, 66001), ('root_testing_source_100000_addresses.json', 'temp/proofs_43.json', 43000, 44001), ('root_testing_source_100000_addresses.json', 'temp/proofs_194.json', 194000, 195001), ('root_testing_source_100000_addresses.json', 'temp/proofs_13.json', 13000, 14001), ('root_testing_source_100000_addresses.json', 'temp/proofs_38.json', 38000, 39001), ('root_testing_source_100000_addresses.json', 'temp/proofs_172.json', 172000, 173001), ('root_testing_source_100000_addresses.json', 'temp/proofs_177.json', 177000, 178001), ('root_testing_source_100000_addresses.json', 'temp/proofs_176.json', 176000, 177001), ('root_testing_source_100000_addresses.json', 'temp/proofs_24.json', 24000, 25001), ('root_testing_source_100000_addresses.json', 'temp/proofs_70.json', 70000, 71001), ('root_testing_source_100000_addresses.json', 'temp/proofs_94.json', 94000, 95001), ('root_testing_source_100000_addresses.json', 'temp/proofs_169.json', 169000, 170001), ('root_testing_source_100000_addresses.json', 'temp/proofs_16.json', 16000, 17001), ('root_testing_source_100000_addresses.json', 'temp/proofs_165.json', 165000, 166001), ('root_testing_source_100000_addresses.json', 'temp/proofs_42.json', 42000, 43001), ('root_testing_source_100000_addresses.json', 'temp/proofs_64.json', 64000, 65001), ('root_testing_source_100000_addresses.json', 'temp/proofs_45.json', 45000, 46001), ('root_testing_source_100000_addresses.json', 'temp/proofs_97.json', 97000, 98001), ('root_testing_source_100000_addresses.json', 'temp/proofs_58.json', 58000, 59001), ('root_testing_source_100000_addresses.json', 'temp/proofs_31.json', 31000, 32001), ('root_testing_source_100000_addresses.json', 'temp/proofs_187.json', 187000, 188001), ('root_testing_source_100000_addresses.json', 'temp/proofs_182.json', 182000, 183001), ('root_testing_source_100000_addresses.json', 'temp/proofs_125.json', 125000, 126001), ('root_testing_source_100000_addresses.json', 'temp/proofs_184.json', 184000, 185001), ('root_testing_source_100000_addresses.json', 'temp/proofs_26.json', 26000, 27001), ('root_testing_source_100000_addresses.json', 'temp/proofs_8.json', 8000, 9001), ('root_testing_source_100000_addresses.json', 'temp/proofs_75.json', 75000, 76001), ('root_testing_source_100000_addresses.json', 'temp/proofs_85.json', 85000, 86001), ('root_testing_source_100000_addresses.json', 'temp/proofs_153.json', 153000, 154001), ('root_testing_source_100000_addresses.json', 'temp/proofs_159.json', 159000, 160001), ('root_testing_source_100000_addresses.json', 'temp/proofs_117.json', 117000, 118001), ('root_testing_source_100000_addresses.json', 'temp/proofs_127.json', 127000, 128001), ('root_testing_source_100000_addresses.json', 'temp/proofs_0.json', 0, 1001), ('root_testing_source_100000_addresses.json', 'temp/proofs_57.json', 57000, 58001), ('root_testing_source_100000_addresses.json', 'temp/proofs_3.json', 3000, 4001), ('root_testing_source_100000_addresses.json', 'temp/proofs_44.json', 44000, 45001), ('root_testing_source_100000_addresses.json', 'temp/proofs_15.json', 15000, 16001), ('root_testing_source_100000_addresses.json', 'temp/proofs_186.json', 186000, 187001), ('root_testing_source_100000_addresses.json', 'temp/proofs_143.json', 143000, 144001), ('root_testing_source_100000_addresses.json', 'temp/proofs_188.json', 188000, 189001), ('root_testing_source_100000_addresses.json', 'temp/proofs_163.json', 163000, 164001), ('root_testing_source_100000_addresses.json', 'temp/proofs_147.json', 147000, 148001), ('root_testing_source_100000_addresses.json', 'temp/proofs_11.json', 11000, 12001), ('root_testing_source_100000_addresses.json', 'temp/proofs_27.json', 27000, 28001), ('root_testing_source_100000_addresses.json', 'temp/proofs_95.json', 95000, 96001), ('root_testing_source_100000_addresses.json', 'temp/proofs_98.json', 98000, 99001), ('root_testing_source_100000_addresses.json', 'temp/proofs_158.json', 158000, 159001), ('root_testing_source_100000_addresses.json', 'temp/proofs_20.json', 20000, 21001), ('root_testing_source_100000_addresses.json', 'temp/proofs_89.json', 89000, 90001), ('root_testing_source_100000_addresses.json', 'temp/proofs_23.json', 23000, 24001), ('root_testing_source_100000_addresses.json', 'temp/proofs_100.json', 100000, 101001), ('root_testing_source_100000_addresses.json', 'temp/proofs_102.json', 102000, 103001), ('root_testing_source_100000_addresses.json', 'temp/proofs_77.json', 77000, 78001), ('root_testing_source_100000_addresses.json', 'temp/proofs_157.json', 157000, 158001), ('root_testing_source_100000_addresses.json', 'temp/proofs_190.json', 190000, 191001), ('root_testing_source_100000_addresses.json', 'temp/proofs_18.json', 18000, 19001), ('root_testing_source_100000_addresses.json', 'temp/proofs_109.json', 109000, 110001), ('root_testing_source_100000_addresses.json', 'temp/proofs_152.json', 152000, 153001), ('root_testing_source_100000_addresses.json', 'temp/proofs_7.json', 7000, 8001), ('root_testing_source_100000_addresses.json', 'temp/proofs_14.json', 14000, 15001), ('root_testing_source_100000_addresses.json', 'temp/proofs_150.json', 150000, 151001), ('root_testing_source_100000_addresses.json', 'temp/proofs_82.json', 82000, 83001), ('root_testing_source_100000_addresses.json', 'temp/proofs_51.json', 51000, 52001), ('root_testing_source_100000_addresses.json', 'temp/proofs_106.json', 106000, 107001), ('root_testing_source_100000_addresses.json', 'temp/proofs_50.json', 50000, 51001), ('root_testing_source_100000_addresses.json', 'temp/proofs_67.json', 67000, 68001), ('root_testing_source_100000_addresses.json', 'temp/proofs_32.json', 32000, 33001), ('root_testing_source_100000_addresses.json', 'temp/proofs_124.json', 124000, 125001), ('root_testing_source_100000_addresses.json', 'temp/proofs_112.json', 112000, 113001), ('root_testing_source_100000_addresses.json', 'temp/proofs_126.json', 126000, 127001), ('root_testing_source_100000_addresses.json', 'temp/proofs_33.json', 33000, 34001), ('root_testing_source_100000_addresses.json', 'temp/proofs_84.json', 84000, 85001), ('root_testing_source_100000_addresses.json', 'temp/proofs_196.json', 196000, 197001), ('root_testing_source_100000_addresses.json', 'temp/proofs_122.json', 122000, 123001), ('root_testing_source_100000_addresses.json', 'temp/proofs_151.json', 151000, 152001), ('root_testing_source_100000_addresses.json', 'temp/proofs_162.json', 162000, 163001), ('root_testing_source_100000_addresses.json', 'temp/proofs_12.json', 12000, 13001), ('root_testing_source_100000_addresses.json', 'temp/proofs_6.json', 6000, 7001), ('root_testing_source_100000_addresses.json', 'temp/proofs_180.json', 180000, 181001), ('root_testing_source_100000_addresses.json', 'temp/proofs_167.json', 167000, 168001), ('root_testing_source_100000_addresses.json', 'temp/proofs_93.json', 93000, 94001), ('root_testing_source_100000_addresses.json', 'temp/proofs_198.json', 198000, 199001), ('root_testing_source_100000_addresses.json', 'temp/proofs_171.json', 171000, 172001), ('root_testing_source_100000_addresses.json', 'temp/proofs_41.json', 41000, 42001), ('root_testing_source_100000_addresses.json', 'temp/proofs_144.json', 144000, 145001), ('root_testing_source_100000_addresses.json', 'temp/proofs_86.json', 86000, 87001), ('root_testing_source_100000_addresses.json', 'temp/proofs_148.json', 148000, 149001), ('root_testing_source_100000_addresses.json', 'temp/proofs_103.json', 103000, 104001), ('root_testing_source_100000_addresses.json', 'temp/proofs_91.json', 91000, 92001), ('root_testing_source_100000_addresses.json', 'temp/proofs_116.json', 116000, 117001), ('root_testing_source_100000_addresses.json', 'temp/proofs_134.json', 134000, 135001), ('root_testing_source_100000_addresses.json', 'temp/proofs_189.json', 189000, 190001), ('root_testing_source_100000_addresses.json', 'temp/proofs_193.json', 193000, 194001), ('root_testing_source_100000_addresses.json', 'temp/proofs_48.json', 48000, 49001), ('root_testing_source_100000_addresses.json', 'temp/proofs_141.json', 141000, 142001), ('root_testing_source_100000_addresses.json', 'temp/proofs_21.json', 21000, 22001), ('root_testing_source_100000_addresses.json', 'temp/proofs_25.json', 25000, 26001), ('root_testing_source_100000_addresses.json', 'temp/proofs_108.json', 108000, 109001), ('root_testing_source_100000_addresses.json', 'temp/proofs_118.json', 118000, 119001), ('root_testing_source_100000_addresses.json', 'temp/proofs_90.json', 90000, 91001), ('root_testing_source_100000_addresses.json', 'temp/proofs_136.json', 136000, 137001), ('root_testing_source_100000_addresses.json', 'temp/proofs_168.json', 168000, 169001), ('root_testing_source_100000_addresses.json', 'temp/proofs_199.json', 199000, 200001), ('root_testing_source_100000_addresses.json', 'temp/proofs_81.json', 81000, 82001), ('root_testing_source_100000_addresses.json', 'temp/proofs_35.json', 35000, 36001), ('root_testing_source_100000_addresses.json', 'temp/proofs_73.json', 73000, 74001), ('root_testing_source_100000_addresses.json', 'temp/proofs_10.json', 10000, 11001), ('root_testing_source_100000_addresses.json', 'temp/proofs_80.json', 80000, 81001), ('root_testing_source_100000_addresses.json', 'temp/proofs_113.json', 113000, 114001), ('root_testing_source_100000_addresses.json', 'temp/proofs_110.json', 110000, 111001), ('root_testing_source_100000_addresses.json', 'temp/proofs_178.json', 178000, 179001), ('root_testing_source_100000_addresses.json', 'temp/proofs_119.json', 119000, 120001), ('root_testing_source_100000_addresses.json', 'temp/proofs_61.json', 61000, 62001), ('root_testing_source_100000_addresses.json', 'temp/proofs_129.json', 129000, 130001), ('root_testing_source_100000_addresses.json', 'temp/proofs_170.json', 170000, 171001), ('root_testing_source_100000_addresses.json', 'temp/proofs_4.json', 4000, 5001), ('root_testing_source_100000_addresses.json', 'temp/proofs_101.json', 101000, 102001), ('root_testing_source_100000_addresses.json', 'temp/proofs_55.json', 55000, 56001), ('root_testing_source_100000_addresses.json', 'temp/proofs_142.json', 142000, 143001), ('root_testing_source_100000_addresses.json', 'temp/proofs_69.json', 69000, 70001), ('root_testing_source_100000_addresses.json', 'temp/proofs_135.json', 135000, 136001), ('root_testing_source_100000_addresses.json', 'temp/proofs_59.json', 59000, 60001), ('root_testing_source_100000_addresses.json', 'temp/proofs_154.json', 154000, 155001), ('root_testing_source_100000_addresses.json', 'temp/proofs_96.json', 96000, 97001), ('root_testing_source_100000_addresses.json', 'temp/proofs_138.json', 138000, 139001), ('root_testing_source_100000_addresses.json', 'temp/proofs_19.json', 19000, 20001), ('root_testing_source_100000_addresses.json', 'temp/proofs_179.json', 179000, 180001), ('root_testing_source_100000_addresses.json', 'temp/proofs_146.json', 146000, 147001), ('root_testing_source_100000_addresses.json', 'temp/proofs_22.json', 22000, 23001), ('root_testing_source_100000_addresses.json', 'temp/proofs_83.json', 83000, 84001), ('root_testing_source_100000_addresses.json', 'temp/proofs_1.json', 1000, 2001), ('root_testing_source_100000_addresses.json', 'temp/proofs_9.json', 9000, 10001), ('root_testing_source_100000_addresses.json', 'temp/proofs_121.json', 121000, 122001), ('root_testing_source_100000_addresses.json', 'temp/proofs_140.json', 140000, 141001), ('root_testing_source_100000_addresses.json', 'temp/proofs_74.json', 74000, 75001), ('root_testing_source_100000_addresses.json', 'temp/proofs_155.json', 155000, 156001), ('root_testing_source_100000_addresses.json', 'temp/proofs_99.json', 99000, 100001), ('root_testing_source_100000_addresses.json', 'temp/proofs_183.json', 183000, 184001), ('root_testing_source_100000_addresses.json', 'temp/proofs_164.json', 164000, 165001), ('root_testing_source_100000_addresses.json', 'temp/proofs_181.json', 181000, 182001), ('root_testing_source_100000_addresses.json', 'temp/proofs_195.json', 195000, 196001), ('root_testing_source_100000_addresses.json', 'temp/proofs_34.json', 34000, 35001), ('root_testing_source_100000_addresses.json', 'temp/proofs_192.json', 192000, 193001), ('root_testing_source_100000_addresses.json', 'temp/proofs_115.json', 115000, 116001)}\n" ] }, { "data": { - "text/plain": " 0%| | 0/1 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
020000john16504256240QmP4nToEBpi6uiWj5Nb2au4dR17tkYy15fXgXqEYGBusJm0x9a5f0bbf5c11d6a529cd8117554a8081027846fb0xfe86a12db9a254e9d218ad1ea5fea014689a02e3b8f6...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6terra1mpxadqzwgfahat2u8ch5lf398sw3gyggwh3ajacard choose elevator truly lottery write denia...bostrom1mpxadqzwgfahat2u8ch5lf398sw3gyggtqlww6...0xd5cd520a249cfb60ccea30795d65765e652525f2e5db...{'pub_key': 'As9N9jZB+OnV7elydUz7l0sHCp1g0Qyn/...eyJwdWJfa2V5IjoiQXM5TjlqWkIrT25WN2VseWRVejdsMH...[c11b8fd1bf4acbb10d9a2938934798692f31eca0c5e98...[e30b13867a702d325c698dbf43db1229fb531d43d32e6...
120000john16504256241Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt0xafd2bdcfb28b845c92f4ece5a6c44fdbceba1b610xf184592e269f930ed1211e5953c4c5703fbf283c05a1...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuqterra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8ability hour sleep stem jewel industry respons...bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq...0x95bb7ad4e0ff4e8ff1a95515d9eaf0467aef73abe253...{'pub_key': 'At1Gc8lVuvPmiY3cBO3n2NBIUK/qak6fy...eyJwdWJfa2V5IjoiQXQxR2M4bFZ1dlBtaVkzY0JPM24yTk...[a76348d8a6006c0d04fb046ebe968c80a9371ae1dc4a4...[eb00b5aac8ff0113e4c011c2920ea161d10dab7cf48b5...
220000john16504256242QmVmT11r27GhwMitNCiP6WM2nRDsizZZazRRFBD4QBwWre0x905a168d90cff99902baf6297f682a0a1727cef20xc36d13f58573be843be6d38ef21ed71bebf6fc37ef3a...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8terra1dzkua4flhf5g5vkzc37ne3dwzwf2pry7elcvtqfog screen cluster vivid exhibit violin myth e...bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8...0xd7df657766b823f958f2ac687c13cdf47aab36546e1f...{'pub_key': 'AjXCkZZoFKOjTXZ5B1RHjqE9ntRHRSsED...eyJwdWJfa2V5IjoiQWpYQ2taWm9GS09qVFhaNUIxUkhqcU...[39e347286602d0d2ccb3ed52293967d23735e7648b4e9...[8a28c78c36b5cd5f35dd0294a7d9ac3b27bea0cb8d23d...
320000john16504256243QmPyJz5gJmVZkNHnjLtssqufLwQaQw7FPDgD7CY5uHfHNc0xb70ed2815618997c30da21244583e6c6401af6cb0x0d1d64c44de49655fcfeafd45194cc2cfdca0d652fb7...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6kterra1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gvh5tx3huge arch muscle wrestle pig party mouse stree...bostrom1pnnyyhz95r3ne0vqpwx5m7d0g7xvwr6gfq6c6k...0x09aef9028c2ac4737068427a2ce96ff2b82718d494f4...{'pub_key': 'AlIlP/46XgHznglIjjoOOy9IAKv00CHdM...eyJwdWJfa2V5IjoiQWxJbFAvNDZYZ0h6bmdsSWpqb09PeT...[17c7ae3fd12ce47596f08f97dfae61f0f8bc62d3e37bd...[67c905493fb16671a33a7da378475269a41b66cdd4e14...
420000john16504256244QmT2u7k3buV7Nhii1NoyoJNp8j1PskgzcynisqPX5vhGFR0x88688c62f9343cbc8135046f38d64c905e11c5d90x4c9e62a47f27b72a2f287f8ca80b22dbc4d66bd406a1...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7sterra1ng4677w8sq48dsvhxpqqrs07enqn43v5vq9czhlab tone caught reunion urban another loyal sk...bostrom1ng4677w8sq48dsvhxpqqrs07enqn43v5fhtt7s...0x3ca4073a15d383f44bf852294bbb155d689dbcdbde02...{'pub_key': 'A8aj971kLRSLraxvGk2CO6x7T0CibPf5R...eyJwdWJfa2V5IjoiQThhajk3MWtMUlNMcmF4dkdrMkNPNn...[837f5204efbf16ba6ef9cf0680010f79876a313e9c811...[a484f51b4afcea3792bf7f3f7864ddf2ec94774c243f5...
\n" - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "if CALCULATE_PROOFS:\n", - " roots = []\n", - " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", - " for task in tasks:\n", - " with open(task[1], 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - " roots.append(root_and_proof_json['merkle_root'])\n", - " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", - " assert roots == [roots[0]] * len(roots)\n", - " root = roots[0]\n", - "\n", - " cosmos_proofs_df = proofs_df[proofs_df.address.str.startswith(PREFIX)][['address', 'proof']]\n", - " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", - "\n", - " claims_with_proofs_df = claims_df\\\n", - " .merge(\n", - " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", - " how='left',\n", - " on='ethereum_address')\\\n", - " .merge(\n", - " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", - " how='left',\n", - " on='cosmos_address')\n", - "\n", - " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", - "else:\n", - " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", - " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", - " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", - " with open('temp/proofs_1.json', 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - " root = root_and_proof_json['merkle_root']\n", - "claims_with_proofs_df.head()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 6, - "outputs": [], - "source": [ - "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", - " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "## Instantiate Contracts\n", - "### Instantiate SUBGRAPH Contracts" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 7, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", - "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", - "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" - ] - } - ], - "source": [ - "if INIT_SUBGRAPH_CONTRACTS:\n", - " name_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test name subgraph')\n", - " avatar_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test avatar subgraph',\n", - " from_address=WALLET_ADDRESS)\n", - " proof_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test proof subgraph',\n", - " from_address=WALLET_ADDRESS)\n", - "else:\n", - " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", - " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", - " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", - "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", - " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", - " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Passport Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 8, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Passport contract address: bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\n" - ] - } - ], - "source": [ - "if INIT_PASSPORT_CONTRACT:\n", - " passport_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", - " contract_code_id=PASSPORT_CODE_ID,\n", - " contract_label='test passport',\n", - " from_address=WALLET_ADDRESS)\n", - "else:\n", - " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", - "print(f'Passport contract address: {passport_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Set executor in the Subgraph Contracts" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 9, - "outputs": [], - "source": [ - "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", - " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", - " contract_address=subgraph_contract_address,\n", - " gas=600000,\n", - " display_data=display_data)\n", - "\n", - "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", - " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Gift Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract address: bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\n" - ] - } - ], - "source": [ - "if INIT_GIFT_CONTRACT:\n", - " gift_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", - " contract_code_id=GIFT_CODE_ID,\n", - " amount=INITIAL_BALANCE,\n", - " contract_label='test gift',\n", - " from_address=WALLET_ADDRESS,\n", - " display_data=False)\n", - "else:\n", - " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", - "print(f'Gift contract address: {gift_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Initiate Class of Output Parsing" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 11, - "outputs": [], - "source": [ - "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", - " address_dict= {\n", - " gift_contract_address: 'Gift Contract',\n", - " passport_contract_address: 'Passport Contract',\n", - " WALLET_ADDRESS: 'Passport Owner Address',\n", - " name_subgraph_contract_address: 'Name Subgraph Contract',\n", - " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", - "proof_subgraph_contract_address: 'Proof Subgraph Contract'})" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Register Merkle Root" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 12, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_72.json --start_index 72000 --end_index 73001\n", + "Merkle root: 896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.78s.\n", "\n", - "Events\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_104.json --start_index 104000 --end_index 105001\n", + "Merkle root: 896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.86s.\n", "\n", - "execute\n", - "\texecute contract: Gift Contract\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_65.json --start_index 65000 --end_index 66001\n", + "Merkle root: 896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.90s.\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_166.json --start_index 166000 --end_index 167001\n", + "Merkle root: 896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.02s.\n", "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: register_merkle_root\n", - "\tmerkle_root: 38972df4bb090bf59f5f762d03683fe741f742ae66b0dc96906d02cc8b0be033\n", - "Gas used: 121,492\n", - "Tx hash: 18BD6190A6CF7E929E2EE8777C4845479B6F94070CEFB5A81927F96259DF56A2\n" - ] - } - ], - "source": [ - "root_register_output = contract_utils.execute_contract(\n", - " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", - " mnemonic=WALLET_SEED,\n", - " contract_address=gift_contract_address)\n", - "contract_utils.parse_contract_execution_json(root_register_output)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "#### Get Merkle Root form the Gift Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "execution_count": 156 - }, - { - "cell_type": "code", - "execution_count": 13, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract bostrom1d53n4k00ywxu9al2g8a8wnjvp8cxdeu9w7vve96vw4raasf9arqqtp6xpj\n", - "{'data': {'merkle_root': '38972df4bb090bf59f5f762d03683fe741f742ae66b0dc96906d02cc8b0be033'}}\n" - ] - } - ], - "source": [ - "print(f'Gift contract {gift_contract_address}')\n", - "print(query_contract(query='''{\"merkle_root\": {}}''',\n", - " contract_address=gift_contract_address))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Send coins to new addresses" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 14, - "outputs": [ - { - "data": { - "text/plain": " 0%| | 0/1 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
020000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...[d7994ad73633a407682e08454c4f6f204c62abb39ba94...[ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896...
120000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...[d7994ad73633a407682e08454c4f6f204c62abb39ba94...[ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896...
220000john16505145391QmcbX6Af2hx9Co1wDKnkpG5HwTVoC4sYUiJNdKiSgRgNsg0x54a31fa6e38731c1b8eda7579cf156a33769179f0xce2da6faaae94781d2881cc33edaf8ce32fd05f52ad1...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fgosmo1h48dqhht7cfukuxusujqgeuzpt43jtg8gl7kpaarrange sure benefit recipe replace width fan ...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg...0x7af0aed2bbf9b33e3e73a34cff62a19d2078f84030fa...{'pub_key': 'AtzxTgc/gj7M7q1a6oVBOz/V9uqAWmjjP...eyJwdWJfa2V5IjoiQXR6eFRnYy9najdNN3ExYTZvVkJPei...[81f6ba90f31cfd28c01b6c2fd1f2b7969482df24c44fe...[a12947f476bc2c7836a2e99efdc602fdec5861f394441...
320000john16505145392QmNg2da2P9CQppC5QdRsu8zy8LCbKSgwSCX7K51zexf2xq0x7bd9105d6084694757c819f8a965e39ecf7ff8a20x6213c521d7e6533db5bd4af75ef0ad61251afb632a0f...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2cosmos1c0h2ysdynjq7sslef0ktx86a9yk0dkp96lka7djoke vacuum town dress below either height tig...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2...0x73d09d6c82e35d6bd9379519a1957504ef235744e74d...{'pub_key': 'AhE823RJVhq2gyouGMwgcDvOQK80l/hap...eyJwdWJfa2V5IjoiQWhFODIzUkpWaHEyZ3lvdUdNd2djRH...[cf4410fa48d4b8524be71f0b897838c9d4091b3677cef...[6c8a772467c91ba7d401ae87f4bfa6480946d96b03dbc...
420000john16505145393QmbEz8ZGkWeQnpEJPSQrjnDpcyCxwyaerkmd1gxWYMn2Kf0x60920d73ebeaede54d58d56f0a7e22b6c051a9120x289c072a670df38e707d7c26f9c1b7ebe255431b56d6...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3cosmos1na6xl94tl7r5sjxyuhva04sy8p68jhhzhw7pxkcollect hockey simple firm joke air polar salo...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3...0x7d92f8e2e6b9db95853d5a7692bcd4c87c3b32966c58...{'pub_key': 'A2COW5KWNuVXMJPyoNNNpsIxlcs7N7CfX...eyJwdWJfa2V5IjoiQTJDT1c1S1dOdVZYTUpQeW9OTk5wc0...[0c9925d293ac5afdd7c80530610f28408c84b3b138530...[cf6588c49f84523a5264a7b4fd92dbd811c7c0b3ba23f...
\n" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if CALCULATE_PROOFS:\n", + " roots = []\n", + " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + " for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", + " assert roots == [roots[0]] * len(roots)\n", + " root = roots[0]\n", + "\n", + " cosmos_proofs_df = proofs_df[~proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + "\n", + " claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='left',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='left',\n", + " on='cosmos_address')\n", + "\n", + " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", + "else:\n", + " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", + " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " with open('temp/proofs_1.json', 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " root = root_and_proof_json['merkle_root']\n", + "claims_with_proofs_df.head()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [ + "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", + " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", + "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", + "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" + ] + } + ], + "source": [ + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph',\n", + " from_address=WALLET_ADDRESS)\n", + " proof_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph',\n", + " from_address=WALLET_ADDRESS)\n", + "else:\n", + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Passport Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passport contract address: bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\n" + ] + } + ], + "source": [ + "if INIT_PASSPORT_CONTRACT:\n", + " passport_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport',\n", + " from_address=WALLET_ADDRESS)\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subgraph Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 9, + "outputs": [], + "source": [ + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom1923ktlaaw5gsnsxtl5evudr798s9vp744q4rtu9mapt24p2heq3sccue2w\n" + ] + } + ], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift',\n", + " from_address=WALLET_ADDRESS,\n", + " display_data=False)\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Initiate Class of Output Parsing" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [], + "source": [ + "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", + " address_dict= {\n", + " gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + "proof_subgraph_contract_address: 'Proof Subgraph Contract'})" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 12, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: register_merkle_root\n", + "\tmerkle_root: 896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541\n", + "Gas used: 121,492\n", + "Tx hash: 04115509D4B1BAF1CDECB5334585561BADF092583A42AE2BE81B0BD16D411C17\n" + ] + } + ], + "source": [ + "root_register_output = contract_utils.execute_contract(\n", + " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", + " mnemonic=WALLET_SEED,\n", + " contract_address=gift_contract_address)\n", + "contract_utils.parse_contract_execution_json(root_register_output)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Get Merkle Root form the Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "execution_count": 156 + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract bostrom1923ktlaaw5gsnsxtl5evudr798s9vp744q4rtu9mapt24p2heq3sccue2w\n", + "{'data': {'merkle_root': '896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541'}}\n" + ] + } + ], + "source": [ + "print(f'Gift contract {gift_contract_address}')\n", + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Send coins to new addresses" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 19, + "outputs": [ + { + "data": { + "text/plain": " 0%| | 0/101 [00:00 QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\n", - "\tQmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY -> QmNwfH86ac37xhBsKh4nHHAanv8jJeCRG5VEZG83EHvnQv\n", + "\tPassport Owner Address -> Nickname\n", + "\tNickname -> Passport Owner Address\n", "\tneuron: Name Subgraph Contract\n", "\n", - "\tQmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY -> Qme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt\n", - "\tQme38z9BvkBasFUNrhn8TVvrWD8ePpGkpNx8v7WJWvyTHt -> QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\n", + "\tNickname -> Avatar\n", + "\tAvatar -> Nickname\n", "\tneuron: Avatar Subgraph Contract\n", "\n", "\n", @@ -949,20 +3354,20 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 273396\n", + "\ttoken_id: 273502\n", "Gas used: 440,639\n", - "Tx hash: AEB78D27926A2870BF0290A90D3CA7B949196FE2521119BA16117A5C6D105D5D\n" + "Tx hash: C5D37ED01DA7729B4EFF34D23F914D91ECA5F05276919F6C246A9C18773602DE\n" ] } ], "source": [ - "contract_utils.parse_contract_execution_json(data['create'])" + "contract_utils.parse_contract_execution_json(data['create'], row=claims_with_proofs_df.loc[1,:])" ], "metadata": { "collapsed": false, @@ -973,7 +3378,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 38, "outputs": [ { "name": "stdout", @@ -983,8 +3388,8 @@ "Events\n", "\n", "cyberlinks\n", - "\tQmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY -> QmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ\n", - "\tQmTFdFAmuRSK5JvYZT9Tphf5CBzDPtWUNJP5NgEuvKP1DZ -> QmXz6t1pY4oxu5gmX5wTc9URmmcJyokqT3LcBqr92aSbpY\n", + "\tNickname -> Ethereum Address\n", + "\tEthereum Address -> Nickname\n", "\tneuron: Proof Subgraph Contract\n", "\n", "\n", @@ -992,20 +3397,20 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16504256241\n", - "\taddress: terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\n", - "Gas used: 284,668\n", - "Tx hash: 282376D133C956370A4F3F6F658A3724BBD2F7ADAEB113580B7E1708A8B6DBEF\n" + "\tnickname: john16505145390\n", + "\taddress: 0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca\n", + "Gas used: 281,286\n", + "Tx hash: FE3E533881DB9739E4BA17DC8CB90F74EE0FA5E36E303EE7116A6ED0F8FB3754\n" ] } ], "source": [ - "contract_utils.parse_contract_execution_json(data['proof_cosmos'])" + "contract_utils.parse_contract_execution_json(data['proof_ethereum'], row=claims_with_proofs_df.loc[1,:])" ], "metadata": { "collapsed": false, @@ -1016,7 +3421,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 31, "outputs": [ { "name": "stdout", @@ -1024,38 +3429,40 @@ "text": [ "\n", "Events\n", + "account sequence mismatch, expected 3, got 2: incorrect account sequence\n", + "Gas used: 45,725\n", + "Tx hash: 194F45CEAF88E1D67E6800105DF9F19F9A2C60F902CD76CAA0618059A7AF47C8\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['proof_cosmos'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 32, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ "\n", - "coin received\n", - "\treceiver: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: terra144tp5hje0eflst8eg8py8jg0r4lhfyjhx8ghq8\n", - "\ttarget: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", - "\tamount: 259,781\n", - "Gas used: 314,457\n", - "Tx hash: 664139380EB6BA055A507BDAF9C645EE1AE08E7A2DFA3442A2CB7AB8FBD18297\n" + "Events\n", + "account sequence mismatch, expected 3, got 2: incorrect account sequence\n", + "Gas used: 66,365\n", + "Tx hash: A567FA0EE76102306A2FE2FE5504C6E1DBEF718B099F753492ACC64025044B99\n" ] } ], "source": [ - "contract_utils.parse_contract_execution_json(data['claim_cosmos'])" + "contract_utils.parse_contract_execution_json(data['claim_cosmos'], row=claims_with_proofs_df.loc[1,:])" ], "metadata": { "collapsed": false, @@ -1066,23 +3473,58 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 35, + "outputs": [ + { + "data": { + "text/plain": "\"{'claim': {'nickname': 'john16505145390', 'gift_claiming_address': '0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca', 'gift_amount': '20000', 'proof': ['d7994ad73633a407682e08454c4f6f204c62abb39ba9445ffbd752682e7399f6', 'b216b4d989f96eea1236bfd7f3353511062b6ccf57144b27e5fc4696bc628db3', '304d2eb8c435271af3c3a5a26637b93c5180485c65b6e6d0d8c0c2e5543d43a3', 'c1911041c63aed27e6525c4e53b779ee4a83e6bc56928815931052d130425fd6', 'dd4acb78e0ba298c05a87aab437939f2247135ee95db77cbf1a497b4b24d7223', '95fdb1deacc6b5e579f311c48ab34e05d60e8b06601930db6d815aabed949ff7', '5790cd3f7f1a87cd1c9790f7871ddd3e77c435788eb50c6046614a741c1307b4', '475f65dbbd92f3cc6993fcc9b555c5e90e0fcf1bc1f3b6f6af1cb38c66d66941', 'f90ea473b36d04ad3fad9569be7763273ba88288b7d4a1445644d8d89d3b066e', 'e46722181b39fec39867bd85c42b39f300a9d2973abec6649000b1d5ba508f51', '1c34554ac02a8a87fa7007a99808b334608d4b294ecf4cf3ce168a46f59dc297', '025ad62bb9bc634ccd872746b721f97a3179b13f4ad0cc8579d354eb750cda99', '34b67b797b94ce2d67f718e15005ede24c019ed410df0a9a73a8fc9cddb25907', '3cc69da7d8973783603a7fba0ae1ec91217ffbb3240b1a3ae0af5c3cacc6ce76', 'eda4d32a6ffb4244da50cebeda6d2ecd3b16d816493adcc42e0edd6f15cf75ad', '22f793e1646a8209afbe521325f2c13e971c398297c1a62159d6db5e5051df01', '808b073c50f904d95f56a6ba7e4f898d951dac00e58847783ef028be5cb732d8', 'dd92e6d7c71669e4bf6d1c69465b45551a7f37665b3c28a84706265d1bc58e42']}}\\n{'claim': {'nickname': 'john16505145390', 'gift_claiming_address': 'osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6', 'gift_amount': '20000', 'proof': ['ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896da71f9ee1fffd4bb334', '49f0e8334c20e13225a8ca5d5b4de3e5c9ca95806595eed5e59dbb7ac40ff631', 'b2a2bce5baed9cbb75c2dd87a907d4dcb715a0b913481bf5f16d10ba41eb4991', '81332b59c7df1dbce50e902731b82be95d53574c735182b31c19899624f920a1', '0b30fdeacaf57f4c2c5fb2fb5e3308a5aae124564af8e27c25a494e3048831cd', 'fcb072334183fd1c3cdd0a273d478a8812274d6e4e40cc59cf214953d2321e42', '8a3a93d2b410b37b405d899254351971ab32702c10ded03bda86fcebe9994e78', '76c32bfce697a56a11a3b1dfbc8daf5f6549b7b13fe2f4f60acdccb20f9c17b5', '8cb4a8605ba1845a93684ed523e56047525718713d91caf1ad9649b9a6b2e386', '32d347f8f9562ba18331f6117d000de508adec54186e531c8820a47b29a778d3', 'cf9773d5d26705614d55219aad824d8c38c7d28a1779ab49a8998d0cebe36bbb', 'da429fda4a22b7b8a78535e2f26e04df7ddf453e4d8b5e0aa072e28593608095', '0a1a37293e00d55cb2690dbd0c24aa658a2e9e2a2adac3ef1a7924e55df85876', '7cdb3ef322f51dde3d93c7e32e2199ca757ce757875c8d7b1e8189ba8f67b055', 'a2c0fb47545c737773dcf2a23cc3c6266d2fe90da1a5d1ddd170777e2651bc33', 'f014a7a103e776ccc3c56c091bafbb9b3b699653adf6a3c8aaea292f81a7cf62', '808b073c50f904d95f56a6ba7e4f898d951dac00e58847783ef028be5cb732d8', 'dd92e6d7c71669e4bf6d1c69465b45551a7f37665b3c28a84706265d1bc58e42']}}\\nbostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50: done\\n\"" + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res_participation[1]" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Release Gift" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 27, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 5\n", + "Number of tasks: 50000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/5 [00:00 str:\n", @@ -1212,7 +3705,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 41, "outputs": [ { "data": { @@ -1220,7 +3713,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "ea297965f0ef47868d18d531c68e8ad5" + "model_id": "88cd8e922def414996936a9894d779b4" } }, "metadata": {}, @@ -1244,7 +3737,7 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Avatar Subgraph Contract\n", @@ -1252,11 +3745,11 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom144tp5hje0eflst8eg8py8jg0r4lhfyjhrsxyuq\n", + "\tsender: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 273396\n", - "Gas used: 386,223\n", - "Tx hash: BD20CBEF172D95F75E69EE7AB14AC3C36287B4E25AD9B1B1EC79776A34115A40\n" + "\ttoken_id: 273502\n", + "Gas used: 386,208\n", + "Tx hash: 397994D783B8B06CFCD80DB336466FA3CBAD3C8192A9DC8590C2853A0534117A\n" ] } ], @@ -1295,7 +3788,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 42, "outputs": [ { "data": { @@ -1303,7 +3796,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "4f7bb38f174e4abe8ed5bb8d98100d92" + "model_id": "97790a7a000e40a5ad187cbf07fb36aa" } }, "metadata": {}, @@ -1331,15 +3824,15 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom1dzkua4flhf5g5vkzc37ne3dwzwf2pry7ugklh8\n", - "\ttoken_id: 273395\n", - "Gas used: 382,058\n", - "Tx hash: B5B341737C1C79EC63923DAC82F2EC5538ED2E1456C27B396CFDBE87065FF0DB\n" + "\tsender: bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg\n", + "\ttoken_id: 273515\n", + "Gas used: 382,043\n", + "Tx hash: 5166979A21AF9222CEA51AC262101239CCEE2CF69F46CBBA346F4DF0A0B1A297\n" ] } ], From 213b636227e1ebcbcd66a3a781d0e4a8a679abb3 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Mon, 25 Apr 2022 23:39:16 +0800 Subject: [PATCH 35/69] Refactoring --- Cargo.lock | 482 +++++++++++---- Cargo.toml | 2 +- contracts/cw-cyber-airdrop/Cargo.toml | 22 +- contracts/cw-cyber-airdrop/examples/schema.rs | 8 +- .../schema/config_response.json | 20 - .../cw-cyber-airdrop/schema/query_msg.json | 40 +- .../schema/release_stage_state_response.json | 19 + .../schema/state_response.json | 39 ++ contracts/cw-cyber-airdrop/src/contract.rs | 25 +- contracts/cw-cyber-airdrop/src/execute.rs | 122 ++-- contracts/cw-cyber-airdrop/src/helpers.rs | 13 +- contracts/cw-cyber-airdrop/src/msg.rs | 16 +- contracts/cw-cyber-airdrop/src/query.rs | 28 +- contracts/cw-cyber-airdrop/src/state.rs | 16 +- contracts/cw-cyber-airdrop/src/tests.rs | 577 ++++++++++-------- contracts/cw-cyber-passport/Cargo.toml | 16 +- contracts/cw-cyber-passport/src/contract.rs | 8 +- contracts/cw-cyber-passport/src/error.rs | 14 + contracts/cw-cyber-passport/src/execute.rs | 71 +-- contracts/cw-cyber-passport/src/helpers.rs | 7 +- contracts/cw-cyber-passport/src/tests.rs | 21 +- contracts/cw-cyber-subgraph/Cargo.toml | 14 +- contracts/cw-cyber-subgraph/src/contract.rs | 16 +- contracts/cw-cyber-subgraph/src/execute.rs | 28 +- contracts/cw-cyber-subgraph/src/msg.rs | 12 +- contracts/cw-cyber-subgraph/src/query.rs | 18 +- contracts/cw-cyber-subgraph/src/state.rs | 24 +- 27 files changed, 1070 insertions(+), 608 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/schema/release_stage_state_response.json create mode 100644 contracts/cw-cyber-airdrop/schema/state_response.json diff --git a/Cargo.lock b/Cargo.lock index faa7e22..f2632b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.53" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" +checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" [[package]] name = "arrayref" @@ -20,11 +20,17 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + [[package]] name = "base-x" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74" [[package]] name = "base64" @@ -45,7 +51,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", + "constant_time_eq", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" +dependencies = [ + "arrayref", + "arrayvec 0.7.2", "constant_time_eq", ] @@ -56,7 +73,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", + "constant_time_eq", +] + +[[package]] +name = "blake2s_simd" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" +dependencies = [ + "arrayref", + "arrayvec 0.7.2", "constant_time_eq", ] @@ -67,12 +95,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "cc", "cfg-if 0.1.10", "constant_time_eq", "crypto-mac 0.8.0", - "digest", + "digest 0.9.0", +] + +[[package]] +name = "blake3" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" +dependencies = [ + "arrayref", + "arrayvec 0.7.2", + "cc", + "cfg-if 1.0.0", + "constant_time_eq", ] [[package]] @@ -85,6 +126,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array", +] + [[package]] name = "block-padding" version = "0.2.1" @@ -97,11 +147,17 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +[[package]] +name = "bytes" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" + [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-if" @@ -122,7 +178,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6b8976b33648136e969aafa6eb33d58ff0d301fa0b4e8d513db58fd32cd81aa" dependencies = [ "multibase", - "multihash", + "multihash 0.14.0", + "unsigned-varint", +] + +[[package]] +name = "cid" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a52cffa791ce5cf490ac3b2d6df970dc04f931b04e727be3c3e220e17164dfc4" +dependencies = [ + "core2", + "multibase", + "multihash 0.16.2", + "serde", "unsigned-varint", ] @@ -138,33 +207,42 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "cosmwasm-crypto" -version = "1.0.0-beta4" +version = "1.0.0-beta8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f903ebbabc0d4880dbc76148efb8be8fc29fa4bf294c440c3d70da1c8bcafff7" +checksum = "37e70111e9701c3ec43bfbff0e523cd4cb115876b4d3433813436dd0934ee962" dependencies = [ - "digest", + "digest 0.9.0", "ed25519-zebra", "k256", - "rand_core 0.5.1", + "rand_core 0.6.3", "thiserror", ] [[package]] name = "cosmwasm-derive" -version = "1.0.0-beta4" +version = "1.0.0-beta8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "832bebef577ecb394603de8e2bf0de429b74aa364e17dec18e15ce37e71b0cae" +checksum = "58bc2ad5d86be5f6068833f63e20786768db6890019c095dd7775232184fb7b3" dependencies = [ "syn", ] [[package]] name = "cosmwasm-schema" -version = "1.0.0-beta4" +version = "1.0.0-beta8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5de9749a4a933c34c59db83a77935a79cd705f93ae2b1cfbe40821f32751f75" +checksum = "0d75f6a05667d8613b24171ef2c77a8bf6fb9c14f9e3aaa39aa10e0c6416ed67" dependencies = [ "schemars", "serde_json", @@ -172,13 +250,14 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.0.0-beta4" +version = "1.0.0-beta8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6238c45840cc9de5a39f0f619e3a4f7c38c5d2c6ac9e3e4d72751ee045e6d7da" +checksum = "915ca82bd944f116f3a9717481f3fa657e4a73f28c4887288761ebb24e6fbe10" dependencies = [ "base64", "cosmwasm-crypto", "cosmwasm-derive", + "forward_ref", "schemars", "serde", "serde-json-wasm", @@ -188,9 +267,9 @@ dependencies = [ [[package]] name = "cosmwasm-storage" -version = "1.0.0-beta4" +version = "1.0.0-beta8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f472c0bfd584a4510702537d0b65c5331095e76099586a12f749fd69afda9c5e" +checksum = "1c4be9fd8c9d3ae7d0c32a925ecbc20707007ce0cba1f7538c0d78b7a2d3729b" dependencies = [ "cosmwasm-std", "serde", @@ -198,9 +277,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] @@ -223,6 +302,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-common" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "crypto-mac" version = "0.8.0" @@ -250,7 +339,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ "byteorder", - "digest", + "digest 0.9.0", "rand_core 0.5.1", "subtle", "zeroize", @@ -265,18 +354,23 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "cw-cyber-passport", - "cw-storage-plus 0.10.3", + "cw-cyber-subgraph", + "cw-multi-test", + "cw-storage-plus", "cw-utils", "cw0", "cw1-subkeys", - "cw2 0.11.1", + "cw1-whitelist", + "cw2", "cw20", + "cyber-std", + "cyber-std-test", "hex", "schemars", "serde", "serde_json", - "sha2", - "sha3", + "sha2 0.9.9", + "sha3 0.9.1", "thiserror", ] @@ -286,14 +380,14 @@ version = "0.0.1" dependencies = [ "base64", "bech32", - "cid", + "cid 0.7.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", "cw-cyber-subgraph", - "cw-storage-plus 0.10.3", + "cw-storage-plus", "cw-utils", - "cw2 0.10.3", + "cw2", "cw721", "cw721-base", "cyber-std", @@ -302,8 +396,8 @@ dependencies = [ "ripemd160", "schemars", "serde", - "sha2", - "sha3", + "sha2 0.9.9", + "sha3 0.9.1", "thiserror", ] @@ -315,37 +409,45 @@ dependencies = [ "base64", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 0.10.3", + "cw-storage-plus", "cw-utils", "cw0", - "cw2 0.11.1", + "cw2", "cw20", "cyber-std", "hex", "schemars", "serde", "serde_json", - "sha2", - "sha3", + "sha2 0.9.9", + "sha3 0.9.1", "thiserror", ] [[package]] -name = "cw-storage-plus" -version = "0.10.3" +name = "cw-multi-test" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b8b840947313c1a1cccf056836cd79a60b4526bdcd6582995be37dc97be4ae" +checksum = "cbea57e5be4a682268a5eca1a57efece57a54ff216bfd87603d5e864aad40e12" dependencies = [ + "anyhow", "cosmwasm-std", + "cosmwasm-storage", + "cw-storage-plus", + "cw-utils", + "derivative", + "itertools", + "prost", "schemars", "serde", + "thiserror", ] [[package]] name = "cw-storage-plus" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d7ee1963302b0ac2a9d42fe0faec826209c17452bfd36fbfd9d002a88929261" +checksum = "9336ecef1e19d56cf6e3e932475fc6a3dee35eec5a386e07917a1d1ba6bb0e35" dependencies = [ "cosmwasm-std", "schemars", @@ -354,9 +456,9 @@ dependencies = [ [[package]] name = "cw-utils" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef842a1792e4285beff7b3b518705f760fa4111dc1e296e53f3e92d1ef7f6220" +checksum = "babd2c090f39d07ce5bf2556962305e795daa048ce20a93709eb591476e4a29e" dependencies = [ "cosmwasm-std", "schemars", @@ -378,9 +480,9 @@ dependencies = [ [[package]] name = "cw1" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1a86a410667d993f05b9a31c4820c1b9b4274266205d2286f1a7fbf8dba96" +checksum = "f3a49c89069a3d8eeec288c758c522428c25b7080e652b60f2bd01cb96c4a556" dependencies = [ "cosmwasm-std", "schemars", @@ -389,16 +491,16 @@ dependencies = [ [[package]] name = "cw1-subkeys" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a6bad25c053e4e4816736030cc0a4105c9021d9fb3c5305d420a448132363c" +checksum = "0001b9d0ad0baaf189893fcbfd3916372cd125dfead4eec63851b4b8c3baa254" dependencies = [ "cosmwasm-std", - "cw-storage-plus 0.11.1", + "cw-storage-plus", "cw-utils", "cw1", "cw1-whitelist", - "cw2 0.11.1", + "cw2", "schemars", "semver", "serde", @@ -407,15 +509,15 @@ dependencies = [ [[package]] name = "cw1-whitelist" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e868d50e4b88839ffbb8d0257c3f216ada4762d32cdb246c711b45b4e4c971d" +checksum = "3fafceaf79c0094da49eedf2d45975c8cbc71b83fd0deb6552e45d7e284afd44" dependencies = [ "cosmwasm-std", - "cw-storage-plus 0.11.1", + "cw-storage-plus", "cw-utils", "cw1", - "cw2 0.11.1", + "cw2", "schemars", "serde", "thiserror", @@ -423,33 +525,21 @@ dependencies = [ [[package]] name = "cw2" -version = "0.10.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7002e6f9c1a1ef3915dca704a6306ba00c39495efd928551d6077c734f9a3d8" +checksum = "993df11574f29574dd443eb0c189484bb91bc0638b6de3e32ab7f9319c92122d" dependencies = [ "cosmwasm-std", - "cw-storage-plus 0.10.3", - "schemars", - "serde", -] - -[[package]] -name = "cw2" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1d81d7c359d6c1fba3aa83dad7ec6f999e512571380ae62f81257c3db569743" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus 0.11.1", + "cw-storage-plus", "schemars", "serde", ] [[package]] name = "cw20" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9671d7edef5608acaf5b2f1e473ee3f501eced2cd4f7392e2106c8cf02ba0720" +checksum = "356d364602c5fe763544ea00d485b825d6ef519a2fc6a3145528d7df3a603f40" dependencies = [ "cosmwasm-std", "cw-utils", @@ -459,9 +549,9 @@ dependencies = [ [[package]] name = "cw721" -version = "0.11.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e031c47a592cbdbed3cb05bff041b1754914098d1e4c361a5e4b9dd7b27c8c31" +checksum = "72b9fd71276795554c35899bb3a378561ed0c288d231113e9915f6ee1f42b7b5" dependencies = [ "cosmwasm-std", "cw-utils", @@ -471,14 +561,14 @@ dependencies = [ [[package]] name = "cw721-base" -version = "0.11.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1616718f5410330dfca1f964795be9baefcc8d4ef45e3193d3bdb40a2290b" +checksum = "b61200af4e027af2d7485dbdc37c2a9c4093b6b2f2b811732329ef456076f97e" dependencies = [ "cosmwasm-std", - "cw-storage-plus 0.11.1", + "cw-storage-plus", "cw-utils", - "cw2 0.11.1", + "cw2", "cw721", "schemars", "serde", @@ -489,11 +579,27 @@ dependencies = [ name = "cyber-std" version = "0.1.0" dependencies = [ + "cid 0.8.4", "cosmwasm-schema", "cosmwasm-std", "cw721", "schemars", "serde", + "thiserror", +] + +[[package]] +name = "cyber-std-test" +version = "0.1.0" +dependencies = [ + "anyhow", + "cosmwasm-std", + "cw-multi-test", + "cw-storage-plus", + "cyber-std", + "schemars", + "serde", + "thiserror", ] [[package]] @@ -531,6 +637,17 @@ dependencies = [ "const-oid", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "digest" version = "0.9.0" @@ -540,11 +657,21 @@ dependencies = [ "generic-array", ] +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", +] + [[package]] name = "dyn-clone" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" +checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" [[package]] name = "ecdsa" @@ -560,18 +687,25 @@ dependencies = [ [[package]] name = "ed25519-zebra" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a128b76af6dd4b427e34a6fd43dc78dbfe73672ec41ff615a2414c1a0ad0409" +checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69" dependencies = [ "curve25519-dalek", "hex", - "rand_core 0.5.1", + "rand_core 0.6.3", "serde", - "sha2", + "sha2 0.9.9", "thiserror", + "zeroize", ] +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + [[package]] name = "elliptic-curve" version = "0.10.6" @@ -608,6 +742,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "forward_ref" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" + [[package]] name = "generic-array" version = "0.14.5" @@ -631,9 +771,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" +checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if 1.0.0", "libc", @@ -664,7 +804,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ "crypto-mac 0.11.1", - "digest", + "digest 0.9.0", +] + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", ] [[package]] @@ -682,7 +831,7 @@ dependencies = [ "cfg-if 1.0.0", "ecdsa", "elliptic-curve", - "sha2", + "sha2 0.9.9", ] [[package]] @@ -693,9 +842,15 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "libc" -version = "0.2.112" +version = "0.2.124" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" + +[[package]] +name = "memchr" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "multibase" @@ -714,14 +869,31 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" dependencies = [ - "blake2b_simd", - "blake2s_simd", - "blake3", - "digest", + "blake2b_simd 0.5.11", + "blake2s_simd 0.5.11", + "blake3 0.3.8", + "digest 0.9.0", "generic-array", - "multihash-derive", - "sha2", - "sha3", + "multihash-derive 0.7.2", + "sha2 0.9.9", + "sha3 0.9.1", + "unsigned-varint", +] + +[[package]] +name = "multihash" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689" +dependencies = [ + "blake2b_simd 1.0.0", + "blake2s_simd 1.0.0", + "blake3 1.3.1", + "core2", + "digest 0.10.3", + "multihash-derive 0.8.0", + "sha2 0.10.2", + "sha3 0.10.1", "unsigned-varint", ] @@ -739,6 +911,20 @@ dependencies = [ "synstructure", ] +[[package]] +name = "multihash-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "opaque-debug" version = "0.3.0" @@ -767,9 +953,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ "thiserror", "toml", @@ -801,18 +987,41 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" dependencies = [ "unicode-xid", ] +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "quote" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" dependencies = [ "proc-macro2", ] @@ -832,7 +1041,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.6", ] [[package]] @@ -841,8 +1050,8 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eca4ecc81b7f313189bf73ce724400a07da2a6dac19588b03c8bd76a2dcc251" dependencies = [ - "block-buffer", - "digest", + "block-buffer 0.9.0", + "digest 0.9.0", "opaque-debug", ] @@ -878,15 +1087,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" +checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" [[package]] name = "serde" -version = "1.0.133" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] @@ -902,9 +1111,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.133" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -924,9 +1133,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c059c05b48c5c0067d4b4b2b4f0732dd65feb52daf7e0ea09cd87e7dadc1af79" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ "itoa", "ryu", @@ -939,32 +1148,53 @@ version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "cfg-if 1.0.0", "cpufeatures", - "digest", + "digest 0.9.0", "opaque-debug", ] +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.3", +] + [[package]] name = "sha3" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" dependencies = [ - "block-buffer", - "digest", + "block-buffer 0.9.0", + "digest 0.9.0", "keccak", "opaque-debug", ] +[[package]] +name = "sha3" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86" +dependencies = [ + "digest 0.10.3", + "keccak", +] + [[package]] name = "signature" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2807892cfa58e081aa1f1111391c7a0649d4fa127a4ffbe34bcbfb35a1171a4" dependencies = [ - "digest", + "digest 0.9.0", "rand_core 0.6.3", ] @@ -991,9 +1221,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.85" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" +checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" dependencies = [ "proc-macro2", "quote", @@ -1034,9 +1264,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] @@ -1049,9 +1279,9 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "uint" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5f" +checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" dependencies = [ "byteorder", "crunchy", diff --git a/Cargo.toml b/Cargo.toml index 80436a8..695e911 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] members = ["contracts/cw-cyber-subgraph", "contracts/cw-cyber-passport", "contracts/cw-cyber-airdrop"] -[profile.release.package.cw721-marketplace] +[profile.release.package.cw-cybergift] codegen-units = 1 incremental = false diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index ea4b6b8..6ff5d6f 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -42,14 +42,14 @@ optimize = """docker run --rm -v "$(pwd)":/code \ [dependencies] anyhow = "1" cw0 = "0.10.3" -cw2 = "0.11" -cw20 = "0.11" -cw1-subkeys = "0.11.1" -cosmwasm-std = { version = "1.0.0-beta" } -cw-utils = { version = "0.11.0" } -#cosmwasm-crypto = { version = "1.0.0-beta" } +cw2 = "0.13.2" +cw20 = "0.13.2" +cw1-subkeys = "0.13.2" +cosmwasm-std = { version = "1.0.0-beta8" } +cw-utils = { version = "0.13.2" } cw-cyber-passport = { path = "../cw-cyber-passport", features = ["library"] } -cw-storage-plus = "0.10" +cw-cyber-subgraph = { path = "../cw-cyber-subgraph", features = ["library"] } +cw-storage-plus = { version = "0.13.2" } schemars = "0.8.3" serde = { version = "1.0.103", default-features = false, features = ["derive"] } thiserror = { version = "1.0.27" } @@ -57,5 +57,11 @@ hex = "0.4" sha2 = { version = "0.9.5", default-features = false } sha3 = "0.9" serde_json = "1.0" -cosmwasm-schema = "1.0.0-beta" base64 = "0.13" + +[dev-dependencies] +cosmwasm-schema = { version = "1.0.0-beta8" } +cw-multi-test = { version = "0.13.2" } +cw1-whitelist = { version = "0.13.2" } +cyber-std = { path = "../cyber-std" } +cyber-std-test = { path = "../cyber-std-test" } diff --git a/contracts/cw-cyber-airdrop/examples/schema.rs b/contracts/cw-cyber-airdrop/examples/schema.rs index 893fbef..a6900f6 100644 --- a/contracts/cw-cyber-airdrop/examples/schema.rs +++ b/contracts/cw-cyber-airdrop/examples/schema.rs @@ -2,7 +2,11 @@ use std::env::current_dir; use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_airdrop::msg::{ClaimResponse, ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, MerkleRootResponse, QueryMsg}; +use cw_cyber_airdrop::msg::{ + ExecuteMsg, InstantiateMsg, QueryMsg, + ConfigResponse, StateResponse, IsClaimedResponse, + ClaimResponse, ReleaseStageStateResponse, MerkleRootResponse +}; fn main() { let mut out_dir = current_dir().unwrap(); @@ -17,4 +21,6 @@ fn main() { export_schema(&schema_for!(IsClaimedResponse), &out_dir); export_schema(&schema_for!(ClaimResponse), &out_dir); export_schema(&schema_for!(ConfigResponse), &out_dir); + export_schema(&schema_for!(StateResponse), &out_dir); + export_schema(&schema_for!(ReleaseStageStateResponse), &out_dir); } diff --git a/contracts/cw-cyber-airdrop/schema/config_response.json b/contracts/cw-cyber-airdrop/schema/config_response.json index 08cf9a3..a3dcd6a 100644 --- a/contracts/cw-cyber-airdrop/schema/config_response.json +++ b/contracts/cw-cyber-airdrop/schema/config_response.json @@ -4,35 +4,22 @@ "type": "object", "required": [ "allowed_native", - "claims", - "coefficient", "coefficient_down", "coefficient_up", - "current_balance", "initial_balance", "passport", - "releases", "target_claim" ], "properties": { "allowed_native": { "type": "string" }, - "claims": { - "$ref": "#/definitions/Uint64" - }, - "coefficient": { - "$ref": "#/definitions/Decimal" - }, "coefficient_down": { "$ref": "#/definitions/Uint128" }, "coefficient_up": { "$ref": "#/definitions/Uint128" }, - "current_balance": { - "$ref": "#/definitions/Uint128" - }, "initial_balance": { "$ref": "#/definitions/Uint128" }, @@ -45,18 +32,11 @@ "passport": { "type": "string" }, - "releases": { - "$ref": "#/definitions/Uint64" - }, "target_claim": { "$ref": "#/definitions/Uint64" } }, "definitions": { - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, "Uint128": { "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", "type": "string" diff --git a/contracts/cw-cyber-airdrop/schema/query_msg.json b/contracts/cw-cyber-airdrop/schema/query_msg.json index 2c83f6c..71b9489 100644 --- a/contracts/cw-cyber-airdrop/schema/query_msg.json +++ b/contracts/cw-cyber-airdrop/schema/query_msg.json @@ -14,6 +14,18 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "state" + ], + "properties": { + "state": { + "type": "object" + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -85,6 +97,32 @@ } }, "additionalProperties": false + }, + { + "type": "object", + "required": [ + "release_stage_state" + ], + "properties": { + "release_stage_state": { + "type": "object", + "required": [ + "stage" + ], + "properties": { + "stage": { + "$ref": "#/definitions/Uint64" + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" } - ] + } } diff --git a/contracts/cw-cyber-airdrop/schema/release_stage_state_response.json b/contracts/cw-cyber-airdrop/schema/release_stage_state_response.json new file mode 100644 index 0000000..182facb --- /dev/null +++ b/contracts/cw-cyber-airdrop/schema/release_stage_state_response.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ReleaseStageStateResponse", + "type": "object", + "required": [ + "releases" + ], + "properties": { + "releases": { + "$ref": "#/definitions/Uint64" + } + }, + "definitions": { + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-airdrop/schema/state_response.json b/contracts/cw-cyber-airdrop/schema/state_response.json new file mode 100644 index 0000000..8916121 --- /dev/null +++ b/contracts/cw-cyber-airdrop/schema/state_response.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "StateResponse", + "type": "object", + "required": [ + "claims", + "coefficient", + "current_balance", + "releases" + ], + "properties": { + "claims": { + "$ref": "#/definitions/Uint64" + }, + "coefficient": { + "$ref": "#/definitions/Decimal" + }, + "current_balance": { + "$ref": "#/definitions/Uint128" + }, + "releases": { + "$ref": "#/definitions/Uint64" + } + }, + "definitions": { + "Decimal": { + "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", + "type": "string" + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs index a7601a1..2dc3603 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -5,9 +5,9 @@ use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; -use crate::state::{Config, CONFIG}; +use crate::state::{Config, CONFIG, State, STATE}; use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target}; -use crate::query::{query_claim, query_config, query_is_claimed, query_merkle_root, query_release_state}; +use crate::query::{query_claim, query_config, query_is_claimed, query_merkle_root, query_release_stage_state, query_release_state, query_state}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; // Version info, for migration info @@ -27,31 +27,26 @@ pub fn instantiate( .owner .map_or(Ok(info.sender), |o| deps.api.addr_validate(&o))?; - if !has_coins( - &info.funds, - &Coin { - denom: msg.allowed_native.clone(), - amount: msg.initial_balance, - }, - ) { - return Err(ContractError::InvalidInput {}); - } - let config = Config { owner: Some(owner), passport_addr: deps.api.addr_validate(&msg.passport)?, treasury_addr: deps.api.addr_validate(&msg.treasury)?, target_claim: msg.target_claim, allowed_native: msg.allowed_native, - current_balance: msg.initial_balance, initial_balance: msg.initial_balance, coefficient_up: msg.coefficient_up, coefficient_down: msg.coefficient_down, + }; + + let state = State { + current_balance: msg.initial_balance, coefficient: Decimal::from_ratio(msg.coefficient, 1u128), claims: Uint64::zero(), - releases: Uint64::zero(), + releases: Uint64::zero() }; + CONFIG.save(deps.storage, &config)?; + STATE.save(deps.storage, &state)?; Ok(Response::default()) } @@ -88,10 +83,12 @@ pub fn execute( pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { QueryMsg::Config {} => to_binary(&query_config(deps)?), + QueryMsg::State {} => to_binary(&query_state(deps)?), QueryMsg::MerkleRoot {} => to_binary(&query_merkle_root(deps)?), QueryMsg::IsClaimed { address } => to_binary(&query_is_claimed(deps, address)?), QueryMsg::Claim { address } => to_binary(&query_claim(deps, address)?), QueryMsg::ReleaseState { address } => to_binary(&query_release_state(deps, address)?), + QueryMsg::ReleaseStageState { stage } => to_binary(&query_release_stage_state(deps, stage)?), } } diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 88224f0..b0f8964 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -1,12 +1,13 @@ -use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, to_binary, Uint128, Uint64, WasmMsg}; +use cosmwasm_std::{Addr, attr, BankMsg, Coin, CosmosMsg, Decimal, DepsMut, Empty, Env, MessageInfo, Response, StdResult, to_binary, Uint128, Uint64, WasmMsg}; use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; -use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState}; +use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState, STATE, RELEASE_INFO}; use cw_utils::{Expiration, DAY, HOUR}; use std::ops::{Add, Mul}; use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; use crate::msg::{AddressResponse, SignatureResponse}; +use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; const RELEASE_STAGES: u64 = 9; @@ -115,24 +116,27 @@ pub fn execute_claim( _env: Env, info: MessageInfo, nickname: String, - gift_claiming_address: String, + mut gift_claiming_address: String, gift_amount: Uint128, proof: Vec, ) -> Result { + gift_claiming_address = gift_claiming_address.to_lowercase(); + let claimed = CLAIM.may_load(deps.storage, gift_claiming_address.clone())?; if claimed.is_some() { return Err(ContractError::Claimed {}); } - let mut config = CONFIG.load(deps.storage)?; - let claim_amount = gift_amount * config.coefficient; + let config = CONFIG.load(deps.storage)?; + let mut state = STATE.load(deps.storage)?; + let claim_amount = gift_amount * state.coefficient; // TODO: delete after debug println!("{:?}", "execute_claim"); - println!("{:?}", config.coefficient); + println!("{:?}", state.coefficient); println!("{:?}", claim_amount.to_string()); - if config.current_balance < claim_amount { + if state.current_balance < claim_amount { return Err(ContractError::GiftIsOver {}); } @@ -158,9 +162,9 @@ pub fn execute_claim( )?; // only claim once by given verified address - CLAIM.save(deps.storage, gift_claiming_address.clone(), &ClaimState{ claim: claim_amount, multiplier: config.coefficient })?; + CLAIM.save(deps.storage, gift_claiming_address.clone(), &ClaimState{ claim: claim_amount, multiplier: state.coefficient })?; - update_coefficient(deps.storage, claim_amount, &mut config)?; + update_coefficient(deps.storage, claim_amount, &config, &mut state)?; // get address of the passport by nickname let res: AddressResponse = deps.querier.query_wasm_smart( @@ -172,7 +176,8 @@ pub fn execute_claim( let release_state = ReleaseState { address: Addr::unchecked(res.clone().address), - balance_claim: claim_amount.checked_sub(Uint128::new(CLAIM_BOUNTY))?, + // balance_claim: claim_amount.checked_sub(Uint128::new(CLAIM_BOUNTY))?, + balance_claim: claim_amount.checked_sub(Uint128::new(0))?, stage: Uint64::zero(), stage_expiration: Expiration::Never {}, }; @@ -183,31 +188,34 @@ pub fn execute_claim( &release_state, )?; - CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { - cfg.claims = cfg.claims.add(Uint64::new(1)); - Ok(cfg) + STATE.update(deps.storage, |mut stt| -> StdResult<_> { + stt.claims = stt.claims.add(Uint64::new(1)); + Ok(stt) })?; // send funds from treasury controlled by Congress Ok(Response::new() // .add_message(WasmMsg::Execute { // contract_addr: config.treasury_addr.to_string(), - // msg: to_binary(&BankMsg::Send { - // to_address: res.address.clone(), - // amount: vec![Coin { - // denom: config.allowed_native, - // amount: Uint128::new(CLAIM_BOUNTY), - // }], - // })?, + // msg: to_binary(&Cw1ExecuteMsg::Execute:: { + // msgs: vec![ + // CosmosMsg::Bank(BankMsg::Send { + // to_address: res.address.clone(), + // amount: vec![Coin { + // denom: config.allowed_native, + // amount: Uint128::new(CLAIM_BOUNTY), + // }], + // }).into() + // ]})?, // funds: vec![] // }) - .add_message(BankMsg::Send { - to_address: res.address.clone(), - amount: vec![Coin { - denom: config.allowed_native, - amount: Uint128::new(CLAIM_BOUNTY), - }], - }) + // .add_message(BankMsg::Send { + // to_address: res.address.clone(), + // amount: vec![Coin { + // denom: config.allowed_native, + // amount: Uint128::new(CLAIM_BOUNTY), + // }], + // }) .add_attributes(vec![ attr("action", "claim"), attr("original", gift_claiming_address), @@ -221,15 +229,18 @@ pub fn execute_release( deps: DepsMut, env: Env, info: MessageInfo, - gift_address: String + mut gift_address: String ) -> Result { + gift_address = gift_address.to_lowercase(); + let claimed = CLAIM.may_load(deps.storage, gift_address.clone())?; if claimed.is_none() { return Err(ContractError::NotClaimed {}); } let config = CONFIG.load(deps.storage)?; - if config.claims < config.target_claim { + let state = STATE.load(deps.storage)?; + if state.claims < config.target_claim { return Err(ContractError::NotActivated {}); } @@ -247,7 +258,9 @@ pub fn execute_release( let amount: Uint128; if release_state.stage.is_zero() { // first claim, amount 10% of claim - amount = release_state.balance_claim.mul(Decimal::percent(10)); + amount = release_state + .balance_claim + .mul(Decimal::percent(10)); release_state.stage_expiration = HOUR.after(&env.block); release_state.stage = Uint64::new(RELEASE_STAGES); } else { @@ -272,37 +285,44 @@ pub fn execute_release( release_state.balance_claim = release_state.balance_claim - amount; + RELEASE_INFO.update(deps.storage, release_state.stage.u64(), |rls: Option| -> StdResult { + Ok(rls.unwrap_or_default().add(Uint64::new(1))) + })?; + RELEASE.save( deps.storage, gift_address.clone(), &release_state, )?; - CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { - cfg.releases = cfg.releases.add(Uint64::new(1)); - Ok(cfg) + STATE.update(deps.storage, |mut stt| -> StdResult<_> { + stt.releases = stt.releases.add(Uint64::new(1)); + Ok(stt) })?; // send funds from treasury controlled by Congress Ok(Response::new() - // .add_message(WasmMsg::Execute { - // contract_addr: config.treasury_addr.to_string(), - // msg: to_binary(&BankMsg::Send { - // to_address: release_state.clone().address.into(), - // amount: vec![Coin { - // denom: config.allowed_native, - // amount - // }], - // })?, - // funds: vec![] - // }) - .add_message(BankMsg::Send { - to_address: release_state.clone().address.into(), - amount: vec![Coin { - denom: config.allowed_native, - amount - }], - }) + .add_message(WasmMsg::Execute { + contract_addr: config.treasury_addr.to_string(), + msg: to_binary(&Cw1ExecuteMsg::Execute:: { + msgs: vec![ + CosmosMsg::Bank(BankMsg::Send { + to_address: release_state.clone().address.into(), + amount: vec![Coin { + denom: config.allowed_native, + amount: amount, + }], + }).into() + ]})?, + funds: vec![] + }) + // .add_message(BankMsg::Send { + // to_address: release_state.clone().address.into(), + // amount: vec![Coin { + // denom: config.allowed_native, + // amount + // }], + // }) .add_attributes(vec![ attr("action", "release"), attr("address", release_state.clone().address.to_string()), diff --git a/contracts/cw-cyber-airdrop/src/helpers.rs b/contracts/cw-cyber-airdrop/src/helpers.rs index 83ffa2a..4595162 100644 --- a/contracts/cw-cyber-airdrop/src/helpers.rs +++ b/contracts/cw-cyber-airdrop/src/helpers.rs @@ -1,4 +1,4 @@ -use crate::state::{Config, CONFIG, MERKLE_ROOT}; +use crate::state::{Config, MERKLE_ROOT, State, STATE}; use crate::ContractError; use cosmwasm_std::{ Decimal, DepsMut, MessageInfo, StdError, StdResult, Storage, @@ -11,12 +11,13 @@ use std::ops::{Add, Mul, Sub}; pub fn update_coefficient( store: &mut dyn Storage, amount: Uint128, - config: &mut Config, + config: &Config, + state: &mut State, ) -> StdResult<()> { let coefficient_up = config.coefficient_up; let coefficient_down = config.coefficient_down; let initial_balance = config.initial_balance; - let current_balance = config.current_balance; + let current_balance = state.current_balance; // TODO delete after debug println!("{:?}", "update_coefficient"); @@ -37,9 +38,9 @@ pub fn update_coefficient( println!("{:?}", new_balance_ratio.to_string()); println!("{:?}", new_coefficient.to_string()); - config.coefficient = new_coefficient; - config.current_balance = current_balance - amount; - CONFIG.save(store, &config) + state.coefficient = new_coefficient; + state.current_balance = current_balance - amount; + STATE.save(store, &state) } pub fn verify_merkle_proof( diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index 55b8b15..9c56989 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; use cosmwasm_std::{Decimal, Uint128, Uint64}; use cw_utils::Expiration; -#[derive(Serialize, Deserialize, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { /// Owner if none set to info.sender. pub owner: Option, @@ -52,10 +52,12 @@ pub enum ExecuteMsg { #[serde(rename_all = "snake_case")] pub enum QueryMsg { Config {}, + State {}, MerkleRoot {}, IsClaimed { address: String }, Claim { address: String }, ReleaseState { address: String }, + ReleaseStageState { stage: Uint64 }, } #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] @@ -65,10 +67,15 @@ pub struct ConfigResponse { pub passport: String, pub target_claim: Uint64, pub allowed_native: String, - pub current_balance: Uint128, pub initial_balance: Uint128, pub coefficient_up: Uint128, pub coefficient_down: Uint128, +} + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub struct StateResponse { + pub current_balance: Uint128, pub coefficient: Decimal, pub claims: Uint64, pub releases: Uint64, @@ -99,6 +106,11 @@ pub struct ReleaseStateResponse { pub stage_expiration: Expiration, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ReleaseStageStateResponse { + pub releases: Uint64, +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct SignatureResponse { pub signed: bool, diff --git a/contracts/cw-cyber-airdrop/src/query.rs b/contracts/cw-cyber-airdrop/src/query.rs index 705f1eb..1d4df29 100644 --- a/contracts/cw-cyber-airdrop/src/query.rs +++ b/contracts/cw-cyber-airdrop/src/query.rs @@ -1,6 +1,6 @@ -use cosmwasm_std::{Deps, StdResult}; -use crate::msg::{ClaimResponse, ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStateResponse}; -use crate::state::{CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; +use cosmwasm_std::{Deps, StdResult, Uint64}; +use crate::msg::{ClaimResponse, ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStageStateResponse, ReleaseStateResponse, StateResponse}; +use crate::state::{CLAIM, CONFIG, MERKLE_ROOT, RELEASE, RELEASE_INFO, STATE}; pub fn query_config(deps: Deps) -> StdResult { let cfg = CONFIG.load(deps.storage)?; @@ -9,13 +9,19 @@ pub fn query_config(deps: Deps) -> StdResult { passport: cfg.passport_addr.to_string(), target_claim: cfg.target_claim, allowed_native: cfg.allowed_native, - current_balance: cfg.current_balance, initial_balance: cfg.initial_balance, coefficient_up: cfg.coefficient_up, coefficient_down: cfg.coefficient_down, - coefficient: cfg.coefficient, - claims: cfg.claims, - releases: cfg.releases, + }) +} + +pub fn query_state(deps: Deps) -> StdResult { + let stt = STATE.load(deps.storage)?; + Ok(StateResponse { + current_balance: stt.current_balance, + coefficient: stt.coefficient, + claims: stt.claims, + releases: stt.releases }) } @@ -58,3 +64,11 @@ pub fn query_release_state(deps: Deps, address: String) -> StdResult StdResult { + let release_stage_state = RELEASE_INFO.load(deps.storage, stage.u64())?; + let resp = ReleaseStageStateResponse { + releases: release_stage_state + }; + Ok(resp) +} diff --git a/contracts/cw-cyber-airdrop/src/state.rs b/contracts/cw-cyber-airdrop/src/state.rs index e8eadce..df22343 100644 --- a/contracts/cw-cyber-airdrop/src/state.rs +++ b/contracts/cw-cyber-airdrop/src/state.rs @@ -8,21 +8,21 @@ use cw_utils::Expiration; // TODO move coefficient, current_balance, claims and releases out of config #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct Config { - /// Owner If None set, contract is frozen. pub owner: Option, pub passport_addr: Addr, pub treasury_addr: Addr, - /// target_claim amount of claimed accounts to start release (activate gift) pub target_claim: Uint64, pub allowed_native: String, - pub current_balance: Uint128, pub initial_balance: Uint128, pub coefficient_up: Uint128, pub coefficient_down: Uint128, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct State { + pub current_balance: Uint128, pub coefficient: Decimal, - /// amount of claimed accounts pub claims: Uint64, - /// amount of total releases by all accounts pub releases: Uint64, } @@ -43,6 +43,9 @@ pub struct ClaimState { pub const CONFIG_KEY: &str = "config"; pub const CONFIG: Item = Item::new(CONFIG_KEY); +pub const STATE_KEY: &str = "state"; +pub const STATE: Item = Item::new(STATE_KEY); + pub const MERKLE_ROOT_PREFIX: &str = "merkle_root"; pub const MERKLE_ROOT: Item = Item::new(MERKLE_ROOT_PREFIX); @@ -51,3 +54,6 @@ pub const CLAIM: Map = Map::new(CLAIM_PREFIX); pub const RELEASE_PREFIX: &str = "release"; pub const RELEASE: Map = Map::new(RELEASE_PREFIX); + +pub const RELEASE_INFO_PREFIX: &str = "release_info"; +pub const RELEASE_INFO: Map = Map::new(RELEASE_INFO_PREFIX); diff --git a/contracts/cw-cyber-airdrop/src/tests.rs b/contracts/cw-cyber-airdrop/src/tests.rs index 04dcb62..eed96fe 100644 --- a/contracts/cw-cyber-airdrop/src/tests.rs +++ b/contracts/cw-cyber-airdrop/src/tests.rs @@ -1,21 +1,47 @@ #[cfg(test)] mod tests { - use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; - use cosmwasm_std::{ - attr, from_binary, from_slice, BankMsg, Binary, Coin, CosmosMsg, Env, SubMsg, Uint128, - Uint64, - }; + use std::fmt::Debug; + use std::marker::PhantomData; + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info, MockApi, MockQuerier, MockStorage}; + use cosmwasm_std::{attr, from_binary, from_slice, BankMsg, Binary, Coin, CosmosMsg, Env, SubMsg, Uint128, Uint64, Empty, Addr, coin, coins, Querier, QuerierResult, Api, Storage, BlockInfo, CustomQuery, OwnedDeps, to_binary, BankQuery}; use serde::Deserialize; use crate::execute::*; - use crate::msg::{ - ClaimMsg, ClaimerType, ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, - MerkleRootResponse, QueryMsg, ReleaseStateResponse, - }; + use crate::msg::{ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, MerkleRootResponse, QueryMsg, ReleaseStageStateResponse, ReleaseStateResponse, StateResponse}; use crate::ContractError; - use std::ops::Mul; + use std::ops::{Deref, DerefMut, Mul}; + use anyhow::{bail, Result as AnyResult}; + use cosmwasm_std::WasmMsg::Execute; + use crate::contract::{execute, instantiate, query}; + use cw_multi_test::{next_block, App, AppBuilder, Contract, ContractWrapper, Executor, BankKeeper, WasmKeeper, Module, CosmosRouter, AppResponse, BasicAppBuilder}; + use schemars::JsonSchema; + use serde::de::DeserializeOwned; + use cyber_std::{CyberMsgWrapper}; + use cw_cyber_passport::msg::ExecuteMsg as PassportExecuteMsg; + use cyber_std_test::CyberApp; + const NATIVE_TOKEN: &str = "boot"; + const OWNER: &str = "owner0001"; + const CYB1: &str = "bostrom1wnpak7sfawsfv9c8vqe7naxfa4g99lv77d7c0z"; + const CYB2: &str = "cyb0002"; + const CYB3: &str = "cyb0003"; + const CYB4: &str = "cyb0004"; + const SOMEBODY: &str = "somebody"; + const SPACE1: &str = "space1"; + const SPACE2: &str = "space2"; + const SPACE3: &str = "space3"; + const INIT_BALANCE_OWNER: Uint128 = Uint128::new(10000000000000); + const INIT_BALANCE_TREASURY: Uint128 = Uint128::new(300000000); + const CF_UP: Uint128 = Uint128::new(20); + const CF_DOWN: Uint128 = Uint128::new(5); + const CF: Uint128 = Uint128::new(20); + const TARGET_CLAIM: Uint64 = Uint64::new(2); + + pub fn next_hour(block: &mut BlockInfo) { + block.time = block.time.plus_seconds(3600); + block.height += 1; + } fn mock_env_time(time_delta: u64) -> Env { let mut env = mock_env(); @@ -23,38 +49,292 @@ mod tests { env } - #[test] - fn proper_instantiation() { - let mut deps = mock_dependencies(); + pub fn contract_gift() -> Box> { + let contract = ContractWrapper::new_with_empty( + crate::contract::execute, + crate::contract::instantiate, + crate::contract::query, + ); + Box::new(contract) + } - let msg = InstantiateMsg { - owner: Some("owner0000".to_string()), - passport: "passport".to_string(), - target_claim: Uint64::new(4), + pub fn contract_passport() -> Box> { + let contract = ContractWrapper::new( + cw_cyber_passport::contract::execute, + cw_cyber_passport::contract::instantiate, + cw_cyber_passport::contract::query, + ) + .with_reply(cw_cyber_passport::contract::reply); + Box::new(contract) + } + + pub fn contract_treasury() -> Box> { + let contract = ContractWrapper::new_with_empty( + cw1_subkeys::contract::execute, + cw1_subkeys::contract::instantiate, + cw1_subkeys::contract::query, + ); + Box::new(contract) + } + + pub fn contract_subgraph() -> Box> { + let contract = ContractWrapper::new( + cw_cyber_subgraph::contract::execute, + cw_cyber_subgraph::contract::instantiate, + cw_cyber_subgraph::contract::query, + ) + .with_reply(cw_cyber_subgraph::contract::reply); + Box::new(contract) + } + + pub type CyberDeps = OwnedDeps; + + pub fn mock_deps_cyber() -> CyberDeps { + OwnedDeps { + storage: MockStorage::default(), + api: MockApi::default(), + querier: MockQuerier::default(), + custom_query_type: PhantomData, + } + } + + fn mock_app(init_funds: &[Coin]) -> CyberApp { + let mut app = CyberApp::new(); + app.init_modules(|router, _, storage| { + router + .bank + .init_balance(storage, &Addr::unchecked(OWNER), init_funds.to_vec()) + .unwrap(); + }); + app + } + + fn instantiate_gift(app: &mut CyberApp, passport: String, treasury: String) -> Addr { + let gift_id = app.store_code(contract_gift()); + let msg = crate::msg::InstantiateMsg { + owner: Some(OWNER.to_string()), + passport: passport.to_string(), + treasury: treasury.to_string(), allowed_native: NATIVE_TOKEN.to_string(), - initial_balance: Uint128::new(10000000000000), - coefficient_up: Uint128::new(20), - coefficient_down: Uint128::new(5), - coefficient: Uint128::new(20), + initial_balance: INIT_BALANCE_TREASURY, + coefficient_up: CF_UP, + coefficient_down: CF_DOWN, + coefficient: CF, + target_claim: TARGET_CLAIM }; + app.instantiate_contract(gift_id, Addr::unchecked(OWNER), &msg, &[], "gift", None) + .unwrap() + } - let env = mock_env(); - let info = mock_info( - "addr0000", - &[Coin { - denom: NATIVE_TOKEN.to_string(), - amount: Uint128::new(10000000000000), - }], + fn instantiate_passport(app: &mut CyberApp) -> Addr { + let passport_id = app.store_code(contract_passport()); + let msg = cw_cyber_passport::msg::InstantiateMsg { + name: "MoonPassport".to_string(), + symbol: "MP".to_string(), + minter: "cosmos2contract".to_string(), + owner: OWNER.to_string(), + name_subspace: SPACE1.to_string(), + avatar_subspace: SPACE2.to_string(), + proof_subspace: SPACE3.to_string(), + }; + app.instantiate_contract(passport_id, Addr::unchecked(OWNER), &msg, &[], "passport", None) + .unwrap() + } + + fn instantiate_treasury(app: &mut CyberApp) -> Addr { + let treasury_id = app.store_code(contract_treasury()); + let msg = cw1_whitelist::msg::InstantiateMsg { + admins: vec![OWNER.to_string()], + mutable: false + }; + app.instantiate_contract(treasury_id, Addr::unchecked(OWNER), &msg, &coins(INIT_BALANCE_TREASURY.u128(), NATIVE_TOKEN), "treasury", None) + .unwrap() + } + + fn instantiate_subgraph(app: &mut CyberApp, owner: String, executer: String) -> Addr { + let treasury_id = app.store_code(contract_subgraph()); + let msg = cw_cyber_subgraph::msg::InstantiateMsg { + admins: vec![owner.to_string()], + executers: vec![executer.to_string()] + }; + app.instantiate_contract(treasury_id, Addr::unchecked(OWNER), &msg, &[], "subgraph", None) + .unwrap() + } + + fn setup_contracts( + app: &mut CyberApp, + ) -> (Addr, Addr, Addr) { + let treasury_addr = instantiate_treasury(app); + app.update_block(next_block); + + let passport_addr = instantiate_passport(app); + app.update_block(next_block); + + let gift_addr = instantiate_gift(app, passport_addr.to_string(), treasury_addr.to_string()); + app.update_block(next_block); + + app.execute_contract( + Addr::unchecked(OWNER), + treasury_addr.clone(), + &cw1_subkeys::msg::ExecuteMsg::IncreaseAllowance:: { + spender: gift_addr.to_string(), + amount: Coin::new(INIT_BALANCE_TREASURY.u128(), NATIVE_TOKEN), + expires: None, + }, + &[], ); + app.update_block(next_block); + + let name_subspace = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); + let avatar_subspace = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); + let proof_subspace = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); + app.update_block(next_block); + + app.execute_contract( + Addr::unchecked(OWNER), + passport_addr.clone(), + &PassportExecuteMsg::SetSubspaces { + name_subspace: name_subspace.to_string(), + avatar_subspace: avatar_subspace.to_string(), + proof_subspace: proof_subspace.to_string() + }, + &[], + ); + app.update_block(next_block); - // we can just call .unwrap() to assert this was a success - let _res = instantiate(deps.as_mut(), env.clone(), info, msg).unwrap(); + app.execute_contract( + Addr::unchecked(OWNER), + passport_addr.clone(), + &PassportExecuteMsg::SetMinter { + minter: passport_addr.to_string() + }, + &[], + ); + app.update_block(next_block); + + (gift_addr, passport_addr, treasury_addr) + } + + #[test] + fn claim1() { + let init_funds = coins(INIT_BALANCE_OWNER.u128(), NATIVE_TOKEN); + let mut app = mock_app(&init_funds); + + let (gift_addr, passport_addr, treasury_addr) = setup_contracts(&mut app); + + let res = app.execute_contract( + Addr::unchecked(OWNER), + gift_addr.clone(), + &ExecuteMsg::RegisterMerkleRoot { + merkle_root: "96c287db438923b77acee90e134e1f2d9bc506bc5544eab8e89e8886b83ca5c7".to_string() + }, + &[], + ); + + let res = app.execute_contract( + Addr::unchecked(CYB1), + passport_addr.clone(), + &PassportExecuteMsg::CreatePassport { + nickname: "passport1".to_string(), + avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + }, + &[], + ); + + let res = app.execute_contract( + Addr::unchecked(CYB1), + passport_addr.clone(), + &PassportExecuteMsg::ProofAddress { + nickname: "passport1".to_string(), + address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), + }, + &[], + ); + + let res = app.execute_contract( + Addr::unchecked(CYB1), + passport_addr.clone(), + &PassportExecuteMsg::CreatePassport { + nickname: "passport2".to_string(), + avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + }, + &[], + ); + + let res = app.execute_contract( + Addr::unchecked(CYB1), + passport_addr.clone(), + &PassportExecuteMsg::ProofAddress { + nickname: "passport2".to_string(), + address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), + }, + &[], + ); + + let res = app.execute_contract( + Addr::unchecked(CYB1), + gift_addr.clone(), + &ExecuteMsg::Claim { + nickname: "passport1".to_string(), + gift_claiming_address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + gift_amount: Uint128::new(10000000), + proof: vec!["020feac4e445b8710e223ef9d32d60d0fa060e5a33c421c217ac4976641afa9f".to_string()], + }, + &[], + ); + + let res = app.execute_contract( + Addr::unchecked(CYB1), + gift_addr.clone(), + &ExecuteMsg::Claim { + nickname: "passport2".to_string(), + gift_claiming_address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), + gift_amount: Uint128::new(5000000), + proof: vec!["c0d07d81376100727f8de10cbbc3f46c04c13a906c4a8de884abebaa94d33737".to_string()] + }, + &[], + ); + + for i in 0..10 { + let res = app.execute_contract( + Addr::unchecked(CYB1), + gift_addr.clone(), + &ExecuteMsg::Release { + gift_address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + }, + &[], + ); + println!("Release [ETH]- {:?}", res); + + let res = app.execute_contract( + Addr::unchecked(CYB1), + gift_addr.clone(), + &ExecuteMsg::Release { + gift_address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), + }, + &[], + ); + println!("Release- [COSMOS]{:?}", res); + + // let info: StateResponse = app.wrap().query_wasm_smart(&gift_addr, &QueryMsg::State {}).unwrap(); + // println!("stage{:?}_ - {:?}", i, info); + + app.update_block(next_hour); + } + + + println!("gift_balance- {:?}", app.wrap().query_balance(&gift_addr, "boot").unwrap()); + println!("treasury_balance- {:?}", app.wrap().query_balance(&treasury_addr, "boot").unwrap()); + println!("passport1_balance- {:?}", app.wrap().query_balance(&Addr::unchecked(CYB1), "boot").unwrap()); + // println!("passport2_balance- {:?}", app.wrap().query_balance(&Addr::unchecked(CYB2), "boot").unwrap()); + + for i in 0..10 { + let info: ReleaseStageStateResponse = app.wrap().query_wasm_smart(&gift_addr, &QueryMsg::ReleaseStageState { stage: Uint64::from(1u64) }).unwrap(); + println!("stage{:?}_ - {:?}", i, info); + } - // it worked, let's query the state - let res = query(deps.as_ref(), env, QueryMsg::Config {}).unwrap(); - let config: ConfigResponse = from_binary(&res).unwrap(); - assert_eq!("owner0000", config.owner.unwrap().as_str()); - assert_eq!("boot", config.allowed_native.as_str()); } #[test] @@ -70,11 +350,12 @@ mod tests { coefficient_up: Default::default(), coefficient_down: Default::default(), coefficient: Default::default(), + treasury: "treasury".to_string() }; let env = mock_env(); let info = mock_info( - "owner0000", + "owner", &[Coin { denom: NATIVE_TOKEN.to_string(), amount: Uint128::new(100), @@ -84,7 +365,7 @@ mod tests { // update owner let env = mock_env(); - let info = mock_info("owner0000", &[]); + let info = mock_info("owner", &[]); let msg = ExecuteMsg::UpdateOwner { new_owner: Some("owner0001".to_string()), }; @@ -99,22 +380,19 @@ mod tests { // Unauthorized err let env = mock_env(); - let info = mock_info("owner0000", &[]); + let info = mock_info("owner", &[]); let msg = ExecuteMsg::UpdateOwner { new_owner: None }; let res = execute(deps.as_mut(), env, info, msg).unwrap_err(); assert_eq!(res, ContractError::Unauthorized {}); } - // TODO write update_passport - // TODO write update_target - #[test] fn register_merkle_root() { let mut deps = mock_dependencies(); let msg = InstantiateMsg { - owner: Some("owner0000".to_string()), + owner: Some("owner".to_string()), passport: "passport".to_string(), target_claim: Uint64::new(4), allowed_native: NATIVE_TOKEN.to_string(), @@ -122,6 +400,7 @@ mod tests { coefficient_up: Default::default(), coefficient_down: Default::default(), coefficient: Default::default(), + treasury: "treasury".to_string() }; let env = mock_env(); @@ -136,7 +415,7 @@ mod tests { // register new merkle root let env = mock_env(); - let info = mock_info("owner0000", &[]); + let info = mock_info("owner", &[]); let msg = ExecuteMsg::RegisterMerkleRoot { merkle_root: "634de21cde1044f41d90373733b0f0fb1c1c71f9652b905cdf159e73c4cf0d37" .to_string(), @@ -162,217 +441,12 @@ mod tests { ); } - const ETH_TEST: &[u8] = - include_bytes!("../testdata/airdrop_stage_1_test_data_ethereum_address.json"); - const COSMOS_TEST: &[u8] = - include_bytes!("../testdata/airdrop_stage_1_test_data_cosmos_address.json"); - - #[derive(Deserialize, Debug)] - struct Encoded { - claim_msg: Binary, - signature: Binary, - amount: Uint128, - root: String, - proofs: Vec, - } - - #[test] - fn claim() { - // Case #1 - Claim with Ethereum - - let mut deps = mock_dependencies(); - let eth_test_data: Encoded = from_slice(ETH_TEST).unwrap(); - - let msg = InstantiateMsg { - owner: Some("owner0000".to_string()), - passport: "passport".to_string(), - target_claim: Uint64::new(2), - allowed_native: NATIVE_TOKEN.to_string(), - initial_balance: Uint128::new(10000000000000), - coefficient_up: Uint128::new(20), - coefficient_down: Uint128::new(5), - coefficient: Uint128::new(20), - }; - - let env = mock_env(); - let info = mock_info( - "addr0000", - &[Coin { - denom: NATIVE_TOKEN.to_string(), - amount: Uint128::new(10000000000000), - }], - ); - let _res = instantiate(deps.as_mut(), env, info, msg).unwrap(); - - let env = mock_env(); - let info = mock_info("owner0000", &[]); - let msg = ExecuteMsg::RegisterMerkleRoot { - merkle_root: eth_test_data.root, - }; - let _res = execute(deps.as_mut(), env, info, msg).unwrap(); - - let claim_msg_ethereum = from_binary(ð_test_data.claim_msg).unwrap(); - let msg = ExecuteMsg::Claim { - claim_msg: claim_msg_ethereum, - signature: eth_test_data.signature, - proof: eth_test_data.proofs, - claim_amount: eth_test_data.amount, - }; - - let env = mock_env(); - let info = mock_info("addr0001", &[]); - let res = execute(deps.as_mut(), env.clone(), info.clone(), msg.clone()).unwrap(); - - let claim_msg_ethereum: ClaimMsg = from_binary(ð_test_data.claim_msg).unwrap(); - let expected = SubMsg::new(CosmosMsg::Bank(BankMsg::Send { - to_address: claim_msg_ethereum.clone().target_address, - amount: vec![Coin { - denom: NATIVE_TOKEN.to_string(), - amount: Uint128::new(100000), - }], - })); - assert_eq!(res.messages, vec![expected]); - - assert_eq!( - res.attributes, - vec![ - attr("action", "claim"), - attr("original", claim_msg_ethereum.clone().gift_claiming_address), - attr("type", ClaimerType::Ethereum.to_string()), - attr("target", claim_msg_ethereum.clone().target_address), - attr("amount", eth_test_data.amount.u128().mul(20).to_string()) - ] - ); - - assert!( - from_binary::( - &query( - deps.as_ref(), - env.clone(), - QueryMsg::IsClaimed { - address: claim_msg_ethereum.target_address - } - ) - .unwrap() - ) - .unwrap() - .is_claimed - ); - - let res = execute(deps.as_mut(), env, info, msg).unwrap_err(); - assert_eq!(res, ContractError::Claimed {}); - - // Case #2 - Claim with Cosmos - - let cosmos_test_data: Encoded = from_slice(COSMOS_TEST).unwrap(); - - let claim_msg_cosmos: ClaimMsg = from_binary(&cosmos_test_data.claim_msg).unwrap(); - let msg = ExecuteMsg::Claim { - claim_msg: claim_msg_cosmos, - signature: cosmos_test_data.signature, - proof: cosmos_test_data.proofs, - claim_amount: cosmos_test_data.amount, - }; - - let env = mock_env(); - let info = mock_info("addr0002", &[]); - let res = execute(deps.as_mut(), env, info, msg).unwrap(); - - let claim_msg_cosmos: ClaimMsg = from_binary(&cosmos_test_data.claim_msg).unwrap(); - let expected = SubMsg::new(CosmosMsg::Bank(BankMsg::Send { - to_address: claim_msg_cosmos.clone().target_address, - amount: vec![Coin { - denom: NATIVE_TOKEN.to_string(), - amount: Uint128::new(100000), - }], - })); - assert_eq!(res.messages, vec![expected]); - - assert_eq!( - res.attributes, - vec![ - attr("action", "claim"), - attr("original", claim_msg_cosmos.clone().gift_claiming_address), - attr("type", ClaimerType::Cosmos.to_string()), - attr("target", claim_msg_cosmos.clone().target_address), - attr("amount", cosmos_test_data.amount.u128().mul(20).to_string()) - ] - ); - - let env = mock_env(); - let res = query(deps.as_ref(), env, QueryMsg::Config {}).unwrap(); - let config: ConfigResponse = from_binary(&res).unwrap(); - assert_eq!(2, config.claims.u64()); - - let claim_msg: ClaimMsg = from_binary(ð_test_data.claim_msg).unwrap(); - let env = mock_env(); - let info = mock_info(claim_msg.target_address.as_str(), &[]); - let res = execute(deps.as_mut(), env, info, ExecuteMsg::Release {}).unwrap(); - println!("{:?}", res); - - let claim_msg: ClaimMsg = from_binary(&cosmos_test_data.claim_msg).unwrap(); - let env = mock_env(); - let info = mock_info(claim_msg.target_address.as_str(), &[]); - let res = execute(deps.as_mut(), env, info, ExecuteMsg::Release {}).unwrap(); - println!("{:?}", res); - - let claim_msg: ClaimMsg = from_binary(ð_test_data.claim_msg).unwrap(); - let env = mock_env(); - let res = query( - deps.as_ref(), - env, - QueryMsg::ReleaseState { - address: claim_msg.target_address, - }, - ) - .unwrap(); - let release_state: ReleaseStateResponse = from_binary(&res).unwrap(); - println!("{:?}", release_state); - - let claim_msg: ClaimMsg = from_binary(&cosmos_test_data.claim_msg).unwrap(); - let env = mock_env(); - let res = query( - deps.as_ref(), - env, - QueryMsg::ReleaseState { - address: claim_msg.target_address, - }, - ) - .unwrap(); - let release_state: ReleaseStateResponse = from_binary(&res).unwrap(); - println!("{:?}", release_state); - - let claim_msg: ClaimMsg = from_binary(ð_test_data.claim_msg).unwrap(); - let env = mock_env(); - let info = mock_info(claim_msg.target_address.as_str(), &[]); - let res = execute(deps.as_mut(), env, info, ExecuteMsg::Release {}).unwrap_err(); - println!("{:?}", res); - - let claim_msg: ClaimMsg = from_binary(&cosmos_test_data.claim_msg).unwrap(); - let env = mock_env(); - let info = mock_info(claim_msg.target_address.as_str(), &[]); - let res = execute(deps.as_mut(), env, info, ExecuteMsg::Release {}).unwrap_err(); - println!("{:?}", res); - - let claim_msg: ClaimMsg = from_binary(ð_test_data.claim_msg).unwrap(); - let env = mock_env_time(86400); - let info = mock_info(claim_msg.target_address.as_str(), &[]); - let res = execute(deps.as_mut(), env, info, ExecuteMsg::Release {}).unwrap(); - println!("{:?}", res); - - let claim_msg: ClaimMsg = from_binary(&cosmos_test_data.claim_msg).unwrap(); - let env = mock_env_time(86400); - let info = mock_info(claim_msg.target_address.as_str(), &[]); - let res = execute(deps.as_mut(), env, info, ExecuteMsg::Release {}).unwrap(); - println!("{:?}", res); - } - #[test] fn owner_freeze() { let mut deps = mock_dependencies(); let msg = InstantiateMsg { - owner: Some("owner0000".to_string()), + owner: Some("owner".to_string()), passport: "passport".to_string(), target_claim: Uint64::new(4), allowed_native: NATIVE_TOKEN.to_string(), @@ -380,6 +454,7 @@ mod tests { coefficient_up: Uint128::new(20), coefficient_down: Uint128::new(5), coefficient: Uint128::new(20), + treasury: "treasury".to_string() }; let env = mock_env(); @@ -394,7 +469,7 @@ mod tests { // can register merkle root let env = mock_env(); - let info = mock_info("owner0000", &[]); + let info = mock_info("owner", &[]); let msg = ExecuteMsg::RegisterMerkleRoot { merkle_root: "5d4f48f147cb6cb742b376dce5626b2a036f69faec10cd73631c791780e150fc" .to_string(), @@ -403,7 +478,7 @@ mod tests { // can update owner let env = mock_env(); - let info = mock_info("owner0000", &[]); + let info = mock_info("owner", &[]); let msg = ExecuteMsg::UpdateOwner { new_owner: Some("owner0001".to_string()), }; diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index 662ea56..1edd5ff 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -40,27 +40,27 @@ optimize = """docker run --rm -v "$(pwd)":/code \ """ [dependencies] -cosmwasm-std = { version = "1.0.0-beta" } -cosmwasm-storage = { version = "1.0.0-beta" } -cw-storage-plus = "0.10" -cw2 = "0.10" -cw721 = { version = "0.11" } +cosmwasm-std = { version = "1.0.0-beta8" } +cosmwasm-storage = { version = "1.0.0-beta8" } +cw-storage-plus = "0.13.2" +cw2 = "0.13.2" +cw721 = { version = "0.13.2" } schemars = "0.8.3" serde = { version = "1.0.127", default-features = false, features = ["derive"] } thiserror = { version = "1.0.26" } cid = "0.7.0" cyber-std = { path = "../cyber-std" } cw-cyber-subgraph = { path = "../cw-cyber-subgraph" } -cw-utils = { version = "0.11.1" } +cw-utils = { version = "0.13.2" } hex = "0.4" sha2 = { version = "0.9.5", default-features = false } sha3 = "0.9" bech32 = "0.8.1" -cw721-base = { version = "0.11", features = ["library"] } +cw721-base = { version = "0.13.2", features = ["library"] } primitive-types = {version = "0.10.1", default-features = false, features = ["byteorder"]} ripemd160 = "0.9.1" base64 = "0.13" [dev-dependencies] -cosmwasm-schema = { version = "1.0.0-beta" } +cosmwasm-schema = { version = "1.0.0-beta8" } diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index b8b8623..8d7d6cd 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -4,7 +4,7 @@ use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to use cyber_std::CyberMsgWrapper; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERLINK_ID_MSG, execute_set_address_label}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERSPACE_ID_MSG, execute_set_address_label}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; @@ -87,13 +87,9 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { #[cfg_attr(not(feature = "library"), entry_point)] pub fn reply(_deps: DepsMut, _env: Env, reply: Reply) -> Result { - if reply.id != CYBERLINK_ID_MSG { + if reply.id != CYBERSPACE_ID_MSG { return Err(ContractError::UnknownReplyId { id: reply.id }); } - // let res = match reply.result { - // ContractResult::Ok(_) => Response::new(), - // ContractResult::Err(_) => Response::new() - // }; Ok(Response::new()) } diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 6ae4eb6..4bdf7e6 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -4,6 +4,7 @@ use std::backtrace::Backtrace; use cosmwasm_std::{RecoverPubkeyError, StdError}; use cw721_base::ContractError as CW721ContractError; use thiserror::Error; +use cyber_std::particle::ParticleError; #[derive(Error, Debug, PartialEq)] pub enum ContractError { @@ -32,6 +33,9 @@ pub enum ContractError { // ----- + #[error("Invalid data for the particle")] + InvalidParticleData {}, + #[error("Invalid particle")] InvalidParticle {}, @@ -80,6 +84,16 @@ pub enum ContractError { }, } +impl From for ContractError { + fn from(msg: ParticleError) -> ContractError { + match msg { + ParticleError::InvalidParticleData {} => ContractError::InvalidParticleData {}, + ParticleError::InvalidParticle {} => ContractError::InvalidParticle {}, + ParticleError::InvalidParticleVersion {} => ContractError::InvalidParticleVersion {} + } + } +} + impl From for ContractError { fn from(msg: CW721ContractError) -> ContractError { match msg { diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index fb08990..815fe88 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -1,8 +1,4 @@ use std::ops::{Add, Mul}; -use std::str::FromStr; - -use cid::{Cid, Version}; -use cid::multihash::{Code, MultihashDigest}; use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, Uint128}; use cw2::{get_contract_version, set_contract_version}; use cw721::{Cw721Execute, Cw721Query}; @@ -10,6 +6,7 @@ use cw721_base::MintMsg; use cw_utils::must_pay; use cyber_std::{CyberMsgWrapper, Link}; +use cyber_std::particle::{check_particle, prepare_particle}; use crate::error::ContractError; use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address, prepare_cyberlink_submsg}; @@ -20,7 +17,7 @@ type Response = cosmwasm_std::Response; // TODO discuss and make this configurable in config const CONSTITUTION: &str = "QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV"; -pub const CYBERLINK_ID_MSG: u64 = 42; +pub const CYBERSPACE_ID_MSG: u64 = 420; pub fn execute_create_passport( deps: DepsMut, @@ -50,9 +47,9 @@ pub fn execute_create_passport( } } - let nick_particle = _prepare_particle(nickname.clone()); - let avatar_particle = _check_particle(avatar.clone())?; - let address_particle = _prepare_particle(info.clone().sender.into()); + let nick_particle = prepare_particle(nickname.clone())?; + let avatar_particle = check_particle(avatar.clone())?; + let address_particle = prepare_particle(info.clone().sender.into())?; let config = CONFIG.load(deps.storage)?; @@ -129,34 +126,6 @@ pub fn execute_create_passport( ) } -// TODO move to cyber-std -fn _prepare_particle(input: String) -> Cid { - // unixfs/dagnode/proto shortcut - let length: u8 = input.len() as u8; - let mut raw: Vec = vec![10, length.add(6) as u8, 8, 2, 18, length]; - raw.append(&mut input.as_bytes().to_vec()); - raw.append(&mut vec![24, length]); - - let h = Code::Sha2_256.digest(&raw.as_slice()); - let particle = Cid::new_v0(h).unwrap(); - particle -} - -// TODO move to cyber-std -fn _check_particle(input: String) -> Result { - let particle:Cid; - let try_particle = Cid::from_str(&input.clone()); - if try_particle.is_ok() { - particle = try_particle.unwrap(); - if particle.version() != Version::V0 { - return Err(ContractError::InvalidParticleVersion {}); - } - } else { - return Err(ContractError::InvalidParticle {}); - } - Ok(particle) -} - pub fn execute_update_name( deps: DepsMut, env: Env, @@ -214,8 +183,8 @@ pub fn execute_update_name( } )?; - let nick_particle = _prepare_particle(new_name.clone()); - let address_particle = _prepare_particle(info.clone().sender.into()); + let nick_particle = prepare_particle(new_name.clone())?; + let address_particle = prepare_particle(info.clone().sender.into())?; let config = CONFIG.load(deps.storage)?; @@ -271,8 +240,8 @@ pub fn execute_update_avatar( None => return Err(ContractError::TokenNotFound {}), })?; - let avatar_particle = _check_particle(new_avatar.clone())?; - let address_particle = _prepare_particle(info.clone().sender.into()); + let avatar_particle = check_particle(new_avatar.clone())?; + let address_particle = prepare_particle(info.clone().sender.into())?; let config = CONFIG.load(deps.storage)?; @@ -305,9 +274,11 @@ pub fn execute_proof_address( env: Env, info: MessageInfo, nickname: String, - address: String, + mut address: String, signature: Binary ) -> Result { + address = address.to_lowercase(); + if !NICKNAMES.has(deps.storage, &nickname.clone()) { return Err(ContractError::NicknameNotFound {}); }; @@ -361,8 +332,8 @@ pub fn execute_proof_address( }); } - let proved_address_particle = _prepare_particle(address.clone()); - let address_particle = _prepare_particle(info.clone().sender.into()); + let proved_address_particle = prepare_particle(address.clone())?; + let address_particle = prepare_particle(info.clone().sender.into())?; let config = CONFIG.load(deps.storage)?; @@ -395,8 +366,10 @@ pub fn execute_remove_address( env: Env, info: MessageInfo, nickname: String, - address: String, + mut address: String, ) -> Result { + address = address.to_lowercase(); + if !NICKNAMES.has(deps.storage, &nickname.clone()) { return Err(ContractError::NicknameNotFound {}); }; @@ -517,9 +490,9 @@ pub fn execute_transfer_nft( } } - let nick_particle = _prepare_particle(nickname.clone()); - let avatar_particle = _check_particle(avatar.clone())?; - let address_particle = _prepare_particle(new_owner.clone().to_string()); + let nick_particle = prepare_particle(nickname.clone())?; + let avatar_particle = check_particle(avatar.clone())?; + let address_particle = prepare_particle(new_owner.clone().to_string())?; // link passport to new owner // prepare nickname <-> address <-> avatar cyberlinks @@ -611,8 +584,8 @@ pub fn execute_burn( }; NICKNAMES.remove(deps.storage, &token_info.clone().extension.nickname); - let nick_particle = _prepare_particle(token_info.clone().extension.nickname); - let cyberhole_particle = _prepare_particle("cyberhole".into()); + let nick_particle = prepare_particle(token_info.clone().extension.nickname)?; + let cyberhole_particle = prepare_particle("cyberhole".into())?; if ACTIVE.has(deps.storage, &info.clone().sender) { let active = ACTIVE.load(deps.storage, &info.clone().sender)?; diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 85bf79e..fccdb41 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -13,7 +13,7 @@ use sha3::Keccak256; use cyber_std::{CyberMsgWrapper, Link}; use cw_cyber_subgraph::msg::{ExecuteMsg as SubgraphExecuteMsg}; use crate::error::ContractError; -use crate::execute::CYBERLINK_ID_MSG; +use crate::execute::CYBERSPACE_ID_MSG; pub fn proof_address_ethereum( deps: Deps, @@ -25,7 +25,6 @@ pub fn proof_address_ethereum( let mut hasher = Keccak256::new(); let msg = passport_owner.add(":").add(&message); - // TODO add address:particle as sign message, where address is passport holder address hasher.update(format!("\x19Ethereum Signed Message:\n{}", msg.len())); hasher.update(msg); let hash = hasher.finalize(); @@ -224,7 +223,7 @@ pub fn prepare_cyberlink_submsg( links: Vec ) -> SubMsg { return SubMsg { - id: CYBERLINK_ID_MSG, + id: CYBERSPACE_ID_MSG, msg: WasmMsg::Execute { contract_addr, msg: to_binary(&SubgraphExecuteMsg::Cyberlink { @@ -233,6 +232,6 @@ pub fn prepare_cyberlink_submsg( funds: vec![], }.into(), gas_limit: None, - reply_on: ReplyOn::Never + reply_on: ReplyOn::Error } } diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index d18c56f..3eb3923 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -4,7 +4,7 @@ mod tests { use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; use cw721_base::state::TokenInfo; use crate::msg::{ConfigResponse, ExecuteMsg, InstantiateMsg, PortidResponse}; - use crate::state::PassportMetadata; + use crate::state::{LabeledAddress, PassportMetadata}; use crate::contract::{execute, instantiate}; use crate::error::ContractError; use crate::query::{query_active_passport, query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; @@ -125,7 +125,8 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - addresses: Option::from(vec!["0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string()]), + // addresses: Option::from(vec!["0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string()]), + addresses: Option::from(vec![LabeledAddress{ label: None, address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string() }]), }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -138,13 +139,14 @@ mod tests { let info = mock_info(&citizen, &[]); execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap(); - let expected_passport_metadata = PassportMetadata { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: Option::from(vec![ - "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() + LabeledAddress{ label: None, address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string() }, + LabeledAddress{ label: None, address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() } + // "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), + // "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() ]), }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -188,7 +190,8 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - addresses: Option::from(vec!["bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string()]), + // addresses: Option::from(vec!["bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string()]), + addresses: Option::from(vec![LabeledAddress{ label: None, address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() }]), }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -203,7 +206,8 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - addresses: Option::from(vec![]), + // addresses: Option::from(vec![]), + addresses: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -220,7 +224,8 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "name".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - addresses: Option::from(vec![]), + // addresses: Option::from(vec![]), + addresses: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "name".into()).unwrap(), expected_passport_metadata); } diff --git a/contracts/cw-cyber-subgraph/Cargo.toml b/contracts/cw-cyber-subgraph/Cargo.toml index 4081bb2..0f77e61 100644 --- a/contracts/cw-cyber-subgraph/Cargo.toml +++ b/contracts/cw-cyber-subgraph/Cargo.toml @@ -42,18 +42,18 @@ optimize = """docker run --rm -v "$(pwd)":/code \ [dependencies] anyhow = "1" cw0 = "0.10.3" -cw2 = "0.11" -cw20 = "0.11" -cosmwasm-std = { version = "1.0.0-beta" } -cw-utils = { version = "0.11.0" } +cw2 = "0.13.2" +cw20 = "0.13.2" +cosmwasm-std = { version = "1.0.0-beta8" } +cw-utils = { version = "0.13.2" } cyber-std = { path = "../cyber-std" } -cw-storage-plus = "0.10" +cw-storage-plus = "0.13.2" schemars = "0.8.3" -serde = { version = "1.0.103", default-features = false, features = ["derive"] } +serde = { version = "1.0.127", default-features = false, features = ["derive"] } thiserror = { version = "1.0.27" } hex = "0.4" sha2 = { version = "0.9.5", default-features = false } sha3 = "0.9" serde_json = "1.0" -cosmwasm-schema = "1.0.0-beta" +cosmwasm-schema = "1.0.0-beta8" base64 = "0.13" diff --git a/contracts/cw-cyber-subgraph/src/contract.rs b/contracts/cw-cyber-subgraph/src/contract.rs index e918169..b249be8 100644 --- a/contracts/cw-cyber-subgraph/src/contract.rs +++ b/contracts/cw-cyber-subgraph/src/contract.rs @@ -1,12 +1,12 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply}; +use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply, Api, Addr}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; -use crate::execute::{CYBERLINK_ID_MSG, execute_cyberlink, execute_update_executer, execute_update_owner}; +use crate::execute::{CYBERLINK_ID_MSG, execute_cyberlink, execute_update_admins, execute_update_executors}; use crate::query::query_config; use cyber_std::CyberMsgWrapper; @@ -26,14 +26,18 @@ pub fn instantiate( set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; let config = Config { - owner: deps.api.addr_validate(&msg.owner)?, - executer: deps.api.addr_validate(&msg.executer)?, + admins: map_validate(deps.api, &msg.admins)?, + executors: map_validate(deps.api, &msg.executers)?, }; CONFIG.save(deps.storage, &config)?; Ok(Response::default()) } +pub fn map_validate(api: &dyn Api, admins: &[String]) -> StdResult> { + admins.iter().map(|addr| api.addr_validate(addr)).collect() +} + #[cfg_attr(not(feature = "library"), entry_point)] pub fn execute( deps: DepsMut, @@ -42,8 +46,8 @@ pub fn execute( msg: ExecuteMsg, ) -> Result { match msg { - ExecuteMsg::UpdateOwner { new_owner } => execute_update_owner(deps, env, info, new_owner), - ExecuteMsg::UpdateExecuter { new_executer } => execute_update_executer(deps, env, info, new_executer), + ExecuteMsg::UpdateAdmins { new_admins } => execute_update_admins(deps, env, info, new_admins), + ExecuteMsg::UpdateExecutors { new_executors } => execute_update_executors(deps, env, info, new_executors), ExecuteMsg::Cyberlink { links } => execute_cyberlink(deps, env, info, links), } } diff --git a/contracts/cw-cyber-subgraph/src/execute.rs b/contracts/cw-cyber-subgraph/src/execute.rs index 5e6537d..4b40f67 100644 --- a/contracts/cw-cyber-subgraph/src/execute.rs +++ b/contracts/cw-cyber-subgraph/src/execute.rs @@ -3,49 +3,49 @@ use cosmwasm_std::{attr, DepsMut, Env, MessageInfo, StdResult, SubMsg}; use crate::error::ContractError; use crate::state::CONFIG; use cyber_std::{create_cyberlink_msg, Link, CyberMsgWrapper}; +use crate::contract::map_validate; type Response = cosmwasm_std::Response; - pub const CYBERLINK_ID_MSG: u64 = 42; -pub fn execute_update_owner( +pub fn execute_update_admins( deps: DepsMut, _env: Env, info: MessageInfo, - new_owner: String, + new_admins: Vec, ) -> Result { let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.owner { + if !cfg.can_modify(info.sender.as_ref()) { return Err(ContractError::Unauthorized {}); } - let owner = deps.api.addr_validate(&new_owner)?; + let admins = map_validate(deps.api, &new_admins)?; CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { - cfg.owner = owner; + cfg.admins = admins; Ok(cfg) })?; - Ok(Response::new().add_attributes(vec![attr("action", "update_owner")])) + Ok(Response::new().add_attributes(vec![attr("action", "update_admins")])) } -pub fn execute_update_executer( +pub fn execute_update_executors( deps: DepsMut, _env: Env, info: MessageInfo, - new_executer: String, + new_executors: Vec, ) -> Result { let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.owner { + if !cfg.can_modify(info.sender.as_ref()) { return Err(ContractError::Unauthorized {}); } - let executer = deps.api.addr_validate(&new_executer)?; + let executors = map_validate(deps.api, &new_executors)?; CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { - cfg.executer = executer; + cfg.executors = executors; Ok(cfg) })?; - Ok(Response::new().add_attributes(vec![attr("action", "update_executer")])) + Ok(Response::new().add_attributes(vec![attr("action", "update_executors")])) } pub fn execute_cyberlink( @@ -55,7 +55,7 @@ pub fn execute_cyberlink( cyberlink: Vec, ) -> Result { let cfg = CONFIG.load(deps.storage)?; - if info.sender != cfg.executer { + if !cfg.can_execute(info.sender.as_ref()) { return Err(ContractError::Unauthorized {}); } diff --git a/contracts/cw-cyber-subgraph/src/msg.rs b/contracts/cw-cyber-subgraph/src/msg.rs index 00a0191..b0358d1 100644 --- a/contracts/cw-cyber-subgraph/src/msg.rs +++ b/contracts/cw-cyber-subgraph/src/msg.rs @@ -4,8 +4,8 @@ use cyber_std::Link; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { - pub owner: String, - pub executer: String, + pub admins: Vec, + pub executers: Vec, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] @@ -14,11 +14,11 @@ pub enum ExecuteMsg { Cyberlink { links: Vec }, - UpdateOwner { - new_owner: String + UpdateAdmins { + new_admins: Vec }, - UpdateExecuter { - new_executer: String + UpdateExecutors { + new_executors: Vec }, } diff --git a/contracts/cw-cyber-subgraph/src/query.rs b/contracts/cw-cyber-subgraph/src/query.rs index f939c11..f447b64 100644 --- a/contracts/cw-cyber-subgraph/src/query.rs +++ b/contracts/cw-cyber-subgraph/src/query.rs @@ -1,10 +1,18 @@ use cosmwasm_std::{Deps, StdResult}; -use crate::state::{CONFIG, Config}; +use crate::state::{CONFIG}; +use serde::{Deserialize, Serialize}; +use schemars::JsonSchema; -pub fn query_config(deps: Deps) -> StdResult { +pub fn query_config(deps: Deps) -> StdResult { let cfg = CONFIG.load(deps.storage)?; - Ok(Config { - owner: cfg.owner, - executer: cfg.executer + Ok(ConfigResponse { + admins: cfg.admins.into_iter().map(|a| a.into()).collect(), + executors: cfg.executors.into_iter().map(|a| a.into()).collect() }) } + +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +pub struct ConfigResponse { + pub admins: Vec, + pub executors: Vec, +} diff --git a/contracts/cw-cyber-subgraph/src/state.rs b/contracts/cw-cyber-subgraph/src/state.rs index d4f1566..1ed5ef1 100644 --- a/contracts/cw-cyber-subgraph/src/state.rs +++ b/contracts/cw-cyber-subgraph/src/state.rs @@ -6,8 +6,28 @@ use cw_storage_plus::Item; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct Config { - pub owner: Addr, - pub executer : Addr + pub admins: Vec, + pub executors : Vec +} + +impl Config { + pub fn is_admin(&self, addr: impl AsRef) -> bool { + let addr = addr.as_ref(); + self.admins.iter().any(|a| a.as_ref() == addr) + } + + pub fn is_executor(&self, addr: impl AsRef) -> bool { + let addr = addr.as_ref(); + self.executors.iter().any(|a| a.as_ref() == addr) + } + + pub fn can_modify(&self, addr: &str) -> bool { + self.is_admin(addr) + } + + pub fn can_execute(&self, addr: &str) -> bool { + self.is_executor(addr) + } } pub const CONFIG_KEY: &str = "config"; From 147b59eb3e3548bbaf540ebc68ec4b81ca2c8268 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Mon, 28 Feb 2022 22:38:59 +0800 Subject: [PATCH 36/69] Passport refactoring --- contracts/cw-cyber-passport/src/contract.rs | 2 +- contracts/cw-cyber-passport/src/error.rs | 4 + contracts/cw-cyber-passport/src/execute.rs | 417 +++++++++----------- contracts/cw-cyber-passport/src/helpers.rs | 26 +- 4 files changed, 222 insertions(+), 227 deletions(-) diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index ba853fb..2b5cc58 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -1,6 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{Binary, ContractResult, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to_binary}; +use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to_binary}; use cyber_std::CyberMsgWrapper; use crate::error::ContractError; diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index c9b490c..ca755f2 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -41,6 +41,9 @@ pub enum ContractError { #[error("Wrong amount for the name")] WrongAmountForName {}, + #[error("Name is not valid")] + NotValidName {}, + #[error("Nickname already exists")] NicknameAlreadyExists {}, @@ -54,6 +57,7 @@ pub enum ContractError { IsNotEligible { msg: String }, // ----- + // TODO check this overwrites of error messages #[error("Invalid hash format")] InvalidHashFormat, diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 94ec712..20e9d58 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -3,17 +3,16 @@ use std::str::FromStr; use cid::{Cid, Version}; use cid::multihash::{Code, MultihashDigest}; -use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, ReplyOn, SubMsg, to_binary, Uint128, WasmMsg}; +use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, Uint128}; use cw2::{get_contract_version, set_contract_version}; use cw721::{Cw721Execute, Cw721Query}; use cw721_base::MintMsg; use cw_utils::must_pay; -use cw_cyber_subgraph::msg::{ExecuteMsg as SubgraphExecuteMsg}; use cyber_std::{CyberMsgWrapper, Link}; use crate::error::ContractError; -use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address}; +use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address, prepare_cyberlink_submsg}; use crate::state::{ACTIVE, AddressPortID, Extension, NICKNAMES, PassportContract, PassportMetadata, PORTID}; use crate::state::{Config, CONFIG}; @@ -37,9 +36,15 @@ pub fn execute_create_passport( let cw721_contract = PassportContract::default(); let nickname_length = nickname.clone().len(); - if nickname_length < 9 { + + if nickname_length > 32 && nickname_length < 3 { + return Err(ContractError::NotValidName {}); + } + + if nickname_length < 8 { let must_pay = must_pay(&info, "boot").unwrap_or_default(); - let to_pay = Uint128::new(1_000_000_000).checked_pow(9-nickname_length as u32).unwrap(); + let mul = 10u64.checked_pow(8-nickname_length as u32).unwrap(); + let to_pay = Uint128::new(1_000_000).mul(Uint128::from(mul)); if must_pay != to_pay { return Err(ContractError::WrongAmountForName {}); } @@ -49,57 +54,42 @@ pub fn execute_create_passport( let avatar_particle = _check_particle(avatar.clone())?; let address_particle = _prepare_particle(info.clone().sender.into()); - let config = CONFIG.load(deps.storage)?; - // nickname <-> address <-> avatar - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; - - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare nickname <-> address <-> avatar cyberlinks + // nickname <-> address + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ] + ); + + // address <-> avatar cyberlinks + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); - let last_portid = PORTID.load(deps.storage).unwrap().add(1); + let new_last_portid = PORTID.load(deps.storage).unwrap().add(1); let mint_msg = MintMsg { - token_id: last_portid.to_string(), + token_id: new_last_portid.to_string(), owner: info.clone().sender.into(), token_uri: None, extension: PassportMetadata { @@ -109,21 +99,23 @@ pub fn execute_create_passport( }, }; - PORTID.save(deps.storage, &last_portid)?; + PORTID.save(deps.storage, &new_last_portid)?; NICKNAMES.save( deps.storage, &nickname, &AddressPortID{ address: info.clone().sender, - portid: last_portid.to_string() + portid: new_last_portid.to_string() } )?; + // set this passport as active if it's the first one if !ACTIVE.has(deps.storage, &info.clone().sender) { - ACTIVE.save(deps.storage, &info.clone().sender, &last_portid.to_string())?; + ACTIVE.save(deps.storage, &info.clone().sender, &new_last_portid.to_string())?; } + // contract itself can only mint let internal_info = MessageInfo { sender: env.clone().contract.address, funds: info.funds, @@ -137,8 +129,8 @@ pub fn execute_create_passport( ) } +// TODO move to cyber-std fn _prepare_particle(input: String) -> Cid { - // unixfs/dagnode/proto shortcut let length: u8 = input.len() as u8; let mut raw: Vec = vec![10, length.add(6) as u8, 8, 2, 18, length]; @@ -150,6 +142,7 @@ fn _prepare_particle(input: String) -> Cid { particle } +// TODO move to cyber-std fn _check_particle(input: String) -> Result { let particle:Cid; let try_particle = Cid::from_str(&input.clone()); @@ -180,6 +173,11 @@ pub fn execute_update_name( }; let nickname_length = new_name.clone().len(); + + if nickname_length > 32 && nickname_length < 3 { + return Err(ContractError::NotValidName {}); + } + if nickname_length < 8 { let must_pay = must_pay(&info, "boot").unwrap_or_default(); let mul = 10u64.checked_pow(8-nickname_length as u32).unwrap(); @@ -221,28 +219,20 @@ pub fn execute_update_name( let config = CONFIG.load(deps.storage)?; - // nickname <-> address - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare new nickname <-> address cyberlinks + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ] + ); Ok(Response::new() .add_submessage(name_subgraph_submsg) @@ -286,28 +276,20 @@ pub fn execute_update_avatar( let config = CONFIG.load(deps.storage)?; - // nickname <-> address - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare new avatar <-> address cyberlinks + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); Ok(Response::new() .add_submessage(avatar_subgraph_submsg) @@ -337,6 +319,7 @@ pub fn execute_proof_address( return Err(ContractError::Unauthorized {}); } + // check address type and call needed proof function let proof_res:bool; if decode_address(&address).is_err() { proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), info.sender.to_string(), CONSTITUTION.into(), signature) @@ -350,7 +333,8 @@ pub fn execute_proof_address( })?; } - + // save address if not exists or there is enought space for address (<=8) + // TODO discuss to make max address count configurable if proof_res { let mut token_info = cw721_contract.tokens.load(deps.storage, &address_portid.clone().portid)?; if token_info.extension.addresses.is_some() { @@ -383,27 +367,19 @@ pub fn execute_proof_address( let config = CONFIG.load(deps.storage)?; // proved_address <-> address - let proof_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.proof_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: proved_address_particle.clone().into(), - }, - Link{ - from: proved_address_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + let proof_subgraph_submsg = prepare_cyberlink_submsg( + config.proof_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: proved_address_particle.clone().into(), + }, + Link{ + from: proved_address_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); Ok(Response::new() .add_submessage(proof_subgraph_submsg) @@ -432,6 +408,7 @@ pub fn execute_remove_address( return Err(ContractError::Unauthorized {}); } + // delete given address from passport metadata cw721_contract .tokens .update(deps.storage, &address_portid.clone().portid, |token| match token { @@ -439,7 +416,11 @@ pub fn execute_remove_address( let mut addresses = token_info.clone().extension.addresses.unwrap(); let index = addresses.iter().position(|x| *x == address.clone()).unwrap(); addresses.remove(index); - token_info.extension.addresses = Some(addresses); + if addresses.len() == 0 { + token_info.extension.addresses = None; + } else { + token_info.extension.addresses = Some(addresses); + } Ok(token_info) } None => return Err(ContractError::TokenNotFound {}), @@ -454,7 +435,8 @@ pub fn execute_remove_address( } // proved addresses are empty during mint -// allow owner to mint passports +// allow owner to mint passports, used only during development stage +// TODO disable before release pub fn execute_mint( deps: DepsMut, env: Env, @@ -470,6 +452,7 @@ pub fn execute_mint( return Err(ContractError::InvalidInitialization {}); } + // contract itself can only mint let internal_info = MessageInfo { sender: env.clone().contract.address, funds: info.funds, @@ -493,6 +476,10 @@ pub fn execute_transfer_nft( let mut nickname = String::default(); let mut avatar = String::default(); + + let new_owner = deps.api.addr_validate(&recipient)?; + + // clear proved addresses cw721_contract .tokens .update(deps.storage, &token_id.clone(), |token| match token { @@ -508,15 +495,18 @@ pub fn execute_transfer_nft( if !NICKNAMES.has(deps.storage, &nickname.clone()) { return Err(ContractError::NicknameNotFound {}); }; + + // map nickname to new owner NICKNAMES.save( deps.storage, &nickname.clone(), &AddressPortID{ - address: info.clone().sender, + address: new_owner.clone(), portid: token_id.clone() } )?; + // clear this passport as active if ACTIVE.has(deps.storage, &info.clone().sender) { let active = ACTIVE.load(deps.storage, &info.clone().sender)?; if active == token_id { @@ -526,52 +516,38 @@ pub fn execute_transfer_nft( let nick_particle = _prepare_particle(nickname.clone()); let avatar_particle = _check_particle(avatar.clone())?; - let address_particle = _prepare_particle(info.clone().sender.into()); + let address_particle = _prepare_particle(new_owner.clone().to_string()); - // nickname <-> address <-> avatar - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: address_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; - - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: address_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: address_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // link passport to new owner + // prepare nickname <-> address <-> avatar cyberlinks + // nickname <-> address + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: address_particle.clone().into() + }, + ] + ); + // address <-> avatar + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: address_particle.clone().into(), + to: avatar_particle.clone().into() + }, + Link{ + from: avatar_particle.clone().into(), + to: address_particle.clone().into() + } + ] + ); let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; Ok(response @@ -643,53 +619,38 @@ pub fn execute_burn( } let config = CONFIG.load(deps.storage)?; - // avatar <-> cyberhole <-> nickname - let name_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.name_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: cyberhole_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), - to: cyberhole_particle.clone().into() - }, - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; - let avatar_subgraph_submsg = SubMsg { - id: CYBERLINK_ID_MSG, - msg: WasmMsg::Execute { - contract_addr: config.avatar_subspace.into(), - msg: to_binary(&SubgraphExecuteMsg::Cyberlink { - links: vec![ - Link{ - from: cyberhole_particle.clone().into(), - to: token_info.extension.avatar.clone().into() - }, - Link{ - from: token_info.extension.avatar.clone().into(), - to: cyberhole_particle.clone().into() - } - ], - })?, - funds: vec![], - }.into(), - gas_limit: None, - reply_on: ReplyOn::Success - }; + // prepare avatar <-> cyberhole <-> nickname cyberlinks + // cyberhole <-> nickname + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subspace.into(), + vec![ + Link{ + from: cyberhole_particle.clone().into(), + to: nick_particle.clone().into(), + }, + Link{ + from: nick_particle.clone().into(), + to: cyberhole_particle.clone().into() + }, + ] + ); + // cyberhole <-> avatar + let avatar_subgraph_submsg = prepare_cyberlink_submsg( + config.avatar_subspace.into(), + vec![ + Link{ + from: cyberhole_particle.clone().into(), + to: token_info.extension.avatar.clone().into() + }, + Link{ + from: token_info.extension.avatar.clone().into(), + to: cyberhole_particle.clone().into() + } + ] + ); let response = cw721_contract.burn(deps, env, info, token_id)?; - Ok(response .add_submessage(name_subgraph_submsg) .add_submessage(avatar_subgraph_submsg) @@ -712,7 +673,10 @@ pub fn execute_set_minter( let cw721_contract = PassportContract::default(); cw721_contract.minter.save(deps.storage, &new_minter)?; - Ok(Response::new().add_attribute("action", "set_minter")) + Ok(Response::new().add_attributes(vec![ + attr("action", "set_minter"), + attr("action", new_minter.to_string()) + ])) } pub fn execute_set_owner( @@ -738,7 +702,8 @@ pub fn execute_set_owner( )?; Ok(Response::new().add_attributes(vec![ - attr("action", "update_owner") + attr("action", "update_owner"), + attr("address", new_owner.to_string()), ])) } @@ -753,7 +718,9 @@ pub fn execute_set_active( if nft_owner.owner != info.clone().sender { return Err(ContractError::Unauthorized {}); } + ACTIVE.save(deps.storage, &info.clone().sender, &token_id.clone())?; + Ok(Response::new().add_attributes(vec![ attr("action", "set_active"), attr("address", info.sender.to_string()), @@ -782,15 +749,18 @@ pub fn execute_set_subspaces( CONFIG.update( deps.storage, |mut config| -> Result { - config.name_subspace = name_subspace; - config.avatar_subspace = avatar_subspace; - config.proof_subspace = proof_subspace; + config.name_subspace = name_subspace.clone(); + config.avatar_subspace = avatar_subspace.clone(); + config.proof_subspace = proof_subspace.clone(); Ok(config) }, )?; Ok(Response::new().add_attributes(vec![ - attr("action", "update_subspaces") + attr("action", "update_subspaces"), + attr("name_subspace", name_subspace.to_string()), + attr("avatar_subspace", avatar_subspace.to_string()), + attr("proof_subspace", proof_subspace.to_string()), ])) } @@ -806,7 +776,8 @@ pub fn try_migrate( CONFIG.save(deps.storage, &config.unwrap())? } - Ok(Response::new() - .add_attribute("method", "try_migrate") - .add_attribute("version", contract_version.version)) + Ok(Response::new().add_attributes(vec![ + attr("method", "try_migrate"), + attr("version", contract_version.version), + ])) } diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 7b71de7..c077455 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -2,7 +2,7 @@ use std::convert::TryInto; use std::ops::Add; use bech32::{ToBase32, Variant}; -use cosmwasm_std::{Addr, Binary, Deps, from_binary, StdError, StdResult}; +use cosmwasm_std::{Addr, Binary, Deps, from_binary, ReplyOn, StdError, StdResult, SubMsg, to_binary, WasmMsg}; use primitive_types::H256; use ripemd160::Digest as Ripemd160Digest; use ripemd160::Ripemd160; @@ -10,8 +10,10 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use sha2::Sha256; use sha3::Keccak256; - +use cyber_std::{CyberMsgWrapper, Link}; +use cw_cyber_subgraph::msg::{ExecuteMsg as SubgraphExecuteMsg}; use crate::error::ContractError; +use crate::execute::CYBERLINK_ID_MSG; pub fn proof_address_ethereum( deps: Deps, @@ -169,7 +171,7 @@ pub fn proof_address_cosmos( } /// Converts user pubkey into Addr with given prefix -fn pub_key_to_address(deps: &Deps, pub_key: &[u8], prefix: &str) -> StdResult { +fn pub_key_to_address(_deps: &Deps, pub_key: &[u8], prefix: &str) -> StdResult { let compressed_pub_key = to_compressed_pub_key(pub_key)?; let mut ripemd160_hasher = Ripemd160::new(); ripemd160_hasher.update(Sha256::digest(&compressed_pub_key)); @@ -214,3 +216,21 @@ pub struct CosmosSignature { pub_key: Binary, signature: Binary, } + +pub fn prepare_cyberlink_submsg( + contract_addr: String, + links: Vec +) -> SubMsg { + return SubMsg { + id: CYBERLINK_ID_MSG, + msg: WasmMsg::Execute { + contract_addr, + msg: to_binary(&SubgraphExecuteMsg::Cyberlink { + links + }).unwrap(), + funds: vec![], + }.into(), + gas_limit: None, + reply_on: ReplyOn::Never + } +} From 0489ca54fa1bd8c00df3b4c164b61c2bb6c550ba Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Mon, 28 Feb 2022 23:29:03 +0800 Subject: [PATCH 37/69] Gift refactored --- Cargo.lock | 52 ++++++++++++++ contracts/cw-cyber-airdrop/Cargo.toml | 3 +- contracts/cw-cyber-airdrop/src/contract.rs | 2 + contracts/cw-cyber-airdrop/src/execute.rs | 82 +++++++++++++--------- contracts/cw-cyber-airdrop/src/msg.rs | 1 + contracts/cw-cyber-airdrop/src/state.rs | 1 + 6 files changed, 106 insertions(+), 35 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e29a44f..faa7e22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,6 +268,7 @@ dependencies = [ "cw-storage-plus 0.10.3", "cw-utils", "cw0", + "cw1-subkeys", "cw2 0.11.1", "cw20", "hex", @@ -375,6 +376,51 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cw1" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1a86a410667d993f05b9a31c4820c1b9b4274266205d2286f1a7fbf8dba96" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", +] + +[[package]] +name = "cw1-subkeys" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a6bad25c053e4e4816736030cc0a4105c9021d9fb3c5305d420a448132363c" +dependencies = [ + "cosmwasm-std", + "cw-storage-plus 0.11.1", + "cw-utils", + "cw1", + "cw1-whitelist", + "cw2 0.11.1", + "schemars", + "semver", + "serde", + "thiserror", +] + +[[package]] +name = "cw1-whitelist" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e868d50e4b88839ffbb8d0257c3f216ada4762d32cdb246c711b45b4e4c971d" +dependencies = [ + "cosmwasm-std", + "cw-storage-plus 0.11.1", + "cw-utils", + "cw1", + "cw2 0.11.1", + "schemars", + "serde", + "thiserror", +] + [[package]] name = "cw2" version = "0.10.3" @@ -830,6 +876,12 @@ dependencies = [ "syn", ] +[[package]] +name = "semver" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" + [[package]] name = "serde" version = "1.0.133" diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index 7d69706..ea4b6b8 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -44,10 +44,11 @@ anyhow = "1" cw0 = "0.10.3" cw2 = "0.11" cw20 = "0.11" +cw1-subkeys = "0.11.1" cosmwasm-std = { version = "1.0.0-beta" } cw-utils = { version = "0.11.0" } #cosmwasm-crypto = { version = "1.0.0-beta" } -cw-cyber-passport = { path = "../cw-cyber-passport" } +cw-cyber-passport = { path = "../cw-cyber-passport", features = ["library"] } cw-storage-plus = "0.10" schemars = "0.8.3" serde = { version = "1.0.103", default-features = false, features = ["derive"] } diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs index 4b3ac4a..d662830 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -8,6 +8,7 @@ use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target}; use crate::query::{query_config, query_is_claimed, query_merkle_root, query_release_state}; +use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; // Version info, for migration info const CONTRACT_NAME: &str = "crates.io:cw-cyber-gift"; @@ -39,6 +40,7 @@ pub fn instantiate( let config = Config { owner: Some(owner), passport_addr: deps.api.addr_validate(&msg.passport)?, + treasury_addr: deps.api.addr_validate(&msg.treasury)?, target_claim: msg.target_claim, allowed_native: msg.allowed_native, current_balance: msg.initial_balance, diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 8140bc8..08ae69e 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, Uint128, Uint64}; +use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo, Response, StdResult, to_binary, Uint128, Uint64, WasmMsg}; use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; @@ -136,8 +136,6 @@ pub fn execute_claim( return Err(ContractError::GiftIsOver {}); } - // is_eligible(deps.as_ref(), &claim_msg, signature)?; - let res: SignatureResponse = deps.querier.query_wasm_smart( config.clone().passport_addr, &PassportQueryMsg::PassportSigned{ @@ -150,6 +148,7 @@ pub fn execute_claim( return Err(ContractError::IsNotEligible { msg: "passport isn't assigned".to_string() }); } + // returns error of proof is invalid verify_merkle_proof( &deps, &info, @@ -158,10 +157,12 @@ pub fn execute_claim( proof, )?; + // only claim once by given verified address CLAIM.save(deps.storage, gift_claiming_address.clone(), &true)?; update_coefficient(deps.storage, claim_amount, &mut config)?; + // get address of the passport by nickname let res: AddressResponse = deps.querier.query_wasm_smart( config.passport_addr, &PassportQueryMsg::AddressByNickname { @@ -187,21 +188,26 @@ pub fn execute_claim( Ok(cfg) })?; - let res = Response::new() - .add_message(BankMsg::Send { - to_address: res.address.clone(), - amount: vec![Coin { - denom: config.allowed_native, - amount: Uint128::new(CLAIM_BOUNTY), - }], - }) - .add_attributes(vec![ - attr("action", "claim"), - attr("original", gift_claiming_address), - attr("target", res.address), - attr("amount", claim_amount), - ]); - Ok(res) + // send funds from treasury controlled by Congress + Ok(Response::new() + .add_message(WasmMsg::Execute { + contract_addr: config.treasury_addr.to_string(), + msg: to_binary(&BankMsg::Send { + to_address: res.address.clone(), + amount: vec![Coin { + denom: config.allowed_native, + amount: Uint128::new(CLAIM_BOUNTY), + }], + })?, + funds: vec![] + }) + .add_attributes(vec![ + attr("action", "claim"), + attr("original", gift_claiming_address), + attr("target", res.address), + attr("amount", claim_amount), + ]) + ) } pub fn execute_release( @@ -233,16 +239,19 @@ pub fn execute_release( // TODO change HOUR to DAY after tests let amount: Uint128; if release_state.stage.is_zero() { + // first claim, amount 10% of claim amount = release_state.balance_claim.mul(Decimal::percent(10)); release_state.stage_expiration = HOUR.after(&env.block); release_state.stage = Uint64::new(RELEASE_STAGES); } else { if release_state.stage_expiration.is_expired(&env.block) { + // last claim, amount is rest if release_state.stage.u64() == 1 { amount = release_state.balance_claim; release_state.stage_expiration = Expiration::Never {}; release_state.stage = Uint64::zero(); } else { + // amount is equal during all intermediate stages amount = release_state .balance_claim .mul(Decimal::from_ratio(1u128, release_state.stage)); @@ -267,20 +276,25 @@ pub fn execute_release( Ok(cfg) })?; - let res = Response::new() - .add_message(BankMsg::Send { - to_address: release_state.clone().address.into(), - amount: vec![Coin { - denom: config.allowed_native, - amount, - }], - }) - .add_attributes(vec![ - attr("action", "release"), - attr("address", release_state.clone().address.to_string()), - attr("gift_address", gift_address), - attr("stage", release_state.stage.to_string()), - attr("amount", amount), - ]); - Ok(res) + // send funds from treasury controlled by Congress + Ok(Response::new() + .add_message(WasmMsg::Execute { + contract_addr: config.treasury_addr.to_string(), + msg: to_binary(&BankMsg::Send { + to_address: release_state.clone().address.into(), + amount: vec![Coin { + denom: config.allowed_native, + amount + }], + })?, + funds: vec![] + }) + .add_attributes(vec![ + attr("action", "release"), + attr("address", release_state.clone().address.to_string()), + attr("gift_address", gift_address), + attr("stage", release_state.stage.to_string()), + attr("amount", amount), + ]) + ) } diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index cc9b4ed..c8cfccf 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -9,6 +9,7 @@ pub struct InstantiateMsg { /// Owner if none set to info.sender. pub owner: Option, pub passport: String, + pub treasury: String, pub allowed_native: String, pub initial_balance: Uint128, pub coefficient_up: Uint128, diff --git a/contracts/cw-cyber-airdrop/src/state.rs b/contracts/cw-cyber-airdrop/src/state.rs index 90de97d..e9b8bef 100644 --- a/contracts/cw-cyber-airdrop/src/state.rs +++ b/contracts/cw-cyber-airdrop/src/state.rs @@ -11,6 +11,7 @@ pub struct Config { /// Owner If None set, contract is frozen. pub owner: Option, pub passport_addr: Addr, + pub treasury_addr: Addr, /// target_claim amount of claimed accounts to start release (activate gift) pub target_claim: Uint64, pub allowed_native: String, From e6ca444a501af03c3b9150b39cffa1024829e86b Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Apr 2022 22:11:58 +0800 Subject: [PATCH 38/69] Fixed eth ledger, added labeled address to passport --- contracts/cw-cyber-airdrop/examples/schema.rs | 5 +- .../schema/claim_response.json | 27 ++++++++ .../schema/instantiate_msg.json | 6 +- .../cw-cyber-airdrop/schema/query_msg.json | 20 ++++++ contracts/cw-cyber-airdrop/src/contract.rs | 3 +- contracts/cw-cyber-airdrop/src/execute.rs | 62 ++++++++++++------- contracts/cw-cyber-airdrop/src/msg.rs | 7 +++ contracts/cw-cyber-airdrop/src/query.rs | 19 +++++- contracts/cw-cyber-airdrop/src/state.rs | 8 ++- .../cw-cyber-passport/schema/execute_msg.json | 49 ++++++++++++++- .../schema/passport_metadata.json | 21 ++++++- contracts/cw-cyber-passport/src/contract.rs | 7 ++- contracts/cw-cyber-passport/src/error.rs | 3 + contracts/cw-cyber-passport/src/execute.rs | 60 ++++++++++++++++-- contracts/cw-cyber-passport/src/helpers.rs | 4 +- contracts/cw-cyber-passport/src/msg.rs | 5 ++ contracts/cw-cyber-passport/src/query.rs | 2 +- contracts/cw-cyber-passport/src/state.rs | 8 ++- 18 files changed, 272 insertions(+), 44 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/schema/claim_response.json diff --git a/contracts/cw-cyber-airdrop/examples/schema.rs b/contracts/cw-cyber-airdrop/examples/schema.rs index d0fd8b4..893fbef 100644 --- a/contracts/cw-cyber-airdrop/examples/schema.rs +++ b/contracts/cw-cyber-airdrop/examples/schema.rs @@ -2,9 +2,7 @@ use std::env::current_dir; use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_airdrop::msg::{ - ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, MerkleRootResponse, QueryMsg, -}; +use cw_cyber_airdrop::msg::{ClaimResponse, ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, MerkleRootResponse, QueryMsg}; fn main() { let mut out_dir = current_dir().unwrap(); @@ -17,5 +15,6 @@ fn main() { export_schema(&schema_for!(QueryMsg), &out_dir); export_schema(&schema_for!(MerkleRootResponse), &out_dir); export_schema(&schema_for!(IsClaimedResponse), &out_dir); + export_schema(&schema_for!(ClaimResponse), &out_dir); export_schema(&schema_for!(ConfigResponse), &out_dir); } diff --git a/contracts/cw-cyber-airdrop/schema/claim_response.json b/contracts/cw-cyber-airdrop/schema/claim_response.json new file mode 100644 index 0000000..546a97b --- /dev/null +++ b/contracts/cw-cyber-airdrop/schema/claim_response.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ClaimResponse", + "type": "object", + "required": [ + "claim", + "multiplier" + ], + "properties": { + "claim": { + "$ref": "#/definitions/Uint128" + }, + "multiplier": { + "$ref": "#/definitions/Decimal" + } + }, + "definitions": { + "Decimal": { + "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", + "type": "string" + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json index 7b58752..b1c4c3e 100644 --- a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json +++ b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json @@ -9,7 +9,8 @@ "coefficient_up", "initial_balance", "passport", - "target_claim" + "target_claim", + "treasury" ], "properties": { "allowed_native": { @@ -39,6 +40,9 @@ }, "target_claim": { "$ref": "#/definitions/Uint64" + }, + "treasury": { + "type": "string" } }, "definitions": { diff --git a/contracts/cw-cyber-airdrop/schema/query_msg.json b/contracts/cw-cyber-airdrop/schema/query_msg.json index 0831b4a..2c83f6c 100644 --- a/contracts/cw-cyber-airdrop/schema/query_msg.json +++ b/contracts/cw-cyber-airdrop/schema/query_msg.json @@ -46,6 +46,26 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs index d662830..a7601a1 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -7,7 +7,7 @@ use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target}; -use crate::query::{query_config, query_is_claimed, query_merkle_root, query_release_state}; +use crate::query::{query_claim, query_config, query_is_claimed, query_merkle_root, query_release_state}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; // Version info, for migration info @@ -90,6 +90,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { QueryMsg::Config {} => to_binary(&query_config(deps)?), QueryMsg::MerkleRoot {} => to_binary(&query_merkle_root(deps)?), QueryMsg::IsClaimed { address } => to_binary(&query_is_claimed(deps, address)?), + QueryMsg::Claim { address } => to_binary(&query_claim(deps, address)?), QueryMsg::ReleaseState { address } => to_binary(&query_release_state(deps, address)?), } } diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 08ae69e..88224f0 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -2,7 +2,7 @@ use cosmwasm_std::{Addr, attr, BankMsg, Coin, Decimal, DepsMut, Env, MessageInfo use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; -use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; +use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState}; use cw_utils::{Expiration, DAY, HOUR}; use std::ops::{Add, Mul}; use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; @@ -158,7 +158,7 @@ pub fn execute_claim( )?; // only claim once by given verified address - CLAIM.save(deps.storage, gift_claiming_address.clone(), &true)?; + CLAIM.save(deps.storage, gift_claiming_address.clone(), &ClaimState{ claim: claim_amount, multiplier: config.coefficient })?; update_coefficient(deps.storage, claim_amount, &mut config)?; @@ -190,17 +190,24 @@ pub fn execute_claim( // send funds from treasury controlled by Congress Ok(Response::new() - .add_message(WasmMsg::Execute { - contract_addr: config.treasury_addr.to_string(), - msg: to_binary(&BankMsg::Send { - to_address: res.address.clone(), - amount: vec![Coin { - denom: config.allowed_native, - amount: Uint128::new(CLAIM_BOUNTY), - }], - })?, - funds: vec![] - }) + // .add_message(WasmMsg::Execute { + // contract_addr: config.treasury_addr.to_string(), + // msg: to_binary(&BankMsg::Send { + // to_address: res.address.clone(), + // amount: vec![Coin { + // denom: config.allowed_native, + // amount: Uint128::new(CLAIM_BOUNTY), + // }], + // })?, + // funds: vec![] + // }) + .add_message(BankMsg::Send { + to_address: res.address.clone(), + amount: vec![Coin { + denom: config.allowed_native, + amount: Uint128::new(CLAIM_BOUNTY), + }], + }) .add_attributes(vec![ attr("action", "claim"), attr("original", gift_claiming_address), @@ -278,17 +285,24 @@ pub fn execute_release( // send funds from treasury controlled by Congress Ok(Response::new() - .add_message(WasmMsg::Execute { - contract_addr: config.treasury_addr.to_string(), - msg: to_binary(&BankMsg::Send { - to_address: release_state.clone().address.into(), - amount: vec![Coin { - denom: config.allowed_native, - amount - }], - })?, - funds: vec![] - }) + // .add_message(WasmMsg::Execute { + // contract_addr: config.treasury_addr.to_string(), + // msg: to_binary(&BankMsg::Send { + // to_address: release_state.clone().address.into(), + // amount: vec![Coin { + // denom: config.allowed_native, + // amount + // }], + // })?, + // funds: vec![] + // }) + .add_message(BankMsg::Send { + to_address: release_state.clone().address.into(), + amount: vec![Coin { + denom: config.allowed_native, + amount + }], + }) .add_attributes(vec![ attr("action", "release"), attr("address", release_state.clone().address.to_string()), diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index c8cfccf..55b8b15 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -54,6 +54,7 @@ pub enum QueryMsg { Config {}, MerkleRoot {}, IsClaimed { address: String }, + Claim { address: String }, ReleaseState { address: String }, } @@ -84,6 +85,12 @@ pub struct IsClaimedResponse { pub is_claimed: bool, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ClaimResponse { + pub claim: Uint128, + pub multiplier: Decimal +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct ReleaseStateResponse { pub address: String, diff --git a/contracts/cw-cyber-airdrop/src/query.rs b/contracts/cw-cyber-airdrop/src/query.rs index 0024861..705f1eb 100644 --- a/contracts/cw-cyber-airdrop/src/query.rs +++ b/contracts/cw-cyber-airdrop/src/query.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{Deps, StdResult}; -use crate::msg::{ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStateResponse}; +use crate::msg::{ClaimResponse, ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStateResponse}; use crate::state::{CLAIM, CONFIG, MERKLE_ROOT, RELEASE}; pub fn query_config(deps: Deps) -> StdResult { @@ -27,12 +27,27 @@ pub fn query_merkle_root(deps: Deps) -> StdResult { } pub fn query_is_claimed(deps: Deps, address: String) -> StdResult { - let is_claimed = CLAIM.may_load(deps.storage, address)?.unwrap_or(false); + let claim = CLAIM.may_load(deps.storage, address)?; + let mut is_claimed = false; + if claim.is_some() { + is_claimed = true; + } let resp = IsClaimedResponse { is_claimed }; Ok(resp) } +pub fn query_claim(deps: Deps, address: String) -> StdResult { + let claim = CLAIM.load(deps.storage, address)?; + + let resp = ClaimResponse { + claim: claim.claim, + multiplier: claim.multiplier + }; + + Ok(resp) +} + pub fn query_release_state(deps: Deps, address: String) -> StdResult { let release_state = RELEASE.load(deps.storage, address)?; let resp = ReleaseStateResponse { diff --git a/contracts/cw-cyber-airdrop/src/state.rs b/contracts/cw-cyber-airdrop/src/state.rs index e9b8bef..e8eadce 100644 --- a/contracts/cw-cyber-airdrop/src/state.rs +++ b/contracts/cw-cyber-airdrop/src/state.rs @@ -34,6 +34,12 @@ pub struct ReleaseState { pub stage_expiration: Expiration, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ClaimState { + pub claim: Uint128, + pub multiplier: Decimal, +} + pub const CONFIG_KEY: &str = "config"; pub const CONFIG: Item = Item::new(CONFIG_KEY); @@ -41,7 +47,7 @@ pub const MERKLE_ROOT_PREFIX: &str = "merkle_root"; pub const MERKLE_ROOT: Item = Item::new(MERKLE_ROOT_PREFIX); pub const CLAIM_PREFIX: &str = "claim"; -pub const CLAIM: Map = Map::new(CLAIM_PREFIX); +pub const CLAIM: Map = Map::new(CLAIM_PREFIX); pub const RELEASE_PREFIX: &str = "release"; pub const RELEASE: Map = Map::new(RELEASE_PREFIX); diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index 19c720d..f371448 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -214,6 +214,36 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "set_address_label" + ], + "properties": { + "set_address_label": { + "type": "object", + "required": [ + "address", + "nickname" + ], + "properties": { + "address": { + "type": "string" + }, + "label": { + "type": [ + "string", + "null" + ] + }, + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "description": "Transfer is a base message to move a token to another account without triggering actions", "type": "object", @@ -466,6 +496,23 @@ } ] }, + "LabeledAddress": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "label": { + "type": [ + "string", + "null" + ] + } + } + }, "MintMsg_for_PassportMetadata": { "type": "object", "required": [ @@ -512,7 +559,7 @@ "null" ], "items": { - "type": "string" + "$ref": "#/definitions/LabeledAddress" } }, "avatar": { diff --git a/contracts/cw-cyber-passport/schema/passport_metadata.json b/contracts/cw-cyber-passport/schema/passport_metadata.json index f276cee..1782b47 100644 --- a/contracts/cw-cyber-passport/schema/passport_metadata.json +++ b/contracts/cw-cyber-passport/schema/passport_metadata.json @@ -13,7 +13,7 @@ "null" ], "items": { - "type": "string" + "$ref": "#/definitions/LabeledAddress" } }, "avatar": { @@ -22,5 +22,24 @@ "nickname": { "type": "string" } + }, + "definitions": { + "LabeledAddress": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "label": { + "type": [ + "string", + "null" + ] + } + } + } } } diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 2b5cc58..b8b8623 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -4,7 +4,7 @@ use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to use cyber_std::CyberMsgWrapper; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERLINK_ID_MSG}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERLINK_ID_MSG, execute_set_address_label}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; @@ -52,6 +52,11 @@ pub fn execute( avatar_subspace, proof_subspace } => execute_set_subspaces(deps, env, info, name_subspace, avatar_subspace, proof_subspace), + ExecuteMsg::SetAddressLabel { + nickname, + address, + label + } => execute_set_address_label(deps, env, info, nickname, address, label), // Overwrite CW721 methods ExecuteMsg::TransferNft { recipient, token_id} => execute_transfer_nft(deps, env, info, recipient, token_id), ExecuteMsg::SendNft { contract, token_id, msg} => execute_send_nft(deps, env, info, contract, token_id, msg), diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index ca755f2..6ae4eb6 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -22,6 +22,9 @@ pub enum ContractError { #[error("Approval not found for: {spender}")] ApprovalNotFound { spender: String }, + #[error("Address not found")] + AddressNotFound {}, + // ----- #[error("Got a submessage reply with unknown id: {id}")] diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 20e9d58..fb08990 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -13,7 +13,7 @@ use cyber_std::{CyberMsgWrapper, Link}; use crate::error::ContractError; use crate::helpers::{proof_address_cosmos, proof_address_ethereum, decode_address, prepare_cyberlink_submsg}; -use crate::state::{ACTIVE, AddressPortID, Extension, NICKNAMES, PassportContract, PassportMetadata, PORTID}; +use crate::state::{ACTIVE, AddressPortID, Extension, LabeledAddress, NICKNAMES, PassportContract, PassportMetadata, PORTID}; use crate::state::{Config, CONFIG}; type Response = cosmwasm_std::Response; @@ -344,15 +344,15 @@ pub fn execute_proof_address( msg: "Too many addresses".to_string(), }); } - if addresses.iter().position(|x| *x == address.clone()).is_some() { + if addresses.iter().position(|x| *x.address == address.clone()).is_some() { return Err(ContractError::IsNotEligible { msg: "Address already exist".to_string(), }); } - addresses.push(address.clone()); + addresses.push(LabeledAddress { label: None, address: address.clone() }); token_info.extension.addresses = Some(addresses); } else { - token_info.extension.addresses = Some(vec![address.clone()]); + token_info.extension.addresses = Some(vec![LabeledAddress { label: None, address: address.clone() }]); }; cw721_contract.tokens.save(deps.storage, &address_portid.clone().portid, &token_info)?; } else { @@ -414,8 +414,11 @@ pub fn execute_remove_address( .update(deps.storage, &address_portid.clone().portid, |token| match token { Some(mut token_info) => { let mut addresses = token_info.clone().extension.addresses.unwrap(); - let index = addresses.iter().position(|x| *x == address.clone()).unwrap(); - addresses.remove(index); + let index = addresses.iter().position(|x| *x.address == address.clone()); + if index.is_none() { + return Err(ContractError::AddressNotFound {}) + } + addresses.remove(index.unwrap()); if addresses.len() == 0 { token_info.extension.addresses = None; } else { @@ -764,6 +767,51 @@ pub fn execute_set_subspaces( ])) } +pub fn execute_set_address_label( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + address: String, + label: Option, +) -> Result { + + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &nickname.clone())?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env, address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + // find needed address and save label + cw721_contract + .tokens + .update(deps.storage, &address_portid.clone().portid, |token| match token { + Some(mut token_info) => { + let mut addresses = token_info.clone().extension.addresses.unwrap(); + let index = addresses.iter().position(|x| *x.address == address.clone()); + if index.is_none() { + return Err(ContractError::AddressNotFound {}); + } + addresses[index.unwrap()].label = label.clone(); + token_info.extension.addresses = Some(addresses); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "set_address_label"), + attr("nickname", nickname), + attr("address", address), + attr("label", label.unwrap_or_else(|| "".to_string())), + ])) +} + pub fn try_migrate( deps: DepsMut, version: String, diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index c077455..85bf79e 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -60,9 +60,11 @@ pub fn proof_address_ethereum( fn get_recovery_param(v: u8) -> StdResult { match v { + 0 => Ok(0), + 1 => Ok(1), 27 => Ok(0), 28 => Ok(1), - _ => Err(StdError::generic_err("Values of v other than 27 and 28 not supported. Replay protection (EIP-155) cannot be used here.")) + _ => Err(StdError::generic_err("Values of v other than 0, 1, 27 and 28 not supported")) } } diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index a46a16a..8c1a5f0 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -76,6 +76,11 @@ pub enum ExecuteMsg { avatar_subspace: String, proof_subspace: String, }, + SetAddressLabel { + nickname: String, + address: String, + label: Option, + }, // Overwrite Standard CW721 ExecuteMsg diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index 1fb5300..3903735 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -62,7 +62,7 @@ pub fn query_passort_signed( .load(deps.storage, address_portid.portid.as_str())?; let mut result = false; if token_info.clone().extension.addresses.is_some() { - result = token_info.clone().extension.addresses.unwrap().iter().any(|i| i.as_ref() == address); + result = token_info.clone().extension.addresses.unwrap().iter().any(|i| i.address == address); } Ok(SignatureResponse { signed: result }) } diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index e022adf..502f1c5 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -22,6 +22,12 @@ pub struct AddressPortID { pub portid: String, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct LabeledAddress { + pub label: Option, + pub address: String, +} + pub const CONFIG: Item = Item::new("config"); pub const PORTID: Item = Item::new("portid"); @@ -31,7 +37,7 @@ pub const NICKNAMES: Map<&str, AddressPortID> = Map::new("nicknames"); #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)] #[serde(rename_all = "snake_case")] pub struct PassportMetadata { - pub addresses: Option>, + pub addresses: Option>, pub avatar: String, pub nickname: String, } From 68feb098aa03f88982b21a30a7585cb374895419 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Apr 2022 22:19:11 +0800 Subject: [PATCH 39/69] Updated subgraph to use submessages --- contracts/cw-cyber-subgraph/src/contract.rs | 13 +++++++++++-- contracts/cw-cyber-subgraph/src/error.rs | 3 +++ contracts/cw-cyber-subgraph/src/execute.rs | 5 +++-- contracts/cw-cyber-subgraph/src/msg.rs | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/contracts/cw-cyber-subgraph/src/contract.rs b/contracts/cw-cyber-subgraph/src/contract.rs index 45f1efa..e918169 100644 --- a/contracts/cw-cyber-subgraph/src/contract.rs +++ b/contracts/cw-cyber-subgraph/src/contract.rs @@ -1,12 +1,12 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo}; +use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; -use crate::execute::{execute_cyberlink, execute_update_executer, execute_update_owner}; +use crate::execute::{CYBERLINK_ID_MSG, execute_cyberlink, execute_update_executer, execute_update_owner}; use crate::query::query_config; use cyber_std::CyberMsgWrapper; @@ -55,6 +55,15 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { } } +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn reply(_deps: DepsMut, _env: Env, reply: Reply) -> Result { + if reply.id != CYBERLINK_ID_MSG { + return Err(ContractError::UnknownReplyId { id: reply.id }); + } + Ok(Response::new()) +} + + #[cfg_attr(not(feature = "library"), entry_point)] pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { let version = get_contract_version(deps.storage)?; diff --git a/contracts/cw-cyber-subgraph/src/error.rs b/contracts/cw-cyber-subgraph/src/error.rs index 5914335..64f603e 100644 --- a/contracts/cw-cyber-subgraph/src/error.rs +++ b/contracts/cw-cyber-subgraph/src/error.rs @@ -11,4 +11,7 @@ pub enum ContractError { #[error("Cannot migrate from different contract type: {previous_contract}")] CannotMigrate { previous_contract: String }, + + #[error("Got a submessage reply with unknown id: {id}")] + UnknownReplyId { id: u64 }, } diff --git a/contracts/cw-cyber-subgraph/src/execute.rs b/contracts/cw-cyber-subgraph/src/execute.rs index b0e3d3f..5e6537d 100644 --- a/contracts/cw-cyber-subgraph/src/execute.rs +++ b/contracts/cw-cyber-subgraph/src/execute.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{attr, DepsMut, Env, MessageInfo, StdResult}; +use cosmwasm_std::{attr, DepsMut, Env, MessageInfo, StdResult, SubMsg}; use crate::error::ContractError; use crate::state::CONFIG; @@ -6,6 +6,7 @@ use cyber_std::{create_cyberlink_msg, Link, CyberMsgWrapper}; type Response = cosmwasm_std::Response; +pub const CYBERLINK_ID_MSG: u64 = 42; pub fn execute_update_owner( deps: DepsMut, @@ -59,6 +60,6 @@ pub fn execute_cyberlink( } let msg = create_cyberlink_msg(env.contract.address.to_string(), cyberlink); - Ok(Response::new().add_message(msg)) + Ok(Response::new().add_submessage(SubMsg::reply_on_error(msg, CYBERLINK_ID_MSG))) } diff --git a/contracts/cw-cyber-subgraph/src/msg.rs b/contracts/cw-cyber-subgraph/src/msg.rs index 1f54e2e..00a0191 100644 --- a/contracts/cw-cyber-subgraph/src/msg.rs +++ b/contracts/cw-cyber-subgraph/src/msg.rs @@ -2,7 +2,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use cyber_std::Link; -#[derive(Serialize, Deserialize, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { pub owner: String, pub executer: String, From 1fc7b3e8043d1e58ccf8f03788b921b939ae4cfa Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Tue, 26 Apr 2022 14:11:05 +0800 Subject: [PATCH 40/69] Added cyber-std and tests libs from crates --- Cargo.lock | 9 ++++++--- contracts/cw-cyber-airdrop/Cargo.toml | 4 ++-- contracts/cw-cyber-passport/Cargo.toml | 2 +- contracts/cw-cyber-subgraph/Cargo.toml | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f2632b7..c0475ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -577,10 +577,11 @@ dependencies = [ [[package]] name = "cyber-std" -version = "0.1.0" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f4e8bf17594e02eccf0836407850894f6c61e522482be9120bc79cd356120d7" dependencies = [ "cid 0.8.4", - "cosmwasm-schema", "cosmwasm-std", "cw721", "schemars", @@ -590,7 +591,9 @@ dependencies = [ [[package]] name = "cyber-std-test" -version = "0.1.0" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b643ae21be84bc8090544971db72d9dce90b40abb1858729b9d2b3bc901fa8e3" dependencies = [ "anyhow", "cosmwasm-std", diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index 6ff5d6f..6f1ed0c 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -63,5 +63,5 @@ base64 = "0.13" cosmwasm-schema = { version = "1.0.0-beta8" } cw-multi-test = { version = "0.13.2" } cw1-whitelist = { version = "0.13.2" } -cyber-std = { path = "../cyber-std" } -cyber-std-test = { path = "../cyber-std-test" } +cyber-std = { version = "0.2.0" } +cyber-std-test = { version = "0.2.0" } diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index 1edd5ff..2b94577 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -49,7 +49,7 @@ schemars = "0.8.3" serde = { version = "1.0.127", default-features = false, features = ["derive"] } thiserror = { version = "1.0.26" } cid = "0.7.0" -cyber-std = { path = "../cyber-std" } +cyber-std = { version = "0.2.0" } cw-cyber-subgraph = { path = "../cw-cyber-subgraph" } cw-utils = { version = "0.13.2" } hex = "0.4" diff --git a/contracts/cw-cyber-subgraph/Cargo.toml b/contracts/cw-cyber-subgraph/Cargo.toml index 0f77e61..db088b4 100644 --- a/contracts/cw-cyber-subgraph/Cargo.toml +++ b/contracts/cw-cyber-subgraph/Cargo.toml @@ -46,7 +46,7 @@ cw2 = "0.13.2" cw20 = "0.13.2" cosmwasm-std = { version = "1.0.0-beta8" } cw-utils = { version = "0.13.2" } -cyber-std = { path = "../cyber-std" } +cyber-std = { version = "0.2.0" } cw-storage-plus = "0.13.2" schemars = "0.8.3" serde = { version = "1.0.127", default-features = false, features = ["derive"] } From bbae8fd3cf29f60d1bcaccd3fe973b6669dccd26 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Tue, 26 Apr 2022 15:53:53 +0800 Subject: [PATCH 41/69] Cleaning and refactoring --- contracts/cw-cyber-airdrop/examples/schema.rs | 7 +- .../cw-cyber-airdrop/schema/execute_msg.json | 23 ++- .../schema/instantiate_msg.json | 1 - .../cw-cyber-airdrop/schema/migrate_msg.json | 119 ++++++++++++++ contracts/cw-cyber-airdrop/src/contract.rs | 22 +-- contracts/cw-cyber-airdrop/src/execute.rs | 67 ++++++-- contracts/cw-cyber-airdrop/src/helpers.rs | 12 -- contracts/cw-cyber-airdrop/src/msg.rs | 15 +- contracts/cw-cyber-airdrop/src/tests.rs | 88 ++++------- .../cw-cyber-passport/examples/schema.rs | 3 +- .../cw-cyber-passport/schema/execute_msg.json | 30 ++++ .../cw-cyber-passport/schema/migrate_msg.json | 52 ++++++ .../schema/passport_metadata.json | 6 + contracts/cw-cyber-passport/src/contract.rs | 6 +- contracts/cw-cyber-passport/src/error.rs | 3 + contracts/cw-cyber-passport/src/execute.rs | 148 ++++++++++++------ contracts/cw-cyber-passport/src/helpers.rs | 3 +- contracts/cw-cyber-passport/src/msg.rs | 10 +- contracts/cw-cyber-passport/src/state.rs | 1 + contracts/cw-cyber-passport/src/tests.rs | 75 ++------- .../cw-cyber-subgraph/schema/execute_msg.json | 26 +-- .../schema/instantiate_msg.json | 18 ++- contracts/cw-cyber-subgraph/src/tests.rs | 2 +- 23 files changed, 504 insertions(+), 233 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/schema/migrate_msg.json create mode 100644 contracts/cw-cyber-passport/schema/migrate_msg.json diff --git a/contracts/cw-cyber-airdrop/examples/schema.rs b/contracts/cw-cyber-airdrop/examples/schema.rs index a6900f6..4ebcc48 100644 --- a/contracts/cw-cyber-airdrop/examples/schema.rs +++ b/contracts/cw-cyber-airdrop/examples/schema.rs @@ -2,11 +2,7 @@ use std::env::current_dir; use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_airdrop::msg::{ - ExecuteMsg, InstantiateMsg, QueryMsg, - ConfigResponse, StateResponse, IsClaimedResponse, - ClaimResponse, ReleaseStageStateResponse, MerkleRootResponse -}; +use cw_cyber_airdrop::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, ConfigResponse, StateResponse, IsClaimedResponse, ClaimResponse, ReleaseStageStateResponse, MerkleRootResponse, MigrateMsg}; fn main() { let mut out_dir = current_dir().unwrap(); @@ -17,6 +13,7 @@ fn main() { export_schema(&schema_for!(InstantiateMsg), &out_dir); export_schema(&schema_for!(ExecuteMsg), &out_dir); export_schema(&schema_for!(QueryMsg), &out_dir); + export_schema(&schema_for!(MigrateMsg), &out_dir); export_schema(&schema_for!(MerkleRootResponse), &out_dir); export_schema(&schema_for!(IsClaimedResponse), &out_dir); export_schema(&schema_for!(ClaimResponse), &out_dir); diff --git a/contracts/cw-cyber-airdrop/schema/execute_msg.json b/contracts/cw-cyber-airdrop/schema/execute_msg.json index 838b129..8de878c 100644 --- a/contracts/cw-cyber-airdrop/schema/execute_msg.json +++ b/contracts/cw-cyber-airdrop/schema/execute_msg.json @@ -12,7 +12,6 @@ "type": "object", "properties": { "new_owner": { - "description": "NewOwner if non sent, contract gets locked. Recipients can receive airdrops but owner cannot register new stages.", "type": [ "string", "null" @@ -24,7 +23,6 @@ "additionalProperties": false }, { - "description": "Allows to easily debug", "type": "object", "required": [ "update_passport_addr" @@ -44,6 +42,26 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "update_treasury_addr" + ], + "properties": { + "update_treasury_addr": { + "type": "object", + "required": [ + "new_treasury_addr" + ], + "properties": { + "new_treasury_addr": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -86,7 +104,6 @@ "additionalProperties": false }, { - "description": "Claim does not check if contract has enough funds, owner must ensure it.", "type": "object", "required": [ "claim" diff --git a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json index b1c4c3e..f80f97b 100644 --- a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json +++ b/contracts/cw-cyber-airdrop/schema/instantiate_msg.json @@ -29,7 +29,6 @@ "$ref": "#/definitions/Uint128" }, "owner": { - "description": "Owner if none set to info.sender.", "type": [ "string", "null" diff --git a/contracts/cw-cyber-airdrop/schema/migrate_msg.json b/contracts/cw-cyber-airdrop/schema/migrate_msg.json new file mode 100644 index 0000000..8186a7d --- /dev/null +++ b/contracts/cw-cyber-airdrop/schema/migrate_msg.json @@ -0,0 +1,119 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "type": "object", + "required": [ + "version" + ], + "properties": { + "config": { + "anyOf": [ + { + "$ref": "#/definitions/Config" + }, + { + "type": "null" + } + ] + }, + "state": { + "anyOf": [ + { + "$ref": "#/definitions/State" + }, + { + "type": "null" + } + ] + }, + "version": { + "type": "string" + } + }, + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Config": { + "type": "object", + "required": [ + "allowed_native", + "coefficient_down", + "coefficient_up", + "initial_balance", + "passport_addr", + "target_claim", + "treasury_addr" + ], + "properties": { + "allowed_native": { + "type": "string" + }, + "coefficient_down": { + "$ref": "#/definitions/Uint128" + }, + "coefficient_up": { + "$ref": "#/definitions/Uint128" + }, + "initial_balance": { + "$ref": "#/definitions/Uint128" + }, + "owner": { + "anyOf": [ + { + "$ref": "#/definitions/Addr" + }, + { + "type": "null" + } + ] + }, + "passport_addr": { + "$ref": "#/definitions/Addr" + }, + "target_claim": { + "$ref": "#/definitions/Uint64" + }, + "treasury_addr": { + "$ref": "#/definitions/Addr" + } + } + }, + "Decimal": { + "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", + "type": "string" + }, + "State": { + "type": "object", + "required": [ + "claims", + "coefficient", + "current_balance", + "releases" + ], + "properties": { + "claims": { + "$ref": "#/definitions/Uint64" + }, + "coefficient": { + "$ref": "#/definitions/Decimal" + }, + "current_balance": { + "$ref": "#/definitions/Uint128" + }, + "releases": { + "$ref": "#/definitions/Uint64" + } + } + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs index 2dc3603..e99b583 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -1,12 +1,12 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{has_coins, to_binary, Binary, Coin, Decimal, Deps, DepsMut, Env, Response, StdResult, Uint64, MessageInfo}; +use cosmwasm_std::{to_binary, Binary, Decimal, Deps, DepsMut, Env, Response, StdResult, Uint64, MessageInfo}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::state::{Config, CONFIG, State, STATE}; -use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target}; +use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target, execute_update_treasury, try_migrate}; use crate::query::{query_claim, query_config, query_is_claimed, query_merkle_root, query_release_stage_state, query_release_state, query_state}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; @@ -63,6 +63,9 @@ pub fn execute( ExecuteMsg::UpdatePassportAddr { new_passport_addr: new_passport } => { execute_update_passport(deps, env, info, new_passport) } + ExecuteMsg::UpdateTreasuryAddr { new_treasury_addr: new_treasury } => { + execute_update_treasury(deps, env, info, new_treasury) + } ExecuteMsg::UpdateTarget { new_target } => { execute_update_target(deps, env, info, new_target) } @@ -92,13 +95,14 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { } } +// TODO test migrate #[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { - let version = get_contract_version(deps.storage)?; - if version.contract != CONTRACT_NAME { - return Err(ContractError::CannotMigrate { - previous_contract: version.contract, - }); +pub fn migrate( + deps: DepsMut, + _env: Env, + msg: MigrateMsg, +) -> Result { + match msg { + MigrateMsg { version, config, state } => try_migrate(deps, version, config, state), } - Ok(Response::default()) } diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index b0f8964..8fb01e3 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -2,12 +2,13 @@ use cosmwasm_std::{Addr, attr, BankMsg, Coin, CosmosMsg, Decimal, DepsMut, Empty use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; -use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState, STATE, RELEASE_INFO}; +use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState, STATE, RELEASE_INFO, Config, State}; use cw_utils::{Expiration, DAY, HOUR}; use std::ops::{Add, Mul}; use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; use crate::msg::{AddressResponse, SignatureResponse}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; +use cw2::{get_contract_version, set_contract_version}; const RELEASE_STAGES: u64 = 9; @@ -52,9 +53,9 @@ pub fn execute_update_passport( let passport = deps.api.addr_validate(&new_passport)?; - CONFIG.update(deps.storage, |mut exists| -> StdResult<_> { - exists.passport_addr = passport; - Ok(exists) + CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { + cfg.passport_addr = passport; + Ok(cfg) })?; Ok(Response::new().add_attributes(vec![ @@ -63,6 +64,31 @@ pub fn execute_update_passport( ])) } +pub fn execute_update_treasury( + deps: DepsMut, + _env: Env, + info: MessageInfo, + new_treasury: String, +) -> Result { + let cfg = CONFIG.load(deps.storage)?; + let owner = cfg.owner.ok_or(ContractError::Unauthorized {})?; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + let treasury = deps.api.addr_validate(&new_treasury)?; + + CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { + cfg.treasury_addr = treasury; + Ok(cfg) + })?; + + Ok(Response::new().add_attributes(vec![ + attr("action", "update_treasury"), + attr("treasury", new_treasury), + ])) +} + pub fn execute_update_target( deps: DepsMut, _env: Env, @@ -75,9 +101,9 @@ pub fn execute_update_target( return Err(ContractError::Unauthorized {}); } - CONFIG.update(deps.storage, |mut exists| -> StdResult<_> { - exists.target_claim = new_target; - Ok(exists) + CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { + cfg.target_claim = new_target; + Ok(cfg) })?; Ok(Response::new().add_attributes(vec![ @@ -131,11 +157,6 @@ pub fn execute_claim( let mut state = STATE.load(deps.storage)?; let claim_amount = gift_amount * state.coefficient; - // TODO: delete after debug - println!("{:?}", "execute_claim"); - println!("{:?}", state.coefficient); - println!("{:?}", claim_amount.to_string()); - if state.current_balance < claim_amount { return Err(ContractError::GiftIsOver {}); } @@ -332,3 +353,25 @@ pub fn execute_release( ]) ) } + +pub fn try_migrate( + deps: DepsMut, + version: String, + config: Option, + state: Option, +) -> Result { + let contract_version = get_contract_version(deps.storage)?; + set_contract_version(deps.storage, contract_version.contract, version)?; + + if config.is_some() { + CONFIG.save(deps.storage, &config.unwrap())? + } + if state.is_some() { + STATE.save(deps.storage, &state.unwrap())? + } + + Ok(Response::new().add_attributes(vec![ + attr("method", "try_migrate"), + attr("version", contract_version.version), + ])) +} diff --git a/contracts/cw-cyber-airdrop/src/helpers.rs b/contracts/cw-cyber-airdrop/src/helpers.rs index 4595162..df80899 100644 --- a/contracts/cw-cyber-airdrop/src/helpers.rs +++ b/contracts/cw-cyber-airdrop/src/helpers.rs @@ -19,14 +19,6 @@ pub fn update_coefficient( let initial_balance = config.initial_balance; let current_balance = state.current_balance; - // TODO delete after debug - println!("{:?}", "update_coefficient"); - println!("{:?}", coefficient_up.to_string()); - println!("{:?}", coefficient_down.to_string()); - println!("{:?}", initial_balance.to_string()); - println!("{:?}", current_balance.to_string()); - println!("{:?}", amount.to_string()); - let new_balance_ratio = Decimal::from_ratio(current_balance, initial_balance); let new_coefficient = Decimal::one() @@ -34,10 +26,6 @@ pub fn update_coefficient( .mul(Decimal::from_ratio(coefficient_down, 1u128)) .add(Decimal::from_ratio(coefficient_up, 1u128).mul(new_balance_ratio)); - // TODO delete after debug - println!("{:?}", new_balance_ratio.to_string()); - println!("{:?}", new_coefficient.to_string()); - state.coefficient = new_coefficient; state.current_balance = current_balance - amount; STATE.save(store, &state) diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index 9c56989..40b7eaf 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -3,10 +3,10 @@ use serde::{Deserialize, Serialize}; use cosmwasm_std::{Decimal, Uint128, Uint64}; use cw_utils::Expiration; +use crate::state::{Config, State}; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { - /// Owner if none set to info.sender. pub owner: Option, pub passport: String, pub treasury: String, @@ -22,14 +22,14 @@ pub struct InstantiateMsg { #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { UpdateOwner { - /// NewOwner if non sent, contract gets locked. Recipients can receive airdrops - /// but owner cannot register new stages. new_owner: Option, }, - /// Allows to easily debug UpdatePassportAddr { new_passport_addr: String, }, + UpdateTreasuryAddr { + new_treasury_addr: String, + }, UpdateTarget { new_target: Uint64, }, @@ -37,7 +37,6 @@ pub enum ExecuteMsg { /// MerkleRoot is hex-encoded merkle root. merkle_root: String, }, - /// Claim does not check if contract has enough funds, owner must ensure it. Claim { nickname: String, gift_claiming_address: String, @@ -123,4 +122,8 @@ pub struct AddressResponse { } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct MigrateMsg {} +pub struct MigrateMsg { + pub version: String, + pub config: Option, + pub state: Option, +} diff --git a/contracts/cw-cyber-airdrop/src/tests.rs b/contracts/cw-cyber-airdrop/src/tests.rs index eed96fe..67a5986 100644 --- a/contracts/cw-cyber-airdrop/src/tests.rs +++ b/contracts/cw-cyber-airdrop/src/tests.rs @@ -1,21 +1,11 @@ #[cfg(test)] mod tests { - use std::fmt::Debug; - use std::marker::PhantomData; - use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info, MockApi, MockQuerier, MockStorage}; - use cosmwasm_std::{attr, from_binary, from_slice, BankMsg, Binary, Coin, CosmosMsg, Env, SubMsg, Uint128, Uint64, Empty, Addr, coin, coins, Querier, QuerierResult, Api, Storage, BlockInfo, CustomQuery, OwnedDeps, to_binary, BankQuery}; - use serde::Deserialize; - - use crate::execute::*; - use crate::msg::{ConfigResponse, ExecuteMsg, InstantiateMsg, IsClaimedResponse, MerkleRootResponse, QueryMsg, ReleaseStageStateResponse, ReleaseStateResponse, StateResponse}; + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; + use cosmwasm_std::{attr, from_binary, Binary, Coin, Uint128, Uint64, Empty, Addr, coins, BlockInfo}; + use crate::msg::{ConfigResponse, ExecuteMsg, InstantiateMsg, MerkleRootResponse, QueryMsg, ReleaseStageStateResponse, StateResponse}; use crate::ContractError; - use std::ops::{Deref, DerefMut, Mul}; - use anyhow::{bail, Result as AnyResult}; - use cosmwasm_std::WasmMsg::Execute; use crate::contract::{execute, instantiate, query}; - use cw_multi_test::{next_block, App, AppBuilder, Contract, ContractWrapper, Executor, BankKeeper, WasmKeeper, Module, CosmosRouter, AppResponse, BasicAppBuilder}; - use schemars::JsonSchema; - use serde::de::DeserializeOwned; + use cw_multi_test::{next_block, Contract, ContractWrapper, Executor}; use cyber_std::{CyberMsgWrapper}; use cw_cyber_passport::msg::ExecuteMsg as PassportExecuteMsg; use cyber_std_test::CyberApp; @@ -24,10 +14,10 @@ mod tests { const NATIVE_TOKEN: &str = "boot"; const OWNER: &str = "owner0001"; const CYB1: &str = "bostrom1wnpak7sfawsfv9c8vqe7naxfa4g99lv77d7c0z"; - const CYB2: &str = "cyb0002"; - const CYB3: &str = "cyb0003"; - const CYB4: &str = "cyb0004"; - const SOMEBODY: &str = "somebody"; + // const CYB2: &str = "cyb0002"; + // const CYB3: &str = "cyb0003"; + // const CYB4: &str = "cyb0004"; + // const SOMEBODY: &str = "somebody"; const SPACE1: &str = "space1"; const SPACE2: &str = "space2"; const SPACE3: &str = "space3"; @@ -43,12 +33,6 @@ mod tests { block.height += 1; } - fn mock_env_time(time_delta: u64) -> Env { - let mut env = mock_env(); - env.block.time = env.block.time.plus_seconds(time_delta); - env - } - pub fn contract_gift() -> Box> { let contract = ContractWrapper::new_with_empty( crate::contract::execute, @@ -87,17 +71,6 @@ mod tests { Box::new(contract) } - pub type CyberDeps = OwnedDeps; - - pub fn mock_deps_cyber() -> CyberDeps { - OwnedDeps { - storage: MockStorage::default(), - api: MockApi::default(), - querier: MockQuerier::default(), - custom_query_type: PhantomData, - } - } - fn mock_app(init_funds: &[Coin]) -> CyberApp { let mut app = CyberApp::new(); app.init_modules(|router, _, storage| { @@ -173,7 +146,7 @@ mod tests { let gift_addr = instantiate_gift(app, passport_addr.to_string(), treasury_addr.to_string()); app.update_block(next_block); - app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(OWNER), treasury_addr.clone(), &cw1_subkeys::msg::ExecuteMsg::IncreaseAllowance:: { @@ -190,7 +163,7 @@ mod tests { let proof_subspace = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); app.update_block(next_block); - app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(OWNER), passport_addr.clone(), &PassportExecuteMsg::SetSubspaces { @@ -202,7 +175,7 @@ mod tests { ); app.update_block(next_block); - app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(OWNER), passport_addr.clone(), &PassportExecuteMsg::SetMinter { @@ -216,13 +189,13 @@ mod tests { } #[test] - fn claim1() { + fn proper_flow() { let init_funds = coins(INIT_BALANCE_OWNER.u128(), NATIVE_TOKEN); let mut app = mock_app(&init_funds); let (gift_addr, passport_addr, treasury_addr) = setup_contracts(&mut app); - let res = app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(OWNER), gift_addr.clone(), &ExecuteMsg::RegisterMerkleRoot { @@ -231,7 +204,7 @@ mod tests { &[], ); - let res = app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(CYB1), passport_addr.clone(), &PassportExecuteMsg::CreatePassport { @@ -241,7 +214,7 @@ mod tests { &[], ); - let res = app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(CYB1), passport_addr.clone(), &PassportExecuteMsg::ProofAddress { @@ -252,7 +225,7 @@ mod tests { &[], ); - let res = app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(CYB1), passport_addr.clone(), &PassportExecuteMsg::CreatePassport { @@ -262,7 +235,7 @@ mod tests { &[], ); - let res = app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(CYB1), passport_addr.clone(), &PassportExecuteMsg::ProofAddress { @@ -273,7 +246,7 @@ mod tests { &[], ); - let res = app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(CYB1), gift_addr.clone(), &ExecuteMsg::Claim { @@ -285,7 +258,7 @@ mod tests { &[], ); - let res = app.execute_contract( + let _res = app.execute_contract( Addr::unchecked(CYB1), gift_addr.clone(), &ExecuteMsg::Claim { @@ -306,7 +279,7 @@ mod tests { }, &[], ); - println!("Release [ETH]- {:?}", res); + println!("Release [ETH][{:?}]- {:?}", i, res); let res = app.execute_contract( Addr::unchecked(CYB1), @@ -316,24 +289,25 @@ mod tests { }, &[], ); - println!("Release- [COSMOS]{:?}", res); - - // let info: StateResponse = app.wrap().query_wasm_smart(&gift_addr, &QueryMsg::State {}).unwrap(); - // println!("stage{:?}_ - {:?}", i, info); + println!("Release [CMS][{:?}]- {:?}", i, res); app.update_block(next_hour); } - println!("gift_balance- {:?}", app.wrap().query_balance(&gift_addr, "boot").unwrap()); - println!("treasury_balance- {:?}", app.wrap().query_balance(&treasury_addr, "boot").unwrap()); - println!("passport1_balance- {:?}", app.wrap().query_balance(&Addr::unchecked(CYB1), "boot").unwrap()); - // println!("passport2_balance- {:?}", app.wrap().query_balance(&Addr::unchecked(CYB2), "boot").unwrap()); + println!("GIFT BAL - {:?}", app.wrap().query_balance(&gift_addr, "boot").unwrap()); + println!("TREASURY BAL - {:?}", app.wrap().query_balance(&treasury_addr, "boot").unwrap()); + println!("PASSPORT #1 BAL- {:?}", app.wrap().query_balance(&Addr::unchecked(CYB1), "boot").unwrap()); for i in 0..10 { - let info: ReleaseStageStateResponse = app.wrap().query_wasm_smart(&gift_addr, &QueryMsg::ReleaseStageState { stage: Uint64::from(1u64) }).unwrap(); - println!("stage{:?}_ - {:?}", i, info); + let info: ReleaseStageStateResponse = app.wrap().query_wasm_smart( + &gift_addr, + &QueryMsg::ReleaseStageState { stage: Uint64::from(1u64) } + ).unwrap(); + println!("STAGE {:?} - RELEASES {:?}", i, info.releases.u64()); } + let info: StateResponse = app.wrap().query_wasm_smart(&gift_addr, &QueryMsg::State {}).unwrap(); + println!("STATE - {:?}", info); } diff --git a/contracts/cw-cyber-passport/examples/schema.rs b/contracts/cw-cyber-passport/examples/schema.rs index 0036dac..7eb826c 100644 --- a/contracts/cw-cyber-passport/examples/schema.rs +++ b/contracts/cw-cyber-passport/examples/schema.rs @@ -3,7 +3,7 @@ use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use cw_cyber_passport::state::{Config, PassportMetadata}; fn main() { @@ -15,6 +15,7 @@ fn main() { export_schema(&schema_for!(InstantiateMsg), &out_dir); export_schema(&schema_for!(ExecuteMsg), &out_dir); export_schema(&schema_for!(QueryMsg), &out_dir); + export_schema(&schema_for!(MigrateMsg), &out_dir); export_schema(&schema_for!(Config), &out_dir); export_schema(&schema_for!(PassportMetadata), &out_dir); } diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index f371448..550574a 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -74,6 +74,30 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "update_data" + ], + "properties": { + "update_data": { + "type": "object", + "required": [ + "data", + "nickname" + ], + "properties": { + "data": { + "type": "string" + }, + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -565,6 +589,12 @@ "avatar": { "type": "string" }, + "data": { + "type": [ + "string", + "null" + ] + }, "nickname": { "type": "string" } diff --git a/contracts/cw-cyber-passport/schema/migrate_msg.json b/contracts/cw-cyber-passport/schema/migrate_msg.json new file mode 100644 index 0000000..81c4c07 --- /dev/null +++ b/contracts/cw-cyber-passport/schema/migrate_msg.json @@ -0,0 +1,52 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "type": "object", + "required": [ + "version" + ], + "properties": { + "config": { + "anyOf": [ + { + "$ref": "#/definitions/Config" + }, + { + "type": "null" + } + ] + }, + "version": { + "type": "string" + } + }, + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Config": { + "type": "object", + "required": [ + "avatar_subspace", + "name_subspace", + "owner", + "proof_subspace" + ], + "properties": { + "avatar_subspace": { + "$ref": "#/definitions/Addr" + }, + "name_subspace": { + "$ref": "#/definitions/Addr" + }, + "owner": { + "$ref": "#/definitions/Addr" + }, + "proof_subspace": { + "$ref": "#/definitions/Addr" + } + } + } + } +} diff --git a/contracts/cw-cyber-passport/schema/passport_metadata.json b/contracts/cw-cyber-passport/schema/passport_metadata.json index 1782b47..9a81303 100644 --- a/contracts/cw-cyber-passport/schema/passport_metadata.json +++ b/contracts/cw-cyber-passport/schema/passport_metadata.json @@ -19,6 +19,12 @@ "avatar": { "type": "string" }, + "data": { + "type": [ + "string", + "null" + ] + }, "nickname": { "type": "string" } diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 8d7d6cd..5fe5f8d 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -4,7 +4,7 @@ use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to use cyber_std::CyberMsgWrapper; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERSPACE_ID_MSG, execute_set_address_label}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data}; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; @@ -42,6 +42,7 @@ pub fn execute( ExecuteMsg::CreatePassport {nickname, avatar} => execute_create_passport(deps, env, info, nickname, avatar), ExecuteMsg::UpdateName { old_nickname, new_nickname} => execute_update_name(deps, env, info, old_nickname, new_nickname), ExecuteMsg::UpdateAvatar { nickname, new_avatar} => execute_update_avatar(deps, env, info, nickname, new_avatar), + ExecuteMsg::UpdateData { nickname, data} => execute_update_data(deps, env, info, nickname, data), ExecuteMsg::ProofAddress { nickname, address, signature } => execute_proof_address(deps, env, info, nickname, address, signature), ExecuteMsg::RemoveAddress {nickname, address } => execute_remove_address(deps, env, info, nickname, address), ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), @@ -93,11 +94,12 @@ pub fn reply(_deps: DepsMut, _env: Env, reply: Reply) -> Result, + msg: MigrateMsg, ) -> Result { match msg { MigrateMsg { version, config } => try_migrate(deps, version, config), diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 4bdf7e6..50a80bd 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -51,6 +51,9 @@ pub enum ContractError { #[error("Name is not valid")] NotValidName {}, + #[error("Data is not valid")] + NotValidData {}, + #[error("Nickname already exists")] NicknameAlreadyExists {}, diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 815fe88..89bdcd4 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -15,7 +15,8 @@ use crate::state::{Config, CONFIG}; type Response = cosmwasm_std::Response; -// TODO discuss and make this configurable in config +// TODO discuss and make this configurable in config (or not) +// TODO set to constitution in production deployment const CONSTITUTION: &str = "QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV"; pub const CYBERSPACE_ID_MSG: u64 = 420; @@ -53,7 +54,7 @@ pub fn execute_create_passport( let config = CONFIG.load(deps.storage)?; - // prepare nickname <-> address <-> avatar cyberlinks + // prepare address <-> nickname <-> avatar cyberlinks // nickname <-> address let name_subgraph_submsg = prepare_cyberlink_submsg( config.name_subspace.into(), @@ -69,17 +70,17 @@ pub fn execute_create_passport( ] ); - // address <-> avatar cyberlinks + // nickname <-> avatar cyberlinks let avatar_subgraph_submsg = prepare_cyberlink_submsg( config.avatar_subspace.into(), vec![ Link{ - from: address_particle.clone().into(), + from: nick_particle.clone().into(), to: avatar_particle.clone().into() }, Link{ from: avatar_particle.clone().into(), - to: address_particle.clone().into() + to: nick_particle.clone().into() } ] ); @@ -92,7 +93,8 @@ pub fn execute_create_passport( extension: PassportMetadata { addresses: None, avatar, - nickname: nickname.clone() + nickname: nickname.clone(), + data: None }, }; @@ -241,21 +243,21 @@ pub fn execute_update_avatar( })?; let avatar_particle = check_particle(new_avatar.clone())?; - let address_particle = prepare_particle(info.clone().sender.into())?; + let nick_particle = prepare_particle(nickname.clone())?; let config = CONFIG.load(deps.storage)?; - // prepare new avatar <-> address cyberlinks + // prepare new avatar <-> nickname cyberlinks let avatar_subgraph_submsg = prepare_cyberlink_submsg( config.avatar_subspace.into(), vec![ Link{ - from: address_particle.clone().into(), + from: nick_particle.clone().into(), to: avatar_particle.clone().into() }, Link{ from: avatar_particle.clone().into(), - to: address_particle.clone().into() + to: nick_particle.clone().into() } ] ); @@ -269,6 +271,46 @@ pub fn execute_update_avatar( ])) } +pub fn execute_update_data( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + new_data: String +) -> Result { + let data_length = new_data.clone().len(); + if data_length > 256 && data_length < 3 { + return Err(ContractError::NotValidData {}); + } + + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env.clone(), address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + cw721_contract + .tokens + .update(deps.storage, &address_portid.clone().portid, |token| match token { + Some(mut token_info) => { + token_info.extension.data = Option::from(new_data.clone()); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + Ok(Response::new() + .add_attributes(vec![ + attr("action", "update_data"), + attr("nickname", nickname), + ])) +} + pub fn execute_proof_address( deps: DepsMut, env: Env, @@ -305,7 +347,6 @@ pub fn execute_proof_address( } // save address if not exists or there is enought space for address (<=8) - // TODO discuss to make max address count configurable if proof_res { let mut token_info = cw721_contract.tokens.load(deps.storage, &address_portid.clone().portid)?; if token_info.extension.addresses.is_some() { @@ -333,21 +374,21 @@ pub fn execute_proof_address( } let proved_address_particle = prepare_particle(address.clone())?; - let address_particle = prepare_particle(info.clone().sender.into())?; + let nick_particle = prepare_particle(nickname.clone())?; let config = CONFIG.load(deps.storage)?; - // proved_address <-> address + // proved_address <-> nickname let proof_subgraph_submsg = prepare_cyberlink_submsg( config.proof_subspace.into(), vec![ Link{ - from: address_particle.clone().into(), + from: nick_particle.clone().into(), to: proved_address_particle.clone().into(), }, Link{ from: proved_address_particle.clone().into(), - to: address_particle.clone().into() + to: nick_particle.clone().into() } ] ); @@ -410,33 +451,33 @@ pub fn execute_remove_address( ])) } -// proved addresses are empty during mint -// allow owner to mint passports, used only during development stage -// TODO disable before release +// NOTE disabled pub fn execute_mint( - deps: DepsMut, - env: Env, - info: MessageInfo, - mint_msg: MintMsg, + _deps: DepsMut, + _env: Env, + _info: MessageInfo, + _mint_msg: MintMsg, ) -> Result { - let config = CONFIG.load(deps.storage)?; - if info.clone().sender != config.owner { - return Err(ContractError::Unauthorized {}); - } - - if mint_msg.clone().extension.addresses.is_some() { - return Err(ContractError::InvalidInitialization {}); - } - - // contract itself can only mint - let internal_info = MessageInfo { - sender: env.clone().contract.address, - funds: info.funds, - }; - - let cw721_contract = PassportContract::default(); - let response = cw721_contract.mint(deps, env, internal_info, mint_msg)?; - Ok(response) + // only for dev and test phase + // let config = CONFIG.load(deps.storage)?; + // if info.clone().sender != config.owner { + // return Err(ContractError::Unauthorized {}); + // } + // + // if mint_msg.clone().extension.addresses.is_some() { + // return Err(ContractError::InvalidInitialization {}); + // } + // + // // contract itself can only mint + // let internal_info = MessageInfo { + // sender: env.clone().contract.address, + // funds: info.funds, + // }; + // + // let cw721_contract = PassportContract::default(); + // let response = cw721_contract.mint(deps, env, internal_info, mint_msg)?; + // Ok(response) + Err(ContractError::Unauthorized {}) } pub fn execute_transfer_nft( @@ -455,7 +496,7 @@ pub fn execute_transfer_nft( let new_owner = deps.api.addr_validate(&recipient)?; - // clear proved addresses + // clear proved addresses and data cw721_contract .tokens .update(deps.storage, &token_id.clone(), |token| match token { @@ -463,6 +504,7 @@ pub fn execute_transfer_nft( nickname = token_info.clone().extension.nickname; avatar = token_info.clone().extension.avatar; token_info.extension.addresses = Some(vec![]); + token_info.extension.data = None; Ok(token_info) } None => return Err(ContractError::TokenNotFound {}), @@ -495,7 +537,7 @@ pub fn execute_transfer_nft( let address_particle = prepare_particle(new_owner.clone().to_string())?; // link passport to new owner - // prepare nickname <-> address <-> avatar cyberlinks + // prepare address <-> nickname <-> avatar cyberlinks // nickname <-> address let name_subgraph_submsg = prepare_cyberlink_submsg( config.name_subspace.into(), @@ -510,17 +552,17 @@ pub fn execute_transfer_nft( }, ] ); - // address <-> avatar + // nickname <-> avatar let avatar_subgraph_submsg = prepare_cyberlink_submsg( config.avatar_subspace.into(), vec![ Link{ - from: address_particle.clone().into(), + from: nick_particle.clone().into(), to: avatar_particle.clone().into() }, Link{ from: avatar_particle.clone().into(), - to: address_particle.clone().into() + to: nick_particle.clone().into() } ] ); @@ -551,11 +593,26 @@ pub fn execute_send_nft( nickname = token_info.clone().extension.nickname; avatar = token_info.clone().extension.avatar; token_info.extension.addresses = Some(vec![]); + token_info.extension.data = None; Ok(token_info) } None => return Err(ContractError::TokenNotFound {}), })?; + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + // map nickname to new owner (contract in this case) + NICKNAMES.save( + deps.storage, + &nickname.clone(), + &AddressPortID{ + address: deps.api.addr_validate(&contract)?, + portid: token_id.clone() + } + )?; + if ACTIVE.has(deps.storage, &info.clone().sender) { let active = ACTIVE.load(deps.storage, &info.clone().sender)?; if active == token_id { @@ -563,7 +620,6 @@ pub fn execute_send_nft( } } - // TODO think about contract as passport holder (cyberlinks/nickname?) let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; Ok(response) diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index fccdb41..043a26c 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -59,6 +59,7 @@ pub fn proof_address_ethereum( fn get_recovery_param(v: u8) -> StdResult { match v { + // 0 and 1 added to support ledger 0 => Ok(0), 1 => Ok(1), 27 => Ok(0), @@ -121,7 +122,7 @@ pub fn proof_address_cosmos( message: String, signature: Binary, ) -> Result { - // TODO clean up before release + // ADR-36 signed object, need to construct this object part by part and add encoded signed data with signer // let obj = json!( // { // "account_number":"0", diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index 8c1a5f0..8a94fa6 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -10,7 +10,7 @@ use cw721_base::{ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::state::Extension; +use crate::state::{Config, Extension}; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] @@ -59,6 +59,10 @@ pub enum ExecuteMsg { nickname: String, new_avatar: String }, + UpdateData{ + nickname: String, + data: String, + }, ProofAddress{ nickname: String, address: String, @@ -304,9 +308,9 @@ pub struct SignatureResponse { #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] #[serde(rename_all = "snake_case")] -pub struct MigrateMsg { +pub struct MigrateMsg { pub version: String, - pub config: Option, + pub config: Option, } diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index 502f1c5..c3e3340 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -40,4 +40,5 @@ pub struct PassportMetadata { pub addresses: Option>, pub avatar: String, pub nickname: String, + pub data: Option, } diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 3eb3923..49bcb57 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -10,7 +10,7 @@ mod tests { use crate::query::{query_active_passport, query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; #[test] - fn proper_initialization() { + fn proper_flow() { let mut deps = mock_dependencies(); let owner = "owner"; @@ -63,6 +63,7 @@ mod tests { nickname: "test_nickname".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport_metadata); @@ -74,11 +75,14 @@ mod tests { nickname: "test_nickname".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, + data: None, } }; assert_eq!(query_passport_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport); assert_eq!(query_active_passport(deps.as_ref(), citizen.into()).unwrap(), expected_passport); + // check that is available to change name + let update_name_msg = ExecuteMsg::UpdateName { old_nickname: "test_nickname".to_string(), new_nickname: "test_nickname_new".to_string(), @@ -92,9 +96,12 @@ mod tests { nickname: "test_nickname_new".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + // check that is available to change avatar + let update_avatar_msg = ExecuteMsg::UpdateAvatar { nickname: "test_nickname_new".to_string(), new_avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), @@ -107,15 +114,15 @@ mod tests { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: None, + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); - //// check that is available to proof address + // check that is available to proof address let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - // signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), }; @@ -125,15 +132,14 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - // addresses: Option::from(vec!["0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string()]), addresses: Option::from(vec![LabeledAddress{ label: None, address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string() }]), + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), - // signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), }; @@ -145,18 +151,16 @@ mod tests { addresses: Option::from(vec![ LabeledAddress{ label: None, address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string() }, LabeledAddress{ label: None, address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() } - // "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - // "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() ]), + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); - //// check that is not available to proof same address twice + // check that is not available to proof same address twice let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - // signature: Binary::from_base64("0x314a5bac145d5fc2fad44d026859c0218afd40dbad8e7bbbfce7bf9f8538d32700e82a636c3520675f2403be64f592d3d8c5d9cb6146576d62c9bf28c2b3e5211c").unwrap(), signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), }; @@ -168,7 +172,6 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test_nickname_new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), - // signature: Binary::from_base64("eyJwdWJfa2V5IjogIkErTVhGcDdZZUxNdm9WbEFVNjZVdTB6M1d0YzlDdXdxMGVvY1VodE5PbW53Iiwic2lnbmF0dXJlIjogIjlPODlDVWRSUlpqMDExQnBoblRzNUpuWU05LzBPMGNoK1hMRzJETmlXcXRZbkE0eEE1QjB3bUZRRE9Rb2dPeEw1eEtXSUxWTW52MUlBLzdzMDVRc0lBPT0ifQ==").unwrap(), signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), }; @@ -190,8 +193,8 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - // addresses: Option::from(vec!["bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string()]), addresses: Option::from(vec![LabeledAddress{ label: None, address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() }]), + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -206,12 +209,13 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "test_nickname_new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - // addresses: Option::from(vec![]), addresses: None, + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); // check that is possible to buy name + let update_name_msg = ExecuteMsg::UpdateName { old_nickname: "test_nickname_new".to_string(), new_nickname: "name".to_string(), @@ -224,54 +228,9 @@ mod tests { let expected_passport_metadata = PassportMetadata { nickname: "name".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), - // addresses: Option::from(vec![]), addresses: None, + data: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "name".into()).unwrap(), expected_passport_metadata); } - - #[test] - fn proper_set_minter() { - assert_eq!(true, true); - } - - #[test] - fn proper_set_owner() { - assert_eq!(true, true); - } - - #[test] - fn proper_create_passport() { - assert_eq!(true, true); - } - - #[test] - fn proper_update_spaces() { - assert_eq!(true, true); - } - - #[test] - fn proper_transfer_nft() { - assert_eq!(true, true); - } - - #[test] - fn proper_send_nft() { - assert_eq!(true, true); - } - - #[test] - fn proper_burn() { - assert_eq!(true, true); - } - - #[test] - fn proper_mint() { - assert_eq!(true, true); - } - - #[test] - fn proper_proof() { - assert_eq!(true, true); - } } diff --git a/contracts/cw-cyber-subgraph/schema/execute_msg.json b/contracts/cw-cyber-subgraph/schema/execute_msg.json index 537c3af..b513dbe 100644 --- a/contracts/cw-cyber-subgraph/schema/execute_msg.json +++ b/contracts/cw-cyber-subgraph/schema/execute_msg.json @@ -28,17 +28,20 @@ { "type": "object", "required": [ - "update_owner" + "update_admins" ], "properties": { - "update_owner": { + "update_admins": { "type": "object", "required": [ - "new_owner" + "new_admins" ], "properties": { - "new_owner": { - "type": "string" + "new_admins": { + "type": "array", + "items": { + "type": "string" + } } } } @@ -48,17 +51,20 @@ { "type": "object", "required": [ - "update_executer" + "update_executors" ], "properties": { - "update_executer": { + "update_executors": { "type": "object", "required": [ - "new_executer" + "new_executors" ], "properties": { - "new_executer": { - "type": "string" + "new_executors": { + "type": "array", + "items": { + "type": "string" + } } } } diff --git a/contracts/cw-cyber-subgraph/schema/instantiate_msg.json b/contracts/cw-cyber-subgraph/schema/instantiate_msg.json index 712dede..cce995a 100644 --- a/contracts/cw-cyber-subgraph/schema/instantiate_msg.json +++ b/contracts/cw-cyber-subgraph/schema/instantiate_msg.json @@ -3,15 +3,21 @@ "title": "InstantiateMsg", "type": "object", "required": [ - "executer", - "owner" + "admins", + "executers" ], "properties": { - "executer": { - "type": "string" + "admins": { + "type": "array", + "items": { + "type": "string" + } }, - "owner": { - "type": "string" + "executers": { + "type": "array", + "items": { + "type": "string" + } } } } diff --git a/contracts/cw-cyber-subgraph/src/tests.rs b/contracts/cw-cyber-subgraph/src/tests.rs index 42b3034..f5931c7 100644 --- a/contracts/cw-cyber-subgraph/src/tests.rs +++ b/contracts/cw-cyber-subgraph/src/tests.rs @@ -6,7 +6,7 @@ mod tests { use crate::ContractError; #[test] - fn proper_instantiation() { + fn proper_flow() { assert_eq!(true, true) } } From d84a6b73326e73dba033bc2860433868e912597d Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Wed, 27 Apr 2022 16:27:25 +0800 Subject: [PATCH 42/69] Restore load_testing branch changes --- .../testdata/generate_test_data/.env.example | 3 + .../testdata/generate_test_data/.gitignore | 1 + .../generate_test_data/contract_utils.py | 328 ++ .../create_passport_and_claim_job.py | 80 + ..._and_passport_contracts_load_testing.ipynb | 3921 +++++++++++++++++ .../gift_and_passport_contracts_testing.ipynb | 2359 +++++----- .../gift_final_merkle_tree.ipynb | 461 ++ .../testdata/generate_test_data/index.ts | 71 +- .../testdata/generate_test_data/package.json | 20 +- .../testdata/generate_test_data/yarn.lock | 197 +- gift_execution.png | Bin 0 -> 346566 bytes 11 files changed, 6106 insertions(+), 1335 deletions(-) create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb create mode 100644 contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb create mode 100644 gift_execution.png diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example new file mode 100644 index 0000000..a6dc265 --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example @@ -0,0 +1,3 @@ +WALLET_SEED='correct lens reopen movie practice harsh blush satisfy ecology action unlock feed begin deny trouble timber bulb infant gun test steel bid rate input' +WALLET_ADDRESS='bostrom1ywemhcrla7f9lkktfsu3cnqv2mapw82a5yf5fc' +PYTHON_PATH='python3' \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore index 3c3629e..1dcef2d 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore @@ -1 +1,2 @@ node_modules +.env \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py new file mode 100644 index 0000000..955594e --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -0,0 +1,328 @@ +import json +import base58 +import hashlib +import pandas as pd +from subprocess import Popen, PIPE + +from cyber_sdk.client.lcd import LCDClient +from cyber_sdk.client.lcd.api.tx import CreateTxOptions +from cyber_sdk.core import AccAddress, Coins +from cyber_sdk.core.wasm import MsgExecuteContract +from cyber_sdk.key.mnemonic import MnemonicKey +from cyber_sdk.core.bank import MsgMultiSend +from cyber_sdk.core.bank.msgs import MultiSendInput, MultiSendOutput + +NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443' +LCD_URL = 'https://lcd.space-pussy-1.cybernode.ai/' +NETWORK = 'space-pussy-1' + + +def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: + _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate() + if _error: + display_data = True + if display_data: + print(bash_command) + if _output: + try: + print(json.dumps(json.loads(_output.decode('utf-8')), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_output) + if _error: + print(_error) + return _output.decode('utf-8'), _error.decode('utf-8') + + +def instantiate_contract(init_query: str, contract_code_id: str, contract_label: str, amount: str = '', + from_address: str = '$WALLET', display_data: bool = False) -> str: + _init_output, _init_error = execute_bash( + f'''INIT='{init_query}' \ + && cyber tx wasm instantiate {contract_code_id} "$INIT" --from {from_address} \ + {'--amount ' + amount + 'boot' if amount else ''} --label "{contract_label}" \ + -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''') + if display_data: + try: + print(json.dumps(json.loads(_init_output), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_init_output) + if _init_error: + print(_init_error) + _init_json = json.loads(_init_output) + return [event['attributes'][0]['value'] + for event in _init_json['logs'][0]['events'] + if event['type'] == 'instantiate'][0] + + +def execute_contract_bash(execute_query: str, contract_address: str, from_address: str = '$WALLET', gas: int = 300000, + display_data: bool = False) -> str: + _execute_output, _execute_error = execute_bash( + f'''EXECUTE='{execute_query}' \ + && CONTRACT="{contract_address}" \ + && cyber tx wasm execute $CONTRACT "$EXECUTE" --from {from_address} --broadcast-mode block -o json -y \ + --gas={gas} --chain-id={NETWORK} --node={NODE_URL}''') + if display_data: + try: + print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) + except json.JSONDecodeError: + print(_execute_output) + if _execute_error: + print(_execute_error) + return _execute_output + + +def query_contract(query: str, contract_address: str, display_data: bool = False) -> json: + _execute_output, _execute_error = execute_bash( + f'''QUERY='{query}' \ + && cyber query wasm contract-state smart {contract_address} "$QUERY" -o json \ + --chain-id={NETWORK} --node={NODE_URL}''') + try: + if display_data: + print(json.dumps(json.loads(_execute_output), indent=4, sort_keys=True)) + return json.loads(_execute_output) + except json.JSONDecodeError: + print(_execute_output) + if _execute_error: + print(_execute_error) + return json.loads(_execute_output) + + +def get_ipfs_cid_from_str(source_str: str) -> str: + """ + Use only for getting valid CIDs. + Return is incorrect CID. + :param source_str: string for uploading as file into IPFS + :return IPFS CID (valid but !incorrect!)""" + assert type(source_str) == str + _source_hash = hashlib.sha256(str.encode(source_str)).hexdigest() + _source_hash_bytes = bytes.fromhex(_source_hash) + _length = bytes([len(_source_hash_bytes)]) + _hash = b'\x12' + _length + _source_hash_bytes + return base58.b58encode(_hash).decode('utf-8') + + +def get_proofs(input_file: str, + output_file: str, + start_index: int = 1, + end_index: int = -1) -> bool: + _root_and_proofs_output, _root_and_proofs_error = execute_bash( + f'export NODE_OPTIONS=--max_old_space_size=4096 && ' + f'yarn start --input {input_file} --output {output_file} --start_index {start_index} --end_index {end_index}') + if _root_and_proofs_output: + print(_root_and_proofs_output) + return True + else: + print(_root_and_proofs_error) + return False + + +class ContractUtils: + + def __init__(self, ipfs_client, address_dict: dict, url: str = LCD_URL, chain_id: str = NETWORK): + self.ipfs_client = ipfs_client + self.address_dict = address_dict + self.name_dict = {v: k for k, v in address_dict.items()} + self.bostrom_lcd_client = LCDClient( + url=url, + chain_id=chain_id + ) + + def set_address_dict(self, address_dict): + self.address_dict = address_dict + self.name_dict = {v: k for k, v in address_dict.items()} + + def send_coins(self, from_seed: str, to_addresses: list, amounts: list, gas: int = 70999, denom: str = 'boot', + display_data: bool = False) -> str: + _mk = MnemonicKey(mnemonic=from_seed) + _wallet = self.bostrom_lcd_client.wallet(key=_mk) + + _msg = MsgMultiSend( + inputs=[ + MultiSendInput(address=_wallet.key.acc_address, coins=Coins(boot=_amount)) + for _amount in amounts + ], + outputs=[ + MultiSendOutput(address=_to_address, coins=Coins(boot=_amount)) + for _to_address, _amount in zip(to_addresses, amounts) + ], + ) + + _tx = _wallet.create_and_sign_tx( + CreateTxOptions( + msgs=[_msg], + gas_prices="0boot", + gas=str(gas), + fee_denoms=["boot"], + ) + ) + if display_data: + print(_msg) + print('\n', _tx) + return self.bostrom_lcd_client.tx.broadcast(_tx).to_json() + + # def query_contract(self, query_msg: dict, contract_address: str) -> json: + # return self.bostrom_lcd_client.wasm.contract_query(contract_address=contract_address, query_msg=query_msg) + + def execute_contract(self, execute_msg: json, contract_address: str, mnemonic: str, + gas: int = 500000, gas_price: int = 0, display_data: bool = False) -> str: + _key = MnemonicKey(mnemonic=mnemonic) + _wallet = self.bostrom_lcd_client.wallet(key=_key) + + _msg = MsgExecuteContract( + sender=_wallet.key.acc_address, + contract=AccAddress(contract_address), + execute_msg=execute_msg) + + _tx = _wallet.create_and_sign_tx( + CreateTxOptions( + msgs=[_msg], + gas_prices=str(gas_price) + 'boot', + gas=str(gas) + ) + ) + if display_data: + print(_msg) + print(_tx) + return self.bostrom_lcd_client.tx.broadcast(_tx).to_json() + + def create_passport(self, claim_row: pd.Series, display_data: bool = False): + return self.execute_contract( + execute_msg={"create_passport": {"avatar": claim_row["avatar"], "nickname": claim_row["nickname"]}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=500000, + display_data=display_data) + + def proof_address(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): + return self.execute_contract( + execute_msg={ + "proof_address": {"address": claim_row[network + "_address"], "nickname": claim_row["nickname"], + "signature": claim_row[network + "_message_signature"]}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) + + def claim(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): + return self.execute_contract( + execute_msg={ + "claim": {"nickname": claim_row['nickname'], "gift_claiming_address": claim_row[network + "_address"], + "gift_amount": str(claim_row['amount']), "proof": claim_row[network + "_proof"]}}, + contract_address=self.name_dict['Gift Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) + + def release(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): + return self.execute_contract( + execute_msg={"release": {"gift_address": claim_row[network + "_address"]}}, + contract_address=self.name_dict['Gift Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) + + def transfer_passport(self, claim_row: pd.Series, token_id: str, to_address: str = '', display_data: bool = False): + if to_address == '': + to_address = claim_row['bostrom_address'] + return self.execute_contract( + execute_msg={"transfer_nft": {"recipient": to_address, "token_id": str(token_id)}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=500000, + display_data=display_data) + + def burn_passport(self, claim_row: pd.Series, token_id: str, display_data: bool = False): + return self.execute_contract( + execute_msg={"burn": {"token_id": token_id}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=400000, + display_data=display_data) + + def get_contract_name(self, contract_address: str) -> str: + try: + return self.address_dict[contract_address] + except KeyError: + return contract_address + + def get_name_from_cid(self, ipfs_hash: str, row=None) -> str: + if row is None: + return ipfs_hash + cid_name_dict = { + row['avatar']: 'Avatar', + self.ipfs_client.add_str(row['nickname']): 'Nickname', + self.ipfs_client.add_str(row['ethereum_address']): 'Ethereum Address', + self.ipfs_client.add_str(row['cosmos_address']): 'Cosmos Address', + self.ipfs_client.add_str(row['bostrom_address']): 'Passport Owner Address', + self.ipfs_client.add_str('cyberhole'): 'cyberhole'} + try: + return cid_name_dict[ipfs_hash] + except KeyError: + return ipfs_hash + + def parse_contract_execution_json(self, contract_execution_json: str, row=None) -> None: + print('\nEvents') + _contract_execution_json = json.loads(contract_execution_json) + _logs = _contract_execution_json['logs'] + if _logs is None or len(_logs) == 0: + print(_contract_execution_json['raw_log']) + else: + for log_item in _logs: + for event_item in log_item['events']: + print('') + if event_item['type'] == 'message': + if len(event_item["attributes"]) == 3: + print( + f'message from {self.get_contract_name(event_item["attributes"][-1]["value"])} ' + f'{event_item["attributes"][1]["value"]} {event_item["attributes"][0]["value"]}') + else: + print(event_item) + elif event_item['type'] == 'execute': + print('execute') + for attr_item in event_item["attributes"]: + if attr_item["key"] == '_contract_address': + print(f'\texecute contract: {self.get_contract_name(attr_item["value"])}') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'reply': + print('reply') + for attr_item in event_item["attributes"]: + if attr_item["key"] == '_contract_address': + print(f'\treply contract: {self.get_contract_name(attr_item["value"])}') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'cyberlink': + print('cyberlinks') + for i, attr_item in enumerate(event_item['attributes']): + if attr_item['key'] == 'particleFrom': + print( + f'\t{self.get_name_from_cid(attr_item["value"], row=row)} -> ' + f'{self.get_name_from_cid(event_item["attributes"][i + 1]["value"], row=row)}') + elif attr_item['key'] == 'particleTo': + pass + elif attr_item['key'] == 'neuron': + print(f'\tneuron: {self.get_contract_name(attr_item["value"])}\n') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'coin_received': + print('coin received') + for attr_item in event_item["attributes"]: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'coin_spent': + print('coin spent') + for attr_item in event_item["attributes"]: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'wasm': + print('wasm') + for attr_item in event_item["attributes"]: + if attr_item["key"] == 'amount': + print(f'\t{attr_item["key"]}: {int(attr_item["value"]):>,}') + else: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + elif event_item['type'] == 'transfer': + print('transfer') + for attr_item in event_item["attributes"]: + print(f'\t{attr_item["key"]}: {self.get_contract_name(attr_item["value"])}') + else: + print(event_item) + print(f"Gas used: {int(_contract_execution_json['gas_used']):>,}") + print(f"Tx hash: {_contract_execution_json['txhash']}") diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py new file mode 100644 index 0000000..4d5bf10 --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -0,0 +1,80 @@ +import pandas as pd +import sys +import json +from contract_utils import ContractUtils +import warnings +from time import sleep +from aiohttp.client_exceptions import ClientConnectorError +from cyber_sdk.exceptions import LCDResponseError + +warnings.filterwarnings("ignore") + +DISPLAY_TX_EXECUTION = False + + +def participation(row: pd.Series, address_dict: dict, release_bool: bool = False) -> dict: + + contract_utils = ContractUtils(ipfs_client=None, address_dict=address_dict) + if release_bool: + _release_ethereum_json = contract_utils.release(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) + _release_cosmos_json = contract_utils.release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) + return { + 'release_ethereum': _release_ethereum_json, + 'release_cosmos': _release_cosmos_json + } + else: + _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) + _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) + _proof_cosmos_address_json = contract_utils.proof_address(row, network='cosmos', + display_data=DISPLAY_TX_EXECUTION) + sleep(1) + _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION) + sleep(1) + _claim_cosmos_json = contract_utils.claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION) + return { + 'create': _create_passport_json, + 'proof_ethereum': _proof_ethereum_address_json, + 'proof_cosmos': _proof_cosmos_address_json, + 'claim_ethereum': _claim_ethereum_json, + 'claim_cosmos': _claim_cosmos_json + } + + +if __name__ == '__main__': + + source_file_name = sys.argv[1] + index_number = sys.argv[2] + gift_contract_address = sys.argv[3] + release_bool = True if len(sys.argv) > 4 and sys.argv[4] == 'True' else False + + log_file = f'temp/contract_release_execution_log_{index_number}.txt' \ + if release_bool else f'temp/contract_participation_execution_log_{index_number}.txt' + address_dict = {gift_contract_address: 'Gift Contract', + 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8': 'Passport Contract'} + + row = pd.read_csv(source_file_name).iloc[int(index_number) % 10_000] + row['ethereum_proof'] = row['ethereum_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') + row['cosmos_proof'] = row['cosmos_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') + + res = None + last_error = None + i = 0 + while res is None and i < 5: + try: + res = participation(row=row, address_dict=address_dict, release_bool=release_bool) + except (ClientConnectorError, LCDResponseError) as e: + sleep(10) + print(f'Error: {e}\n') + last_error = e + i += 1 + if res is not None: + with open(log_file, 'w') as convert_file: + convert_file.write(json.dumps(res)) + print(f"{row['bostrom_address']}: done") + elif last_error is not None: + with open(log_file, 'w') as convert_file: + convert_file.write(f'Error: {last_error}') + print(f"{row['bostrom_address']}: unsuccessful") diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb new file mode 100644 index 0000000..f331e1f --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -0,0 +1,3921 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## Gift Contract Testing" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 1, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/grovybear/.local/lib/python3.9/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.12.2' (not in range: 0.5.0 ≤ … < 0.9.0)\n", + " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" + ] + } + ], + "source": [ + "from web3.auto import w3\n", + "import pandas as pd\n", + "from cyberpy import generate_wallet, address_to_address\n", + "from cyberpy._message_signer import Message\n", + "from cyberpy._wallet import seed_to_privkey\n", + "from eth_account.messages import encode_defunct\n", + "import json\n", + "import random\n", + "from pprint import pprint\n", + "from time import time\n", + "import ipfshttpclient\n", + "from tqdm.notebook import tqdm\n", + "from base64 import b64encode\n", + "from multiprocess import Pool\n", + "from math import ceil\n", + "from dotenv import dotenv_values\n", + "from IPython.display import display, HTML\n", + "\n", + "from contract_utils import execute_bash, instantiate_contract, execute_contract_bash, query_contract, get_ipfs_cid_from_str, get_proofs, ContractUtils\n", + "\n", + "\n", + "ipfs_client = ipfshttpclient.connect()\n", + "\n", + "NUMBER_OF_PARTICIPANTS = 100_000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 50_000\n", + "NUMBER_OF_THREADS = 100\n", + "KEY_PHRASE = 'KEY PHRASE'\n", + "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", + "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", + "CLAIM_AMOUNT_LIST = [20_000] * NUMBER_OF_PARTICIPANTS\n", + "PREFIXES = ['cosmos', 'osmo', 'terra']\n", + "\n", + "INITIAL_BALANCE = str(1_000_000_000)\n", + "COEF_UP = str(13)\n", + "COEF_DOWN = str(7)\n", + "TARGET_CLAIM = str(2)\n", + "\n", + "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", + "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", + "PYTHON_PATH = dotenv_values('.env')['PYTHON_PATH']\n", + "\n", + "DISPLAY_TX_EXECUTION = False\n", + "CALCULATE_ADDRESS_SET = True\n", + "CALCULATE_PROOFS = True\n", + "SEND_COINS = True\n", + "\n", + "INIT_SUBGRAPH_CONTRACTS = False\n", + "SUBGRAPH_CODE_ID = str(40)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", + "\n", + "INIT_PASSPORT_CONTRACT = False\n", + "PASSPORT_CODE_ID = str(43)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8'\n", + "\n", + "INIT_GIFT_CONTRACT = True\n", + "GIFT_CODE_ID = str(20)\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom14swjuycwxmvghd9hgr3f3755388g6xkaqpn2dxcf700fzcwdm2nqum7453'\n", + "\n", + "PARTICIPANTS_FILE_NAME = 'participants_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv'\n", + "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "PROOF_FILE_NAME = 'proof_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Generate addresses and sign messages" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of tasks: 100000\n", + "Number of threads: 100\n" + ] + }, + { + "data": { + "text/plain": " 0%| | 0/100000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
020000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...
120000john16505145391QmcbX6Af2hx9Co1wDKnkpG5HwTVoC4sYUiJNdKiSgRgNsg0x54a31fa6e38731c1b8eda7579cf156a33769179f0xce2da6faaae94781d2881cc33edaf8ce32fd05f52ad1...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fgosmo1h48dqhht7cfukuxusujqgeuzpt43jtg8gl7kpaarrange sure benefit recipe replace width fan ...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg...0x7af0aed2bbf9b33e3e73a34cff62a19d2078f84030fa...{'pub_key': 'AtzxTgc/gj7M7q1a6oVBOz/V9uqAWmjjP...eyJwdWJfa2V5IjoiQXR6eFRnYy9najdNN3ExYTZvVkJPei...
220000john16505145392QmNg2da2P9CQppC5QdRsu8zy8LCbKSgwSCX7K51zexf2xq0x7bd9105d6084694757c819f8a965e39ecf7ff8a20x6213c521d7e6533db5bd4af75ef0ad61251afb632a0f...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2cosmos1c0h2ysdynjq7sslef0ktx86a9yk0dkp96lka7djoke vacuum town dress below either height tig...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2...0x73d09d6c82e35d6bd9379519a1957504ef235744e74d...{'pub_key': 'AhE823RJVhq2gyouGMwgcDvOQK80l/hap...eyJwdWJfa2V5IjoiQWhFODIzUkpWaHEyZ3lvdUdNd2djRH...
320000john16505145393QmbEz8ZGkWeQnpEJPSQrjnDpcyCxwyaerkmd1gxWYMn2Kf0x60920d73ebeaede54d58d56f0a7e22b6c051a9120x289c072a670df38e707d7c26f9c1b7ebe255431b56d6...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3cosmos1na6xl94tl7r5sjxyuhva04sy8p68jhhzhw7pxkcollect hockey simple firm joke air polar salo...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3...0x7d92f8e2e6b9db95853d5a7692bcd4c87c3b32966c58...{'pub_key': 'A2COW5KWNuVXMJPyoNNNpsIxlcs7N7CfX...eyJwdWJfa2V5IjoiQTJDT1c1S1dOdVZYTUpQeW9OTk5wc0...
420000john16505145394QmaBhHHPYivF8a6otweD8ZgtVWSVbB5AXpqtmVPQvfx3kB0xa38253e4257fda031a2cf619e8dd9f455211e22a0x3688c537e031cd40687ddcce934fba76a370e2f2d04f...bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4cterra1zt4phgz5xpfzvymhnnemqesdyyw2spe8hw8pflrecall pitch fork dune rebuild priority habit ...bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4c...0xb83b211090ffee9f2e27d37552a8e346ee4604171d61...{'pub_key': 'AynVqVXox56sBogu4VL45Uk1KD9KvvtAd...eyJwdWJfa2V5IjoiQXluVnFWWG94NTZzQm9ndTRWTDQ1VW...
\n" + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def generate_wallet_data(i: int, prefixes: list = PREFIXES) -> dict:\n", + "\n", + " prefix = random.choice(prefixes)\n", + "\n", + " claim_item = {'amount': CLAIM_AMOUNT_LIST[i],\n", + " 'nickname': NICKNAME_LIST[i],\n", + " 'avatar': AVATAR_CID_LIST[i]}\n", + "\n", + " # Generate Ethereum wallet\n", + " ethereum_wallet = w3.eth.account.create(KEY_PHRASE)\n", + " claim_item['ethereum_address'] = ethereum_wallet.address.lower()\n", + " claim_item['ethereum_private_key'] = ethereum_wallet.privateKey.hex()\n", + "\n", + " # Generate Bostrom and Cosmos wallet\n", + " bostrom_wallet = generate_wallet()\n", + " claim_item['bostrom_address'] = bostrom_wallet['address']\n", + " claim_item['cosmos_address'] = address_to_address(bostrom_wallet['address'], prefix)\n", + " claim_item['cosmos_seed'] = bostrom_wallet['seed']\n", + "\n", + " # Create message\n", + " claim_item['message'] = f\"{claim_item['bostrom_address']}:QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV\"\n", + "\n", + " # Sign message form Ethereum address\n", + " ethereum_signed_message = \\\n", + " w3.eth.account.sign_message(\n", + " signable_message=encode_defunct(text=claim_item['message']),\n", + " private_key=ethereum_wallet.privateKey)\n", + " claim_item['ethereum_message_signature'] = ethereum_signed_message.signature.hex()\n", + "\n", + " # Sign message form Cosmos address\n", + " cosmos_msg = Message(privkey=seed_to_privkey(seed=claim_item['cosmos_seed']))\n", + " cosmos_msg.add_message(signing_message=claim_item['message'], signer_prefix=prefix)\n", + " claim_item['cosmos_message_signed_row'] = cosmos_msg.get_signed_message()\n", + " claim_item['cosmos_message_signature'] = b64encode(json.dumps(claim_item['cosmos_message_signed_row']).replace('\\n', '').replace(' ', '').encode('utf-8')).decode(\"utf-8\")\n", + "\n", + " # Verify message\n", + " assert claim_item['ethereum_address'] == w3.eth.account.recover_message(\n", + " signable_message=encode_defunct(text=claim_item['message']),\n", + " signature=claim_item['ethereum_message_signature']).lower()\n", + "\n", + " return claim_item\n", + "\n", + "\n", + "if CALCULATE_ADDRESS_SET:\n", + "\n", + " tasks = list(range(NUMBER_OF_PARTICIPANTS))\n", + " print(f'Number of tasks: {len(tasks)}')\n", + " print(f'Number of threads: {NUMBER_OF_THREADS}')\n", + " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " claims_list = list(tqdm(pool.imap(generate_wallet_data, tasks), total=len(tasks)))\n", + "\n", + " claims_df = pd.DataFrame(claims_list)\n", + " claims_df.to_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "else:\n", + " claims_df = pd.read_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df.head()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create Merkle Tree, Get Root and Proofs" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [], + "source": [ + "root_source_list = [{'address': _item[0],\n", + " 'amount': str(_item[1])} for _item in claims_df[['ethereum_address', 'amount']].values.tolist()]+ \\\n", + " [{'address': _item[0],\n", + " 'amount': str(_item[1])} for _item in claims_df[['cosmos_address', 'amount']].values.tolist()]\n", + "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", + "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{('root_testing_source_100000_addresses.json', 'temp/proofs_166.json', 166000, 167001), ('root_testing_source_100000_addresses.json', 'temp/proofs_132.json', 132000, 133001), ('root_testing_source_100000_addresses.json', 'temp/proofs_54.json', 54000, 55001), ('root_testing_source_100000_addresses.json', 'temp/proofs_120.json', 120000, 121001), ('root_testing_source_100000_addresses.json', 'temp/proofs_29.json', 29000, 30001), ('root_testing_source_100000_addresses.json', 'temp/proofs_149.json', 149000, 150001), ('root_testing_source_100000_addresses.json', 'temp/proofs_63.json', 63000, 64001), ('root_testing_source_100000_addresses.json', 'temp/proofs_145.json', 145000, 146001), ('root_testing_source_100000_addresses.json', 'temp/proofs_105.json', 105000, 106001), ('root_testing_source_100000_addresses.json', 'temp/proofs_156.json', 156000, 157001), ('root_testing_source_100000_addresses.json', 'temp/proofs_49.json', 49000, 50001), ('root_testing_source_100000_addresses.json', 'temp/proofs_137.json', 137000, 138001), ('root_testing_source_100000_addresses.json', 'temp/proofs_161.json', 161000, 162001), ('root_testing_source_100000_addresses.json', 'temp/proofs_37.json', 37000, 38001), ('root_testing_source_100000_addresses.json', 'temp/proofs_68.json', 68000, 69001), ('root_testing_source_100000_addresses.json', 'temp/proofs_40.json', 40000, 41001), ('root_testing_source_100000_addresses.json', 'temp/proofs_17.json', 17000, 18001), ('root_testing_source_100000_addresses.json', 'temp/proofs_52.json', 52000, 53001), ('root_testing_source_100000_addresses.json', 'temp/proofs_79.json', 79000, 80001), ('root_testing_source_100000_addresses.json', 'temp/proofs_111.json', 111000, 112001), ('root_testing_source_100000_addresses.json', 'temp/proofs_53.json', 53000, 54001), ('root_testing_source_100000_addresses.json', 'temp/proofs_160.json', 160000, 161001), ('root_testing_source_100000_addresses.json', 'temp/proofs_191.json', 191000, 192001), ('root_testing_source_100000_addresses.json', 'temp/proofs_87.json', 87000, 88001), ('root_testing_source_100000_addresses.json', 'temp/proofs_46.json', 46000, 47001), ('root_testing_source_100000_addresses.json', 'temp/proofs_39.json', 39000, 40001), ('root_testing_source_100000_addresses.json', 'temp/proofs_130.json', 130000, 131001), ('root_testing_source_100000_addresses.json', 'temp/proofs_60.json', 60000, 61001), ('root_testing_source_100000_addresses.json', 'temp/proofs_71.json', 71000, 72001), ('root_testing_source_100000_addresses.json', 'temp/proofs_131.json', 131000, 132001), ('root_testing_source_100000_addresses.json', 'temp/proofs_56.json', 56000, 57001), ('root_testing_source_100000_addresses.json', 'temp/proofs_5.json', 5000, 6001), ('root_testing_source_100000_addresses.json', 'temp/proofs_88.json', 88000, 89001), ('root_testing_source_100000_addresses.json', 'temp/proofs_197.json', 197000, 198001), ('root_testing_source_100000_addresses.json', 'temp/proofs_47.json', 47000, 48001), ('root_testing_source_100000_addresses.json', 'temp/proofs_66.json', 66000, 67001), ('root_testing_source_100000_addresses.json', 'temp/proofs_139.json', 139000, 140001), ('root_testing_source_100000_addresses.json', 'temp/proofs_175.json', 175000, 176001), ('root_testing_source_100000_addresses.json', 'temp/proofs_30.json', 30000, 31001), ('root_testing_source_100000_addresses.json', 'temp/proofs_107.json', 107000, 108001), ('root_testing_source_100000_addresses.json', 'temp/proofs_128.json', 128000, 129001), ('root_testing_source_100000_addresses.json', 'temp/proofs_36.json', 36000, 37001), ('root_testing_source_100000_addresses.json', 'temp/proofs_185.json', 185000, 186001), ('root_testing_source_100000_addresses.json', 'temp/proofs_62.json', 62000, 63001), ('root_testing_source_100000_addresses.json', 'temp/proofs_104.json', 104000, 105001), ('root_testing_source_100000_addresses.json', 'temp/proofs_114.json', 114000, 115001), ('root_testing_source_100000_addresses.json', 'temp/proofs_28.json', 28000, 29001), ('root_testing_source_100000_addresses.json', 'temp/proofs_2.json', 2000, 3001), ('root_testing_source_100000_addresses.json', 'temp/proofs_72.json', 72000, 73001), ('root_testing_source_100000_addresses.json', 'temp/proofs_78.json', 78000, 79001), ('root_testing_source_100000_addresses.json', 'temp/proofs_133.json', 133000, 134001), ('root_testing_source_100000_addresses.json', 'temp/proofs_173.json', 173000, 174001), ('root_testing_source_100000_addresses.json', 'temp/proofs_92.json', 92000, 93001), ('root_testing_source_100000_addresses.json', 'temp/proofs_123.json', 123000, 124001), ('root_testing_source_100000_addresses.json', 'temp/proofs_174.json', 174000, 175001), ('root_testing_source_100000_addresses.json', 'temp/proofs_76.json', 76000, 77001), ('root_testing_source_100000_addresses.json', 'temp/proofs_65.json', 65000, 66001), ('root_testing_source_100000_addresses.json', 'temp/proofs_43.json', 43000, 44001), ('root_testing_source_100000_addresses.json', 'temp/proofs_194.json', 194000, 195001), ('root_testing_source_100000_addresses.json', 'temp/proofs_13.json', 13000, 14001), ('root_testing_source_100000_addresses.json', 'temp/proofs_38.json', 38000, 39001), ('root_testing_source_100000_addresses.json', 'temp/proofs_172.json', 172000, 173001), ('root_testing_source_100000_addresses.json', 'temp/proofs_177.json', 177000, 178001), ('root_testing_source_100000_addresses.json', 'temp/proofs_176.json', 176000, 177001), ('root_testing_source_100000_addresses.json', 'temp/proofs_24.json', 24000, 25001), ('root_testing_source_100000_addresses.json', 'temp/proofs_70.json', 70000, 71001), ('root_testing_source_100000_addresses.json', 'temp/proofs_94.json', 94000, 95001), ('root_testing_source_100000_addresses.json', 'temp/proofs_169.json', 169000, 170001), ('root_testing_source_100000_addresses.json', 'temp/proofs_16.json', 16000, 17001), ('root_testing_source_100000_addresses.json', 'temp/proofs_165.json', 165000, 166001), ('root_testing_source_100000_addresses.json', 'temp/proofs_42.json', 42000, 43001), ('root_testing_source_100000_addresses.json', 'temp/proofs_64.json', 64000, 65001), ('root_testing_source_100000_addresses.json', 'temp/proofs_45.json', 45000, 46001), ('root_testing_source_100000_addresses.json', 'temp/proofs_97.json', 97000, 98001), ('root_testing_source_100000_addresses.json', 'temp/proofs_58.json', 58000, 59001), ('root_testing_source_100000_addresses.json', 'temp/proofs_31.json', 31000, 32001), ('root_testing_source_100000_addresses.json', 'temp/proofs_187.json', 187000, 188001), ('root_testing_source_100000_addresses.json', 'temp/proofs_182.json', 182000, 183001), ('root_testing_source_100000_addresses.json', 'temp/proofs_125.json', 125000, 126001), ('root_testing_source_100000_addresses.json', 'temp/proofs_184.json', 184000, 185001), ('root_testing_source_100000_addresses.json', 'temp/proofs_26.json', 26000, 27001), ('root_testing_source_100000_addresses.json', 'temp/proofs_8.json', 8000, 9001), ('root_testing_source_100000_addresses.json', 'temp/proofs_75.json', 75000, 76001), ('root_testing_source_100000_addresses.json', 'temp/proofs_85.json', 85000, 86001), ('root_testing_source_100000_addresses.json', 'temp/proofs_153.json', 153000, 154001), ('root_testing_source_100000_addresses.json', 'temp/proofs_159.json', 159000, 160001), ('root_testing_source_100000_addresses.json', 'temp/proofs_117.json', 117000, 118001), ('root_testing_source_100000_addresses.json', 'temp/proofs_127.json', 127000, 128001), ('root_testing_source_100000_addresses.json', 'temp/proofs_0.json', 0, 1001), ('root_testing_source_100000_addresses.json', 'temp/proofs_57.json', 57000, 58001), ('root_testing_source_100000_addresses.json', 'temp/proofs_3.json', 3000, 4001), ('root_testing_source_100000_addresses.json', 'temp/proofs_44.json', 44000, 45001), ('root_testing_source_100000_addresses.json', 'temp/proofs_15.json', 15000, 16001), ('root_testing_source_100000_addresses.json', 'temp/proofs_186.json', 186000, 187001), ('root_testing_source_100000_addresses.json', 'temp/proofs_143.json', 143000, 144001), ('root_testing_source_100000_addresses.json', 'temp/proofs_188.json', 188000, 189001), ('root_testing_source_100000_addresses.json', 'temp/proofs_163.json', 163000, 164001), ('root_testing_source_100000_addresses.json', 'temp/proofs_147.json', 147000, 148001), ('root_testing_source_100000_addresses.json', 'temp/proofs_11.json', 11000, 12001), ('root_testing_source_100000_addresses.json', 'temp/proofs_27.json', 27000, 28001), ('root_testing_source_100000_addresses.json', 'temp/proofs_95.json', 95000, 96001), ('root_testing_source_100000_addresses.json', 'temp/proofs_98.json', 98000, 99001), ('root_testing_source_100000_addresses.json', 'temp/proofs_158.json', 158000, 159001), ('root_testing_source_100000_addresses.json', 'temp/proofs_20.json', 20000, 21001), ('root_testing_source_100000_addresses.json', 'temp/proofs_89.json', 89000, 90001), ('root_testing_source_100000_addresses.json', 'temp/proofs_23.json', 23000, 24001), ('root_testing_source_100000_addresses.json', 'temp/proofs_100.json', 100000, 101001), ('root_testing_source_100000_addresses.json', 'temp/proofs_102.json', 102000, 103001), ('root_testing_source_100000_addresses.json', 'temp/proofs_77.json', 77000, 78001), ('root_testing_source_100000_addresses.json', 'temp/proofs_157.json', 157000, 158001), ('root_testing_source_100000_addresses.json', 'temp/proofs_190.json', 190000, 191001), ('root_testing_source_100000_addresses.json', 'temp/proofs_18.json', 18000, 19001), ('root_testing_source_100000_addresses.json', 'temp/proofs_109.json', 109000, 110001), ('root_testing_source_100000_addresses.json', 'temp/proofs_152.json', 152000, 153001), ('root_testing_source_100000_addresses.json', 'temp/proofs_7.json', 7000, 8001), ('root_testing_source_100000_addresses.json', 'temp/proofs_14.json', 14000, 15001), ('root_testing_source_100000_addresses.json', 'temp/proofs_150.json', 150000, 151001), ('root_testing_source_100000_addresses.json', 'temp/proofs_82.json', 82000, 83001), ('root_testing_source_100000_addresses.json', 'temp/proofs_51.json', 51000, 52001), ('root_testing_source_100000_addresses.json', 'temp/proofs_106.json', 106000, 107001), ('root_testing_source_100000_addresses.json', 'temp/proofs_50.json', 50000, 51001), ('root_testing_source_100000_addresses.json', 'temp/proofs_67.json', 67000, 68001), ('root_testing_source_100000_addresses.json', 'temp/proofs_32.json', 32000, 33001), ('root_testing_source_100000_addresses.json', 'temp/proofs_124.json', 124000, 125001), ('root_testing_source_100000_addresses.json', 'temp/proofs_112.json', 112000, 113001), ('root_testing_source_100000_addresses.json', 'temp/proofs_126.json', 126000, 127001), ('root_testing_source_100000_addresses.json', 'temp/proofs_33.json', 33000, 34001), ('root_testing_source_100000_addresses.json', 'temp/proofs_84.json', 84000, 85001), ('root_testing_source_100000_addresses.json', 'temp/proofs_196.json', 196000, 197001), ('root_testing_source_100000_addresses.json', 'temp/proofs_122.json', 122000, 123001), ('root_testing_source_100000_addresses.json', 'temp/proofs_151.json', 151000, 152001), ('root_testing_source_100000_addresses.json', 'temp/proofs_162.json', 162000, 163001), ('root_testing_source_100000_addresses.json', 'temp/proofs_12.json', 12000, 13001), ('root_testing_source_100000_addresses.json', 'temp/proofs_6.json', 6000, 7001), ('root_testing_source_100000_addresses.json', 'temp/proofs_180.json', 180000, 181001), ('root_testing_source_100000_addresses.json', 'temp/proofs_167.json', 167000, 168001), ('root_testing_source_100000_addresses.json', 'temp/proofs_93.json', 93000, 94001), ('root_testing_source_100000_addresses.json', 'temp/proofs_198.json', 198000, 199001), ('root_testing_source_100000_addresses.json', 'temp/proofs_171.json', 171000, 172001), ('root_testing_source_100000_addresses.json', 'temp/proofs_41.json', 41000, 42001), ('root_testing_source_100000_addresses.json', 'temp/proofs_144.json', 144000, 145001), ('root_testing_source_100000_addresses.json', 'temp/proofs_86.json', 86000, 87001), ('root_testing_source_100000_addresses.json', 'temp/proofs_148.json', 148000, 149001), ('root_testing_source_100000_addresses.json', 'temp/proofs_103.json', 103000, 104001), ('root_testing_source_100000_addresses.json', 'temp/proofs_91.json', 91000, 92001), ('root_testing_source_100000_addresses.json', 'temp/proofs_116.json', 116000, 117001), ('root_testing_source_100000_addresses.json', 'temp/proofs_134.json', 134000, 135001), ('root_testing_source_100000_addresses.json', 'temp/proofs_189.json', 189000, 190001), ('root_testing_source_100000_addresses.json', 'temp/proofs_193.json', 193000, 194001), ('root_testing_source_100000_addresses.json', 'temp/proofs_48.json', 48000, 49001), ('root_testing_source_100000_addresses.json', 'temp/proofs_141.json', 141000, 142001), ('root_testing_source_100000_addresses.json', 'temp/proofs_21.json', 21000, 22001), ('root_testing_source_100000_addresses.json', 'temp/proofs_25.json', 25000, 26001), ('root_testing_source_100000_addresses.json', 'temp/proofs_108.json', 108000, 109001), ('root_testing_source_100000_addresses.json', 'temp/proofs_118.json', 118000, 119001), ('root_testing_source_100000_addresses.json', 'temp/proofs_90.json', 90000, 91001), ('root_testing_source_100000_addresses.json', 'temp/proofs_136.json', 136000, 137001), ('root_testing_source_100000_addresses.json', 'temp/proofs_168.json', 168000, 169001), ('root_testing_source_100000_addresses.json', 'temp/proofs_199.json', 199000, 200001), ('root_testing_source_100000_addresses.json', 'temp/proofs_81.json', 81000, 82001), ('root_testing_source_100000_addresses.json', 'temp/proofs_35.json', 35000, 36001), ('root_testing_source_100000_addresses.json', 'temp/proofs_73.json', 73000, 74001), ('root_testing_source_100000_addresses.json', 'temp/proofs_10.json', 10000, 11001), ('root_testing_source_100000_addresses.json', 'temp/proofs_80.json', 80000, 81001), ('root_testing_source_100000_addresses.json', 'temp/proofs_113.json', 113000, 114001), ('root_testing_source_100000_addresses.json', 'temp/proofs_110.json', 110000, 111001), ('root_testing_source_100000_addresses.json', 'temp/proofs_178.json', 178000, 179001), ('root_testing_source_100000_addresses.json', 'temp/proofs_119.json', 119000, 120001), ('root_testing_source_100000_addresses.json', 'temp/proofs_61.json', 61000, 62001), ('root_testing_source_100000_addresses.json', 'temp/proofs_129.json', 129000, 130001), ('root_testing_source_100000_addresses.json', 'temp/proofs_170.json', 170000, 171001), ('root_testing_source_100000_addresses.json', 'temp/proofs_4.json', 4000, 5001), ('root_testing_source_100000_addresses.json', 'temp/proofs_101.json', 101000, 102001), ('root_testing_source_100000_addresses.json', 'temp/proofs_55.json', 55000, 56001), ('root_testing_source_100000_addresses.json', 'temp/proofs_142.json', 142000, 143001), ('root_testing_source_100000_addresses.json', 'temp/proofs_69.json', 69000, 70001), ('root_testing_source_100000_addresses.json', 'temp/proofs_135.json', 135000, 136001), ('root_testing_source_100000_addresses.json', 'temp/proofs_59.json', 59000, 60001), ('root_testing_source_100000_addresses.json', 'temp/proofs_154.json', 154000, 155001), ('root_testing_source_100000_addresses.json', 'temp/proofs_96.json', 96000, 97001), ('root_testing_source_100000_addresses.json', 'temp/proofs_138.json', 138000, 139001), ('root_testing_source_100000_addresses.json', 'temp/proofs_19.json', 19000, 20001), ('root_testing_source_100000_addresses.json', 'temp/proofs_179.json', 179000, 180001), ('root_testing_source_100000_addresses.json', 'temp/proofs_146.json', 146000, 147001), ('root_testing_source_100000_addresses.json', 'temp/proofs_22.json', 22000, 23001), ('root_testing_source_100000_addresses.json', 'temp/proofs_83.json', 83000, 84001), ('root_testing_source_100000_addresses.json', 'temp/proofs_1.json', 1000, 2001), ('root_testing_source_100000_addresses.json', 'temp/proofs_9.json', 9000, 10001), ('root_testing_source_100000_addresses.json', 'temp/proofs_121.json', 121000, 122001), ('root_testing_source_100000_addresses.json', 'temp/proofs_140.json', 140000, 141001), ('root_testing_source_100000_addresses.json', 'temp/proofs_74.json', 74000, 75001), ('root_testing_source_100000_addresses.json', 'temp/proofs_155.json', 155000, 156001), ('root_testing_source_100000_addresses.json', 'temp/proofs_99.json', 99000, 100001), ('root_testing_source_100000_addresses.json', 'temp/proofs_183.json', 183000, 184001), ('root_testing_source_100000_addresses.json', 'temp/proofs_164.json', 164000, 165001), ('root_testing_source_100000_addresses.json', 'temp/proofs_181.json', 181000, 182001), ('root_testing_source_100000_addresses.json', 'temp/proofs_195.json', 195000, 196001), ('root_testing_source_100000_addresses.json', 'temp/proofs_34.json', 34000, 35001), ('root_testing_source_100000_addresses.json', 'temp/proofs_192.json', 192000, 193001), ('root_testing_source_100000_addresses.json', 'temp/proofs_115.json', 115000, 116001)}\n" + ] + }, + { + "data": { + "text/plain": " 0%| | 0/200 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
020000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...[d7994ad73633a407682e08454c4f6f204c62abb39ba94...[ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896...
120000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...[d7994ad73633a407682e08454c4f6f204c62abb39ba94...[ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896...
220000john16505145391QmcbX6Af2hx9Co1wDKnkpG5HwTVoC4sYUiJNdKiSgRgNsg0x54a31fa6e38731c1b8eda7579cf156a33769179f0xce2da6faaae94781d2881cc33edaf8ce32fd05f52ad1...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fgosmo1h48dqhht7cfukuxusujqgeuzpt43jtg8gl7kpaarrange sure benefit recipe replace width fan ...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg...0x7af0aed2bbf9b33e3e73a34cff62a19d2078f84030fa...{'pub_key': 'AtzxTgc/gj7M7q1a6oVBOz/V9uqAWmjjP...eyJwdWJfa2V5IjoiQXR6eFRnYy9najdNN3ExYTZvVkJPei...[81f6ba90f31cfd28c01b6c2fd1f2b7969482df24c44fe...[a12947f476bc2c7836a2e99efdc602fdec5861f394441...
320000john16505145392QmNg2da2P9CQppC5QdRsu8zy8LCbKSgwSCX7K51zexf2xq0x7bd9105d6084694757c819f8a965e39ecf7ff8a20x6213c521d7e6533db5bd4af75ef0ad61251afb632a0f...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2cosmos1c0h2ysdynjq7sslef0ktx86a9yk0dkp96lka7djoke vacuum town dress below either height tig...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2...0x73d09d6c82e35d6bd9379519a1957504ef235744e74d...{'pub_key': 'AhE823RJVhq2gyouGMwgcDvOQK80l/hap...eyJwdWJfa2V5IjoiQWhFODIzUkpWaHEyZ3lvdUdNd2djRH...[cf4410fa48d4b8524be71f0b897838c9d4091b3677cef...[6c8a772467c91ba7d401ae87f4bfa6480946d96b03dbc...
420000john16505145393QmbEz8ZGkWeQnpEJPSQrjnDpcyCxwyaerkmd1gxWYMn2Kf0x60920d73ebeaede54d58d56f0a7e22b6c051a9120x289c072a670df38e707d7c26f9c1b7ebe255431b56d6...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3cosmos1na6xl94tl7r5sjxyuhva04sy8p68jhhzhw7pxkcollect hockey simple firm joke air polar salo...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3...0x7d92f8e2e6b9db95853d5a7692bcd4c87c3b32966c58...{'pub_key': 'A2COW5KWNuVXMJPyoNNNpsIxlcs7N7CfX...eyJwdWJfa2V5IjoiQTJDT1c1S1dOdVZYTUpQeW9OTk5wc0...[0c9925d293ac5afdd7c80530610f28408c84b3b138530...[cf6588c49f84523a5264a7b4fd92dbd811c7c0b3ba23f...
\n" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if CALCULATE_PROOFS:\n", + " roots = []\n", + " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + " for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", + " assert roots == [roots[0]] * len(roots)\n", + " root = roots[0]\n", + "\n", + " cosmos_proofs_df = proofs_df[~proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + "\n", + " claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='left',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='left',\n", + " on='cosmos_address')\n", + "\n", + " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", + "else:\n", + " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", + " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " with open('temp/proofs_1.json', 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " root = root_and_proof_json['merkle_root']\n", + "claims_with_proofs_df.head()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [ + "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", + " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", + "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", + "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" + ] + } + ], + "source": [ + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph',\n", + " from_address=WALLET_ADDRESS)\n", + " proof_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph',\n", + " from_address=WALLET_ADDRESS)\n", + "else:\n", + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Passport Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passport contract address: bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\n" + ] + } + ], + "source": [ + "if INIT_PASSPORT_CONTRACT:\n", + " passport_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport',\n", + " from_address=WALLET_ADDRESS)\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subgraph Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 9, + "outputs": [], + "source": [ + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom1923ktlaaw5gsnsxtl5evudr798s9vp744q4rtu9mapt24p2heq3sccue2w\n" + ] + } + ], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift',\n", + " from_address=WALLET_ADDRESS,\n", + " display_data=False)\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Initiate Class of Output Parsing" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [], + "source": [ + "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", + " address_dict= {\n", + " gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + "proof_subgraph_contract_address: 'Proof Subgraph Contract'})" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 12, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: register_merkle_root\n", + "\tmerkle_root: 896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541\n", + "Gas used: 121,492\n", + "Tx hash: 04115509D4B1BAF1CDECB5334585561BADF092583A42AE2BE81B0BD16D411C17\n" + ] + } + ], + "source": [ + "root_register_output = contract_utils.execute_contract(\n", + " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", + " mnemonic=WALLET_SEED,\n", + " contract_address=gift_contract_address)\n", + "contract_utils.parse_contract_execution_json(root_register_output)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Get Merkle Root form the Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "execution_count": 156 + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract bostrom1923ktlaaw5gsnsxtl5evudr798s9vp744q4rtu9mapt24p2heq3sccue2w\n", + "{'data': {'merkle_root': '896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541'}}\n" + ] + } + ], + "source": [ + "print(f'Gift contract {gift_contract_address}')\n", + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Send coins to new addresses" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 19, + "outputs": [ + { + "data": { + "text/plain": " 0%| | 0/101 [00:00 bool:\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address}')\n", + " if _output:\n", + " return _output\n", + " else:\n", + " return _error\n", + "\n", + "NUMBER_OF_THREADS = 100\n", + "\n", + "tasks = list(range(NUMBER_OF_ACTIVATED_PARTICIPANTS))\n", + "print(f'Number of tasks: {len(tasks)}')\n", + "print(f'Number of threads: {NUMBER_OF_THREADS}')\n", + "\n", + "\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res_participation = list(tqdm(pool.imap(execute_participation, tasks), total=len(tasks)))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 22, + "outputs": [], + "source": [ + "with open('temp/contract_participation_execution_log_1.txt', 'r') as f:\n", + " data = json.load(f)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 23, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'claim_cosmos': '{\"code\":32,\"codespace\":\"sdk\",\"data\":null,\"gas_used\":66365,\"gas_wanted\":400000,\"height\":0,\"info\":null,\"logs\":null,\"raw_log\":\"account '\n", + " 'sequence mismatch, expected 3, got 2: incorrect account '\n", + " 'sequence\",\"timestamp\":null,\"txhash\":\"A567FA0EE76102306A2FE2FE5504C6E1DBEF718B099F753492ACC64025044B99\"}',\n", + " 'claim_ethereum': '{\"code\":32,\"codespace\":\"sdk\",\"data\":null,\"gas_used\":66345,\"gas_wanted\":400000,\"height\":0,\"info\":null,\"logs\":null,\"raw_log\":\"account '\n", + " 'sequence mismatch, expected 3, got 2: incorrect account '\n", + " 'sequence\",\"timestamp\":null,\"txhash\":\"CED8ECE2EFD05EDA28712583242FA4B5B4437B2870D314E000DC11396CB29B74\"}',\n", + " 'create': '{\"code\":0,\"codespace\":\"\",\"data\":null,\"gas_used\":440639,\"gas_wanted\":500000,\"height\":2315386,\"info\":null,\"logs\":[{\"events\":[{\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"Qmarkb2T79Wqpb1qPuwmtadXNvEGmHoMjVNVVzFGwbv8Y3\"},{\"key\":\"particleTo\",\"value\":\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"},{\"key\":\"particleFrom\",\"value\":\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"},{\"key\":\"particleTo\",\"value\":\"Qmarkb2T79Wqpb1qPuwmtadXNvEGmHoMjVNVVzFGwbv8Y3\"},{\"key\":\"neuron\",\"value\":\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\"},{\"key\":\"particleFrom\",\"value\":\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"},{\"key\":\"particleTo\",\"value\":\"QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv\"},{\"key\":\"particleFrom\",\"value\":\"QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv\"},{\"key\":\"particleTo\",\"value\":\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"},{\"key\":\"neuron\",\"value\":\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"}],\"type\":\"cyberlink\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"_contract_address\",\"value\":\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\"},{\"key\":\"_contract_address\",\"value\":\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"}],\"type\":\"execute\"},{\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\"}],\"type\":\"message\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"action\",\"value\":\"mint\"},{\"key\":\"minter\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"token_id\",\"value\":\"273502\"}],\"type\":\"wasm\"}],\"events_by_type\":{\"cyberlink\":{\"neuron\":[\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\",\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"],\"particleFrom\":[\"Qmarkb2T79Wqpb1qPuwmtadXNvEGmHoMjVNVVzFGwbv8Y3\",\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\",\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\",\"QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv\"],\"particleTo\":[\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\",\"Qmarkb2T79Wqpb1qPuwmtadXNvEGmHoMjVNVVzFGwbv8Y3\",\"QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv\",\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"]},\"execute\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\",\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\",\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\"]},\"message\":{\"action\":[\"/cosmwasm.wasm.v1.MsgExecuteContract\"],\"module\":[\"wasm\"],\"sender\":[\"bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\"]},\"wasm\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"],\"action\":[\"mint\"],\"minter\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"],\"token_id\":[\"273502\"]}},\"log\":\"\",\"msg_index\":0}],\"raw_log\":\"[{\\\\\"events\\\\\":[{\\\\\"type\\\\\":\\\\\"cyberlink\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"Qmarkb2T79Wqpb1qPuwmtadXNvEGmHoMjVNVVzFGwbv8Y3\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"Qmarkb2T79Wqpb1qPuwmtadXNvEGmHoMjVNVVzFGwbv8Y3\\\\\"},{\\\\\"key\\\\\":\\\\\"neuron\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\\\\\"},{\\\\\"key\\\\\":\\\\\"neuron\\\\\",\\\\\"value\\\\\":\\\\\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"execute\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\\\\\"},{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\\\\\"}]},{\\\\\"type\\\\\":\\\\\"message\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\\\"},{\\\\\"key\\\\\":\\\\\"module\\\\\",\\\\\"value\\\\\":\\\\\"wasm\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\\\\\"}]},{\\\\\"type\\\\\":\\\\\"wasm\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"mint\\\\\"},{\\\\\"key\\\\\":\\\\\"minter\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"token_id\\\\\",\\\\\"value\\\\\":\\\\\"273502\\\\\"}]}]}]\",\"timestamp\":null,\"txhash\":\"C5D37ED01DA7729B4EFF34D23F914D91ECA5F05276919F6C246A9C18773602DE\"}',\n", + " 'proof_cosmos': '{\"code\":32,\"codespace\":\"sdk\",\"data\":null,\"gas_used\":45725,\"gas_wanted\":400000,\"height\":0,\"info\":null,\"logs\":null,\"raw_log\":\"account '\n", + " 'sequence mismatch, expected 3, got 2: incorrect account '\n", + " 'sequence\",\"timestamp\":null,\"txhash\":\"194F45CEAF88E1D67E6800105DF9F19F9A2C60F902CD76CAA0618059A7AF47C8\"}',\n", + " 'proof_ethereum': '{\"code\":0,\"codespace\":\"\",\"data\":null,\"gas_used\":281286,\"gas_wanted\":400000,\"height\":2315388,\"info\":null,\"logs\":[{\"events\":[{\"attributes\":[{\"key\":\"particleFrom\",\"value\":\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"},{\"key\":\"particleTo\",\"value\":\"QmcDbnqXHKgeD57ZcbX33zRtSFqDtWE5d1up6iPCwiQACM\"},{\"key\":\"particleFrom\",\"value\":\"QmcDbnqXHKgeD57ZcbX33zRtSFqDtWE5d1up6iPCwiQACM\"},{\"key\":\"particleTo\",\"value\":\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"},{\"key\":\"neuron\",\"value\":\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"}],\"type\":\"cyberlink\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"_contract_address\",\"value\":\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"}],\"type\":\"execute\"},{\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgExecuteContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\"}],\"type\":\"message\"},{\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"},{\"key\":\"action\",\"value\":\"proof_address\"},{\"key\":\"nickname\",\"value\":\"john16505145390\"},{\"key\":\"address\",\"value\":\"0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca\"}],\"type\":\"wasm\"}],\"events_by_type\":{\"cyberlink\":{\"neuron\":[\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"],\"particleFrom\":[\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\",\"QmcDbnqXHKgeD57ZcbX33zRtSFqDtWE5d1up6iPCwiQACM\"],\"particleTo\":[\"QmcDbnqXHKgeD57ZcbX33zRtSFqDtWE5d1up6iPCwiQACM\",\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\"]},\"execute\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\",\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\"]},\"message\":{\"action\":[\"/cosmwasm.wasm.v1.MsgExecuteContract\"],\"module\":[\"wasm\"],\"sender\":[\"bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\"]},\"wasm\":{\"_contract_address\":[\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\"],\"action\":[\"proof_address\"],\"address\":[\"0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca\"],\"nickname\":[\"john16505145390\"]}},\"log\":\"\",\"msg_index\":0}],\"raw_log\":\"[{\\\\\"events\\\\\":[{\\\\\"type\\\\\":\\\\\"cyberlink\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmcDbnqXHKgeD57ZcbX33zRtSFqDtWE5d1up6iPCwiQACM\\\\\"},{\\\\\"key\\\\\":\\\\\"particleFrom\\\\\",\\\\\"value\\\\\":\\\\\"QmcDbnqXHKgeD57ZcbX33zRtSFqDtWE5d1up6iPCwiQACM\\\\\"},{\\\\\"key\\\\\":\\\\\"particleTo\\\\\",\\\\\"value\\\\\":\\\\\"QmT5kx9Pcp2wcHPontSqDsNhwXqsT4rYw6r2iMtbFtr8pB\\\\\"},{\\\\\"key\\\\\":\\\\\"neuron\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\\\\\"}]},{\\\\\"type\\\\\":\\\\\"execute\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\\\\\"}]},{\\\\\"type\\\\\":\\\\\"message\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\\\"},{\\\\\"key\\\\\":\\\\\"module\\\\\",\\\\\"value\\\\\":\\\\\"wasm\\\\\"},{\\\\\"key\\\\\":\\\\\"sender\\\\\",\\\\\"value\\\\\":\\\\\"bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\\\\\"}]},{\\\\\"type\\\\\":\\\\\"wasm\\\\\",\\\\\"attributes\\\\\":[{\\\\\"key\\\\\":\\\\\"_contract_address\\\\\",\\\\\"value\\\\\":\\\\\"bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\\\\\"},{\\\\\"key\\\\\":\\\\\"action\\\\\",\\\\\"value\\\\\":\\\\\"proof_address\\\\\"},{\\\\\"key\\\\\":\\\\\"nickname\\\\\",\\\\\"value\\\\\":\\\\\"john16505145390\\\\\"},{\\\\\"key\\\\\":\\\\\"address\\\\\",\\\\\"value\\\\\":\\\\\"0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca\\\\\"}]}]}]\",\"timestamp\":null,\"txhash\":\"FE3E533881DB9739E4BA17DC8CB90F74EE0FA5E36E303EE7116A6ED0F8FB3754\"}'}\n" + ] + } + ], + "source": [ + "pprint(data)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 30, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tPassport Owner Address -> Nickname\n", + "\tNickname -> Passport Owner Address\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tNickname -> Avatar\n", + "\tAvatar -> Nickname\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: mint\n", + "\tminter: Passport Contract\n", + "\ttoken_id: 273502\n", + "Gas used: 440,639\n", + "Tx hash: C5D37ED01DA7729B4EFF34D23F914D91ECA5F05276919F6C246A9C18773602DE\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['create'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 38, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tNickname -> Ethereum Address\n", + "\tEthereum Address -> Nickname\n", + "\tneuron: Proof Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", + "\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16505145390\n", + "\taddress: 0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca\n", + "Gas used: 281,286\n", + "Tx hash: FE3E533881DB9739E4BA17DC8CB90F74EE0FA5E36E303EE7116A6ED0F8FB3754\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['proof_ethereum'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 31, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "account sequence mismatch, expected 3, got 2: incorrect account sequence\n", + "Gas used: 45,725\n", + "Tx hash: 194F45CEAF88E1D67E6800105DF9F19F9A2C60F902CD76CAA0618059A7AF47C8\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['proof_cosmos'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 32, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "account sequence mismatch, expected 3, got 2: incorrect account sequence\n", + "Gas used: 66,365\n", + "Tx hash: A567FA0EE76102306A2FE2FE5504C6E1DBEF718B099F753492ACC64025044B99\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['claim_cosmos'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 35, + "outputs": [ + { + "data": { + "text/plain": "\"{'claim': {'nickname': 'john16505145390', 'gift_claiming_address': '0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca', 'gift_amount': '20000', 'proof': ['d7994ad73633a407682e08454c4f6f204c62abb39ba9445ffbd752682e7399f6', 'b216b4d989f96eea1236bfd7f3353511062b6ccf57144b27e5fc4696bc628db3', '304d2eb8c435271af3c3a5a26637b93c5180485c65b6e6d0d8c0c2e5543d43a3', 'c1911041c63aed27e6525c4e53b779ee4a83e6bc56928815931052d130425fd6', 'dd4acb78e0ba298c05a87aab437939f2247135ee95db77cbf1a497b4b24d7223', '95fdb1deacc6b5e579f311c48ab34e05d60e8b06601930db6d815aabed949ff7', '5790cd3f7f1a87cd1c9790f7871ddd3e77c435788eb50c6046614a741c1307b4', '475f65dbbd92f3cc6993fcc9b555c5e90e0fcf1bc1f3b6f6af1cb38c66d66941', 'f90ea473b36d04ad3fad9569be7763273ba88288b7d4a1445644d8d89d3b066e', 'e46722181b39fec39867bd85c42b39f300a9d2973abec6649000b1d5ba508f51', '1c34554ac02a8a87fa7007a99808b334608d4b294ecf4cf3ce168a46f59dc297', '025ad62bb9bc634ccd872746b721f97a3179b13f4ad0cc8579d354eb750cda99', '34b67b797b94ce2d67f718e15005ede24c019ed410df0a9a73a8fc9cddb25907', '3cc69da7d8973783603a7fba0ae1ec91217ffbb3240b1a3ae0af5c3cacc6ce76', 'eda4d32a6ffb4244da50cebeda6d2ecd3b16d816493adcc42e0edd6f15cf75ad', '22f793e1646a8209afbe521325f2c13e971c398297c1a62159d6db5e5051df01', '808b073c50f904d95f56a6ba7e4f898d951dac00e58847783ef028be5cb732d8', 'dd92e6d7c71669e4bf6d1c69465b45551a7f37665b3c28a84706265d1bc58e42']}}\\n{'claim': {'nickname': 'john16505145390', 'gift_claiming_address': 'osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6', 'gift_amount': '20000', 'proof': ['ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896da71f9ee1fffd4bb334', '49f0e8334c20e13225a8ca5d5b4de3e5c9ca95806595eed5e59dbb7ac40ff631', 'b2a2bce5baed9cbb75c2dd87a907d4dcb715a0b913481bf5f16d10ba41eb4991', '81332b59c7df1dbce50e902731b82be95d53574c735182b31c19899624f920a1', '0b30fdeacaf57f4c2c5fb2fb5e3308a5aae124564af8e27c25a494e3048831cd', 'fcb072334183fd1c3cdd0a273d478a8812274d6e4e40cc59cf214953d2321e42', '8a3a93d2b410b37b405d899254351971ab32702c10ded03bda86fcebe9994e78', '76c32bfce697a56a11a3b1dfbc8daf5f6549b7b13fe2f4f60acdccb20f9c17b5', '8cb4a8605ba1845a93684ed523e56047525718713d91caf1ad9649b9a6b2e386', '32d347f8f9562ba18331f6117d000de508adec54186e531c8820a47b29a778d3', 'cf9773d5d26705614d55219aad824d8c38c7d28a1779ab49a8998d0cebe36bbb', 'da429fda4a22b7b8a78535e2f26e04df7ddf453e4d8b5e0aa072e28593608095', '0a1a37293e00d55cb2690dbd0c24aa658a2e9e2a2adac3ef1a7924e55df85876', '7cdb3ef322f51dde3d93c7e32e2199ca757ce757875c8d7b1e8189ba8f67b055', 'a2c0fb47545c737773dcf2a23cc3c6266d2fe90da1a5d1ddd170777e2651bc33', 'f014a7a103e776ccc3c56c091bafbb9b3b699653adf6a3c8aaea292f81a7cf62', '808b073c50f904d95f56a6ba7e4f898d951dac00e58847783ef028be5cb732d8', 'dd92e6d7c71669e4bf6d1c69465b45551a7f37665b3c28a84706265d1bc58e42']}}\\nbostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50: done\\n\"" + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res_participation[1]" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Release Gift" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 27, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of tasks: 50000\n", + "Number of threads: 100\n" + ] + }, + { + "data": { + "text/plain": " 0%| | 0/50000 [00:00 bool:\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address} True')\n", + " if _output:\n", + " return _output\n", + " else:\n", + " return _error\n", + "\n", + "\n", + "NUMBER_OF_THREADS = 100\n", + "\n", + "tasks = list(range(NUMBER_OF_ACTIVATED_PARTICIPANTS))\n", + "print(f'Number of tasks: {len(tasks)}')\n", + "print(f'Number of threads: {NUMBER_OF_THREADS}')\n", + "\n", + "\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res_release = list(tqdm(pool.imap(execute_release, tasks), total=len(tasks)))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 28, + "outputs": [], + "source": [ + "with open('temp/contract_release_execution_log_1.txt', 'r') as f:\n", + " release_data = json.load(f)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 33, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\tamount: 15628boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 15628boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\tsender: Gift Contract\n", + "\tamount: 15628boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\tgift_address: 0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca\n", + "\tstage: 9\n", + "\tamount: 15,628\n", + "Gas used: 157,446\n", + "Tx hash: C0FC762311E6F9A4A7394671D3906826927A62CF1DE9280DD2A34FA74BF3947B\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(release_data['release_ethereum'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 34, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\tamount: 15471boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 15471boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\tsender: Gift Contract\n", + "\tamount: 15471boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\tgift_address: osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6\n", + "\tstage: 9\n", + "\tamount: 15,471\n", + "Gas used: 157,541\n", + "Tx hash: DD3319B0873F418047473499B7CE76E22466FB42128B6F7AF95A58C75453D0F1\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(release_data['release_cosmos'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Passport NFT testing\n", + "### Transfer Passport" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 40, + "outputs": [], + "source": [ + "def get_passport_id(bostrom_address: str) -> str:\n", + " return query_contract(query=f'''{{\"tokens\": {{\"owner\": \"{bostrom_address}\"}}}}''',\n", + " contract_address=passport_contract_address)['data']['tokens'][0]" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 41, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "88cd8e922def414996936a9894d779b4" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tQmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji -> Nickname\n", + "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Avatar Subgraph Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: transfer_nft\n", + "\tsender: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\trecipient: Passport Owner Address\n", + "\ttoken_id: 273502\n", + "Gas used: 386,208\n", + "Tx hash: 397994D783B8B06CFCD80DB336466FA3CBAD3C8192A9DC8590C2853A0534117A\n" + ] + } + ], + "source": [ + "for index, row in tqdm(claims_with_proofs_df[:4].iterrows()):\n", + " if index == 1:\n", + " transfer_passport_json = contract_utils.transfer_passport(\n", + " row,\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " to_address=WALLET_ADDRESS,\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(\n", + " transfer_passport_json,\n", + " row=row)\n", + " else:\n", + " pass" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Burn" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 42, + "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "97790a7a000e40a5ad187cbf07fb36aa" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tcyberhole -> Nickname\n", + "\tNickname -> cyberhole\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tcyberhole -> Avatar\n", + "\tAvatar -> cyberhole\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: burn\n", + "\tsender: bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg\n", + "\ttoken_id: 273515\n", + "Gas used: 382,043\n", + "Tx hash: 5166979A21AF9222CEA51AC262101239CCEE2CF69F46CBBA346F4DF0A0B1A297\n" + ] + } + ], + "source": [ + "for index, row in tqdm(claims_with_proofs_df[2:6].iterrows()):\n", + " if index == 2:\n", + " burn_passport_json = contract_utils.burn_passport(row, token_id=get_passport_id(row['bostrom_address']), display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(burn_passport_json, row=row)\n", + " else:\n", + " pass" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Add tests for Passport contract\n", + "#### create_passport +\n", + "#### update_name\n", + "#### update_avatar\n", + "#### proof_address +\n", + "#### remove_address\n", + "#### set_minter\n", + "#### set_owner\n", + "#### set_active\n", + "#### set_subgraphs\n", + "#### transfer_nft +\n", + "#### send_nft\n", + "#### mint\n", + "#### burn +\n", + "#### approve\n", + "#### approve_all\n", + "#### revoke\n", + "#### revoke_all\n", + "#### Expirations\n", + "##### at_height\n", + "##### at_time\n", + "##### never\n", + "\n", + "### Add tests for Gift contract\n", + "#### update_owner\n", + "#### update_passport_addr\n", + "#### update_target\n", + "#### register_merkle_root +\n", + "#### claim +\n", + "#### release +\n", + "\n", + "### Add tests for subgraph contract\n", + "#### update_owner\n", + "#### update_executer +\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb index 0dba688..ff8ab15 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb @@ -2,18 +2,26 @@ "cells": [ { "cell_type": "markdown", - "metadata": { - "collapsed": true, - "pycharm": { - "name": "#%% md\n" - } - }, "source": [ "## Gift Contract Testing" - ] + ], + "metadata": { + "collapsed": false + } }, { "cell_type": "code", + "execution_count": 1, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/sergenedashkovsky/Library/Python/3.8/lib/python/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.10.0' (not in range: 0.5.0 ≤ … < 0.9.0)\n", + " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" + ] + } + ], "source": [ "from web3.auto import w3\n", "import pandas as pd\n", @@ -22,73 +30,63 @@ "from cyberpy._wallet import seed_to_privkey\n", "from eth_account.messages import encode_defunct\n", "import json\n", - "from subprocess import Popen, PIPE\n", - "import os\n", "from time import time\n", "import ipfshttpclient\n", "from tqdm.notebook import tqdm\n", "from base64 import b64encode\n", + "from multiprocess import Pool\n", + "from math import ceil\n", + "from dotenv import dotenv_values\n", + "from IPython.core.display import display, HTML\n", + "\n", + "from contract_utils import instantiate_contract, execute_contract_bash, query_contract, get_ipfs_cid_from_str, get_proofs, ContractUtils\n", "\n", - "client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 2\n", + "ipfs_client = ipfshttpclient.connect()\n", + "\n", + "NUMBER_OF_PARTICIPANTS = 10\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 5\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", - "AVATAR_CID_LIST = [client.add_str(_nickname + 'avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [1_477_000] * NUMBER_OF_PARTICIPANTS\n", + "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", + "CLAIM_AMOUNT_LIST = [1_000_000] * NUMBER_OF_PARTICIPANTS\n", "\n", "INITIAL_BALANCE = str(1_000_000_000)\n", - "COEF_UP = str(20)\n", - "COEF_DOWN = str(5)\n", + "COEF_UP = str(13)\n", + "COEF_DOWN = str(7)\n", "TARGET_CLAIM = str(2)\n", "\n", - "NODE_URL = 'https://rpc.space-pussy-1.cybernode.ai:443'\n", - "NETWORK = 'space-pussy-1'\n", + "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", + "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", + "DISPLAY_TX_EXECUTION = False\n", + "TEST_ACCOUNT_ADDRESS = 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'\n", + "TEST_ACCOUNT_SEED = 'end spread blind steak install glare pride pony switch exit zone faint ' \\\n", + " 'opinion march layer illness can nest fence top debate monitor supreme noble'\n", + "\n", + "INIT_SUBGRAPH_CONTRACTS = False\n", + "SUBGRAPH_CODE_ID = str(40)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", - "PASSPORT_CODE_ID = str(23)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu'\n", + "PASSPORT_CODE_ID = str(43)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8'\n", "\n", - "INIT_GIFT_CONTRACT = False\n", + "INIT_GIFT_CONTRACT = True\n", "GIFT_CODE_ID = str(20)\n", "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", "\n", "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", - "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'\n", - "\n", - "\n", - "def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]:\n", - " _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate()\n", - " if _error:\n", - " display_data = True\n", - " if display_data:\n", - " print(bash_command)\n", - " if _output:\n", - " try:\n", - " print(json.dumps(json.loads(_output.decode('utf-8')), indent=4, sort_keys=True))\n", - " except json.JSONDecodeError:\n", - " print(_output)\n", - " if _error:\n", - " print(json.dumps(json.loads(_error.decode('utf-8')), indent=4, sort_keys=True))\n", - " return _output.decode('utf-8'), _error.decode('utf-8')" + "PROOF_FILE_NAME = 'proof_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - }, - "execution_count": 1, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/sergenedashkovsky/Library/Python/3.8/lib/python/site-packages/ipfshttpclient/client/__init__.py:75: VersionMismatch: Unsupported daemon version '0.10.0' (not in range: 0.5.0 ≤ … < 0.9.0)\n", - " warnings.warn(exceptions.VersionMismatch(version, minimum, maximum))\n" - ] - } - ] + } }, { "cell_type": "markdown", @@ -96,10 +94,7 @@ "### Generate addresses and sign messages" ], "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } + "collapsed": false } }, { @@ -108,8 +103,20 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 1477000 john16445669770 QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v \n1 1477000 john16445669771 QmS4pvkZzQcJMDYrMCZKDpBNoWc7HWJnFKHi1dRhmjRrLy \n\n ethereum_address \\\n0 0x31419fd3943c05836fc708ba6e5b7353accdcc82 \n1 0x42931499d6d14a05fb312808123a564e30a66a0c \n\n ethereum_private_key \\\n0 0xb5327df33d01f31e0573c5a4484ac6d6313a3e185c40... \n1 0x578a91df8f628383aa92ae7d2a05a0e557c72672e6cf... \n\n bostrom_address \\\n0 bostrom1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zq7ttxs \n1 bostrom12h0p07w95x5r3xjr03999pvx8535vnemk9d7v3 \n\n cosmos_address \\\n0 cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch \n1 cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk \n\n cosmos_seed \\\n0 layer below poem mom print hidden allow povert... \n1 lunar calm pond lizard want mobile purpose pat... \n\n message \\\n0 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n1 QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV \n\n ethereum_message_signature \\\n0 0xbaf8c4a43f098c1c2a35ea0513edb361c93ef0113f14... \n1 0xc37be3a26e4add0a57fde48d3ba130a126e1195350f0... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AiWoSSCPapVl5ob/LHjlQzQkw+kSLTHbc... \n1 {'pub_key': 'A1QeouLqZzeXmOicT59AYajB0ynmteSes... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRel... \n1 eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYW... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01477000john16445669770QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v0x31419fd3943c05836fc708ba6e5b7353accdcc820xb5327df33d01f31e0573c5a4484ac6d6313a3e185c40...bostrom1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zq7ttxscosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcchlayer below poem mom print hidden allow povert...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xbaf8c4a43f098c1c2a35ea0513edb361c93ef0113f14...{'pub_key': 'AiWoSSCPapVl5ob/LHjlQzQkw+kSLTHbc...eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRel...
11477000john16445669771QmS4pvkZzQcJMDYrMCZKDpBNoWc7HWJnFKHi1dRhmjRrLy0x42931499d6d14a05fb312808123a564e30a66a0c0x578a91df8f628383aa92ae7d2a05a0e557c72672e6cf...bostrom12h0p07w95x5r3xjr03999pvx8535vnemk9d7v3cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjklunar calm pond lizard want mobile purpose pat...QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV0xc37be3a26e4add0a57fde48d3ba130a126e1195350f0...{'pub_key': 'A1QeouLqZzeXmOicT59AYajB0ynmteSes...eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYW...
\n
" + "text/plain": " 0%| | 0/10 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
01000000john16495703800QmegFZS691C4pJFaFS3NVDNLd5PtjmMiJHJKtqzSsz2tBZ0x9124d6592264ae9e6693dfa39b8f82f16182419c0xcf156a52fd254b48a87c77926630089376a2e6d507f5...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04ccosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutlmixed february demise clinic master race famou...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c...0x9a2bbfc7ab3c7d4ed8910b0a495931c8a055c2fc29e7...{'pub_key': 'A89DQdUqRt7dzpi8/1Jxyb1hh+a6Q0bGo...eyJwdWJfa2V5IjoiQTg5RFFkVXFSdDdkenBpOC8xSnh5Yj...
11000000john16495703801QmbAqD21zVJD6D2kvoGnV1Fb8T5XKUG81V8Y7iZVHnpisC0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa0x46a7e94a530954956533e1a923d07c212eafc00a8d23...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366qcosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8quantum seed good glass spend spread usual sur...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q...0x5297763d57331039613520d1de1c9f94b0bf104d6fd2...{'pub_key': 'At5DOzq36uQeOGT//9kV3HcsPmy4HTAsO...eyJwdWJfa2V5IjoiQXQ1RE96cTM2dVFlT0dULy85a1YzSG...
21000000john16495703802QmdYTELFKWGpiZ6Qaf6bDHavRMrJ5nmqMTc94mwtnNzr6M0x0329bbdbf79eaf87d8d77ecb71f7f8d8165443590xcdf21ac40a23b30ac2208d9e3f72c7b798068df70f39...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnfcosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdwlava protect work pulse guess toss rocket volu...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf...0x3b7e242a976bd013862872532234536ea2e3397d3411...{'pub_key': 'Aph+/Mv0rOA0Ft+8iP6s7UJqTdOXK8tsK...eyJwdWJfa2V5IjoiQXBoKy9NdjByT0EwRnQrOGlQNnM3VU...
31000000john16495703803QmTqzfWV7DsGQsyoMHJTVBRkDtKBEjy5hPErMRfpbmimPm0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a80x08669cd3a21d69b25991ac891c5d1529b64fc893f846...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mpcosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9xmedal medal pull rule blur result gift agree g...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp...0x90d40af4947b8a499c22c79e1ea29cea981be1f819db...{'pub_key': 'A055jXQh2nQUJQQdlssNe0ZWQf9KRkUba...eyJwdWJfa2V5IjoiQTA1NWpYUWgyblFVSlFRZGxzc05lMF...
41000000john16495703804QmNWiHGs9WjmzbcQz96fugBm2Bu6CR3uZVsMuiM1tr4wYD0xcd012b8e0c4a5bd5c9283a0a4281ec553420d1490xb241a6f909672108710c007c1ea3173656139243deaa...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmkcosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93hope someone gown grain execute reason chaos g...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk...0xcc8656d43b15788c5e0400596f5cebd760da1fd0b75e...{'pub_key': 'Ao00rX4/WgQwgoR9wgwOTEgNq5mh9qfDI...eyJwdWJfa2V5IjoiQW8wMHJYNC9XZ1F3Z29SOXdnd09URW...
51000000john16495703805QmUva19NDC6iVZZ9gGL7jZfsXxpPd6bijzhbUsFvSXTcbV0xc45e14572ad2ec57da27faab28919bbda692037e0xbac8ff0d46365a737ac95be339a9036f861bc371ce14...bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxacosmos13f4sr82dux0kfu7uma3atv7frhzx57gh0g37c6bicycle lyrics ring donate price inherit stool...bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa...0xb950237f45061a45796e9f6045ef0675a32ee0df4616...{'pub_key': 'A2Udd3YSUpIPjMuAEmdwCzFYEvHQEHxu3...eyJwdWJfa2V5IjoiQTJVZGQzWVNVcElQak11QUVtZHdDek...
61000000john16495703806QmWXwdS2HtDFxfQ6bwdFvAjJ5HUGS7kQf3pmtkQDzYt9cd0xb66bcd3431cc5b1999f98c608963fa9ff2a5d0d20x02c99ad10dc1e0b4400d72bdca2b9623975de1489887...bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntwcosmos1pypc2s9dh0f6yp0xcqwjap99l5k75qgmzezq4fleaf try race mango beef notice opera pyramid ...bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw...0xd767925b964cff4fb53af0c37b4b8c6b6cfdd8ca4e9a...{'pub_key': 'AxeON8LGKhtXnzWl1yIuWli6bvIQCj9db...eyJwdWJfa2V5IjoiQXhlT044TEdLaHRYbnpXbDF5SXVXbG...
71000000john16495703807QmS8CCPyZkNZtiyyt6KbNVKYvbv2yQHaNPEF9ghhUWUN6X0xcb6babdbc3dd4f702237dfdd644ddbc676055e860x67d44f92161e85defdf10fa79c090b4a579d24ad1a60...bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rwcosmos13ugfw2hr7s8f0yttczg8e2v6v04dlwwaqrvxafcourse avoid view wrist casino medal rail adap...bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw...0xebd149ca2557ecf8a1a8c6db64d41b31c5e14ba706ba...{'pub_key': 'A5BI/jGNrd6zeAhtrhpxewXKHuQwvcDY2...eyJwdWJfa2V5IjoiQTVCSS9qR05yZDZ6ZUFodHJocHhld1...
81000000john16495703808QmbNWqULQTj2CAR34Fr4bYYMTypcEwnHrcfVLsXUf2UsMD0x1b15c1f4711a8f32f299ccc6121bcac89770a13f0xdfc6b8f64235c064afe1724ba46c0c8004ccb2d49bd2...bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyycosmos19pfkg9t5nvsmmjffsjv6k625xy98esgu426c6rlake thing harvest style luxury ensure notable...bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy...0xfe52914b475dd609d4e0baa2c6a5ba3b40aa2e9821e8...{'pub_key': 'A8NrNm4aqTxCiZ3HU2ZKHsOZyE9ID++ls...eyJwdWJfa2V5IjoiQThOck5tNGFxVHhDaVozSFUyWktIc0...
91000000john16495703809QmbtBRQCdJb43phHufuvfKc6oyA6aMH15Rygey8siYXhhu0xcc9f8f54c6f538c6c3a8dc58aef9c591362ae0da0x49f4580779525a07739ab68efb3fa4f2f4edc21feee7...bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6cosmos1kzrdznpsuhj8scw8p734eex07g0779vry46unacar grief adapt crisp enroll disagree keep awa...bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6...0x7e9b67979c02be2aec144527a8368e91cc31e57cb68b...{'pub_key': 'AuJljuNtsGVzelxAYia98hz89J7bH5rN6...eyJwdWJfa2V5IjoiQXVKbGp1TnRzR1Z6ZWx4QVlpYTk4aH...
\n" }, "execution_count": 2, "metadata": {}, @@ -118,7 +125,7 @@ ], "source": [ "claims_list = []\n", - "for i in range(NUMBER_OF_PARTICIPANTS):\n", + "for i in tqdm(range(NUMBER_OF_PARTICIPANTS)):\n", " claim_item = {'amount': CLAIM_AMOUNT_LIST[i],\n", " 'nickname': NICKNAME_LIST[i],\n", " 'avatar': AVATAR_CID_LIST[i]}\n", @@ -135,14 +142,7 @@ " claim_item['cosmos_seed'] = bostrom_wallet['seed']\n", "\n", " # Create message\n", - " # message_json = {\n", - " # \"nickname\": claim_item['nickname'],\n", - " # \"gift_claiming_address\": claim_item['ethereum_address'],\n", - " # \"gift_amount\": claim_item['amount'],\n", - " # \"target_address\": claim_item['bostrom_address']\n", - " # }\n", - " # claim_item['message'] = json.dumps(message_json)\n", - " claim_item['message'] = 'QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV'\n", + " claim_item['message'] = f\"{claim_item['bostrom_address']}:QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV\"\n", "\n", " # Sign message form Ethereum address\n", " ethereum_signed_message = \\\n", @@ -166,7 +166,7 @@ " claims_list.append(claim_item)\n", "\n", "claims_df = pd.DataFrame(claims_list)\n", - "claims_df.to_csv('claims_ethereum_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_df.to_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", "claims_df" ], "metadata": { @@ -179,7 +179,7 @@ { "cell_type": "markdown", "source": [ - "### Instantiate Passport Contract" + "### Create Merkle Tree, Get Root and Proofs" ], "metadata": { "collapsed": false, @@ -191,28 +191,15 @@ { "cell_type": "code", "execution_count": 3, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Passport contract address: bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\n" - ] - } - ], + "outputs": [], "source": [ - "if INIT_PASSPORT_CONTRACT:\n", - " init_output, init_error = execute_bash(\n", - " f'''INIT='{{\"name\":\"CPT\", \"minter\":\"{os.getenv('WALLET_ADDRESS')}\", \"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"symbol\":\"CPT\"}}' \\\n", - " && cyber tx wasm instantiate {PASSPORT_CODE_ID} \"$INIT\" --from $WALLET --label \"cybergift passport test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", - " if init_error:\n", - " print(init_error)\n", - " init_json = json.loads(init_output)\n", - " passport_contract_address = \\\n", - " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", - "else:\n", - " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", - "print(f'Passport contract address: {passport_contract_address}')" + "root_source_list = [{'address': _item['ethereum_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", + " [{'address': _item['cosmos_address'],\n", + " 'amount': str(_item['amount'])} for _item in claims_list]\n", + "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", + "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" ], "metadata": { "collapsed": false, @@ -222,42 +209,73 @@ } }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{('root_testing_source_10_addresses.json', 'temp/proofs_0.json', 0, 21)}\n", + "yarn run v1.22.17\n", + "$ ts-node index.ts --input root_testing_source_10_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 21\n", + "Merkle root: 3dc8421e3f4b94c8e3aed45c031e95a002007dfac135ca398314b163f15a2cee\n", + "Number of addresses in the Merkle tree: 21\n", + "Done in 3.58s.\n", + "\n" + ] + } + ], "source": [ - "### Instantiate Gift Contract" + "NUMBER_OF_THREADS = 10\n", + "BASH_SIZE = 1000\n", + "\n", + "tasks = set(\n", + " (\n", + " (ROOT_SOURCE_FILE_NAME,\n", + " f'temp/proofs_{i}.json',\n", + " i * BASH_SIZE,\n", + " min(NUMBER_OF_PARTICIPANTS * 2 + 1, (i + 1) * BASH_SIZE + 1))\n", + " for i in range(ceil(2 * NUMBER_OF_PARTICIPANTS/BASH_SIZE))\n", + " )\n", + ")\n", + "print(tasks)\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(get_proofs, tasks)\n", + "assert res == [True] * len(res)" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%% md\n" + "name": "#%%\n" } } }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract address: bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\n" - ] + "data": { + "text/plain": " address amount \\\n0 0x9124d6592264ae9e6693dfa39b8f82f16182419c 1000000 \n1 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa 1000000 \n2 0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359 1000000 \n3 0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8 1000000 \n4 0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149 1000000 \n5 0xc45e14572ad2ec57da27faab28919bbda692037e 1000000 \n6 0xb66bcd3431cc5b1999f98c608963fa9ff2a5d0d2 1000000 \n7 0xcb6babdbc3dd4f702237dfdd644ddbc676055e86 1000000 \n8 0x1b15c1f4711a8f32f299ccc6121bcac89770a13f 1000000 \n9 0xcc9f8f54c6f538c6c3a8dc58aef9c591362ae0da 1000000 \n10 cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl 1000000 \n11 cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8 1000000 \n12 cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw 1000000 \n13 cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x 1000000 \n14 cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93 1000000 \n15 cosmos13f4sr82dux0kfu7uma3atv7frhzx57gh0g37c6 1000000 \n16 cosmos1pypc2s9dh0f6yp0xcqwjap99l5k75qgmzezq4f 1000000 \n17 cosmos13ugfw2hr7s8f0yttczg8e2v6v04dlwwaqrvxaf 1000000 \n18 cosmos19pfkg9t5nvsmmjffsjv6k625xy98esgu426c6r 1000000 \n19 cosmos1kzrdznpsuhj8scw8p734eex07g0779vry46una 1000000 \n20 0xf2749114feaad68854e01c8ee762c7170532fdfd 10000000 \n\n proof \n0 [78900d7c06c43ae20970087421f80e49257815363f6a3... \n1 [d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114... \n2 [9d5777f2aee55468fcd9a426466d35917086cc43855ca... \n3 [5e42909234f9266f1a6cac6f517ca7971472cf36a9308... \n4 [d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5... \n5 [e9774d5437498124573647289f2644bf38883f338f882... \n6 [3030215ce1bd034297d5a9c5261eb17c827fdfebf7e83... \n7 [b498a35a47dfd85c3f4e59859952eb3d24041f4deb0fc... \n8 [2c95a091c7f94fc231386ca44cab8f7db16da40dc54cd... \n9 [82773830b6b2d0bc76832c66fc9ac3e2fb9b6e6c84fe3... \n10 [30fdf3cb4f18b08a20a2db3acc5ac961095089672200b... \n11 [c571aa4a3bb95f180e8865ac710746125a1d2936940a1... \n12 [d560e34d04482e9002c51c4155cc578ad1083221e4d87... \n13 [97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640... \n14 [1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922... \n15 [13f37008c6c89394e615b6364285ad49bee702aead436... \n16 [7e9525a33b54415b76ebf3ffafa075390d3f2978b0db5... \n17 [87e33d647e99fb3b55137be5085df925d6a2281d6cdc5... \n18 [f06c989e17e5be69f92632911aefe6c0cceeee318a46a... \n19 [2d45e290725a0cad1c162b89cb246f4ae12aaada24584... \n20 [733457c1598a18d306bfe0827f58d38573d2d35a4e98c... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
addressamountproof
00x9124d6592264ae9e6693dfa39b8f82f16182419c1000000[78900d7c06c43ae20970087421f80e49257815363f6a3...
10x042a2bb0e4acd457bcadda6e05827aa83ebe91fa1000000[d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114...
20x0329bbdbf79eaf87d8d77ecb71f7f8d8165443591000000[9d5777f2aee55468fcd9a426466d35917086cc43855ca...
30x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a81000000[5e42909234f9266f1a6cac6f517ca7971472cf36a9308...
40xcd012b8e0c4a5bd5c9283a0a4281ec553420d1491000000[d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5...
50xc45e14572ad2ec57da27faab28919bbda692037e1000000[e9774d5437498124573647289f2644bf38883f338f882...
60xb66bcd3431cc5b1999f98c608963fa9ff2a5d0d21000000[3030215ce1bd034297d5a9c5261eb17c827fdfebf7e83...
70xcb6babdbc3dd4f702237dfdd644ddbc676055e861000000[b498a35a47dfd85c3f4e59859952eb3d24041f4deb0fc...
80x1b15c1f4711a8f32f299ccc6121bcac89770a13f1000000[2c95a091c7f94fc231386ca44cab8f7db16da40dc54cd...
90xcc9f8f54c6f538c6c3a8dc58aef9c591362ae0da1000000[82773830b6b2d0bc76832c66fc9ac3e2fb9b6e6c84fe3...
10cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl1000000[30fdf3cb4f18b08a20a2db3acc5ac961095089672200b...
11cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy81000000[c571aa4a3bb95f180e8865ac710746125a1d2936940a1...
12cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw1000000[d560e34d04482e9002c51c4155cc578ad1083221e4d87...
13cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x1000000[97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640...
14cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca931000000[1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922...
15cosmos13f4sr82dux0kfu7uma3atv7frhzx57gh0g37c61000000[13f37008c6c89394e615b6364285ad49bee702aead436...
16cosmos1pypc2s9dh0f6yp0xcqwjap99l5k75qgmzezq4f1000000[7e9525a33b54415b76ebf3ffafa075390d3f2978b0db5...
17cosmos13ugfw2hr7s8f0yttczg8e2v6v04dlwwaqrvxaf1000000[87e33d647e99fb3b55137be5085df925d6a2281d6cdc5...
18cosmos19pfkg9t5nvsmmjffsjv6k625xy98esgu426c6r1000000[f06c989e17e5be69f92632911aefe6c0cceeee318a46a...
19cosmos1kzrdznpsuhj8scw8p734eex07g0779vry46una1000000[2d45e290725a0cad1c162b89cb246f4ae12aaada24584...
200xf2749114feaad68854e01c8ee762c7170532fdfd10000000[733457c1598a18d306bfe0827f58d38573d2d35a4e98c...
\n
" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "if INIT_GIFT_CONTRACT:\n", - " init_output, init_error = execute_bash(\n", - " f'''INIT='{{\"owner\":\"{os.getenv('WALLET_ADDRESS')}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}' \\\n", - " && cyber tx wasm instantiate {GIFT_CODE_ID} \"$INIT\" --from $WALLET --amount {INITIAL_BALANCE}boot --label \"cybergift test\" -y --gas 3500000 --broadcast-mode block -o json --chain-id={NETWORK} --node={NODE_URL}''')\n", - " if init_error:\n", - " print(init_error)\n", - " init_json = json.loads(init_output)\n", - " gift_contract_address = \\\n", - " [event['attributes'][0]['value'] for event in init_json['logs'][0]['events'] if event['type'] == 'instantiate'][0]\n", - "else:\n", - " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", - "print(f'Gift contract address: {gift_contract_address}')" + "roots = []\n", + "proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + "for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = proofs_df.append(pd.DataFrame(root_and_proof_json['proofs']), ignore_index=True)\n", + "assert roots == [roots[0]] * len(roots)\n", + "root = roots[0]\n", + "proofs_df" ], "metadata": { "collapsed": false, @@ -268,57 +286,34 @@ }, { "cell_type": "code", - "execution_count": 26, - "outputs": [], + "execution_count": 6, + "outputs": [ + { + "data": { + "text/plain": " amount nickname avatar \\\n0 1000000 john16495703800 QmegFZS691C4pJFaFS3NVDNLd5PtjmMiJHJKtqzSsz2tBZ \n1 1000000 john16495703801 QmbAqD21zVJD6D2kvoGnV1Fb8T5XKUG81V8Y7iZVHnpisC \n2 1000000 john16495703802 QmdYTELFKWGpiZ6Qaf6bDHavRMrJ5nmqMTc94mwtnNzr6M \n3 1000000 john16495703803 QmTqzfWV7DsGQsyoMHJTVBRkDtKBEjy5hPErMRfpbmimPm \n4 1000000 john16495703804 QmNWiHGs9WjmzbcQz96fugBm2Bu6CR3uZVsMuiM1tr4wYD \n\n ethereum_address \\\n0 0x9124d6592264ae9e6693dfa39b8f82f16182419c \n1 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa \n2 0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359 \n3 0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8 \n4 0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149 \n\n ethereum_private_key \\\n0 0xcf156a52fd254b48a87c77926630089376a2e6d507f5... \n1 0x46a7e94a530954956533e1a923d07c212eafc00a8d23... \n2 0xcdf21ac40a23b30ac2208d9e3f72c7b798068df70f39... \n3 0x08669cd3a21d69b25991ac891c5d1529b64fc893f846... \n4 0xb241a6f909672108710c007c1ea3173656139243deaa... \n\n bostrom_address \\\n0 bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c \n1 bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q \n2 bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf \n3 bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp \n4 bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk \n\n cosmos_address \\\n0 cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl \n1 cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8 \n2 cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw \n3 cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x \n4 cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93 \n\n cosmos_seed \\\n0 mixed february demise clinic master race famou... \n1 quantum seed good glass spend spread usual sur... \n2 lava protect work pulse guess toss rocket volu... \n3 medal medal pull rule blur result gift agree g... \n4 hope someone gown grain execute reason chaos g... \n\n message \\\n0 bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c... \n1 bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q... \n2 bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf... \n3 bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp... \n4 bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk... \n\n ethereum_message_signature \\\n0 0x9a2bbfc7ab3c7d4ed8910b0a495931c8a055c2fc29e7... \n1 0x5297763d57331039613520d1de1c9f94b0bf104d6fd2... \n2 0x3b7e242a976bd013862872532234536ea2e3397d3411... \n3 0x90d40af4947b8a499c22c79e1ea29cea981be1f819db... \n4 0xcc8656d43b15788c5e0400596f5cebd760da1fd0b75e... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A89DQdUqRt7dzpi8/1Jxyb1hh+a6Q0bGo... \n1 {'pub_key': 'At5DOzq36uQeOGT//9kV3HcsPmy4HTAsO... \n2 {'pub_key': 'Aph+/Mv0rOA0Ft+8iP6s7UJqTdOXK8tsK... \n3 {'pub_key': 'A055jXQh2nQUJQQdlssNe0ZWQf9KRkUba... \n4 {'pub_key': 'Ao00rX4/WgQwgoR9wgwOTEgNq5mh9qfDI... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTg5RFFkVXFSdDdkenBpOC8xSnh5Yj... \n1 eyJwdWJfa2V5IjoiQXQ1RE96cTM2dVFlT0dULy85a1YzSG... \n2 eyJwdWJfa2V5IjoiQXBoKy9NdjByT0EwRnQrOGlQNnM3VU... \n3 eyJwdWJfa2V5IjoiQTA1NWpYUWgyblFVSlFRZGxzc05lMF... \n4 eyJwdWJfa2V5IjoiQW8wMHJYNC9XZ1F3Z29SOXdnd09URW... \n\n ethereum_proof \\\n0 [78900d7c06c43ae20970087421f80e49257815363f6a3... \n1 [d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114... \n2 [9d5777f2aee55468fcd9a426466d35917086cc43855ca... \n3 [5e42909234f9266f1a6cac6f517ca7971472cf36a9308... \n4 [d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5... \n\n cosmos_proof \n0 [30fdf3cb4f18b08a20a2db3acc5ac961095089672200b... \n1 [c571aa4a3bb95f180e8865ac710746125a1d2936940a1... \n2 [d560e34d04482e9002c51c4155cc578ad1083221e4d87... \n3 [97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640... \n4 [1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
01000000john16495703800QmegFZS691C4pJFaFS3NVDNLd5PtjmMiJHJKtqzSsz2tBZ0x9124d6592264ae9e6693dfa39b8f82f16182419c0xcf156a52fd254b48a87c77926630089376a2e6d507f5...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04ccosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutlmixed february demise clinic master race famou...bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c...0x9a2bbfc7ab3c7d4ed8910b0a495931c8a055c2fc29e7...{'pub_key': 'A89DQdUqRt7dzpi8/1Jxyb1hh+a6Q0bGo...eyJwdWJfa2V5IjoiQTg5RFFkVXFSdDdkenBpOC8xSnh5Yj...[78900d7c06c43ae20970087421f80e49257815363f6a3...[30fdf3cb4f18b08a20a2db3acc5ac961095089672200b...
11000000john16495703801QmbAqD21zVJD6D2kvoGnV1Fb8T5XKUG81V8Y7iZVHnpisC0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa0x46a7e94a530954956533e1a923d07c212eafc00a8d23...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366qcosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8quantum seed good glass spend spread usual sur...bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q...0x5297763d57331039613520d1de1c9f94b0bf104d6fd2...{'pub_key': 'At5DOzq36uQeOGT//9kV3HcsPmy4HTAsO...eyJwdWJfa2V5IjoiQXQ1RE96cTM2dVFlT0dULy85a1YzSG...[d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114...[c571aa4a3bb95f180e8865ac710746125a1d2936940a1...
21000000john16495703802QmdYTELFKWGpiZ6Qaf6bDHavRMrJ5nmqMTc94mwtnNzr6M0x0329bbdbf79eaf87d8d77ecb71f7f8d8165443590xcdf21ac40a23b30ac2208d9e3f72c7b798068df70f39...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnfcosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdwlava protect work pulse guess toss rocket volu...bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf...0x3b7e242a976bd013862872532234536ea2e3397d3411...{'pub_key': 'Aph+/Mv0rOA0Ft+8iP6s7UJqTdOXK8tsK...eyJwdWJfa2V5IjoiQXBoKy9NdjByT0EwRnQrOGlQNnM3VU...[9d5777f2aee55468fcd9a426466d35917086cc43855ca...[d560e34d04482e9002c51c4155cc578ad1083221e4d87...
31000000john16495703803QmTqzfWV7DsGQsyoMHJTVBRkDtKBEjy5hPErMRfpbmimPm0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a80x08669cd3a21d69b25991ac891c5d1529b64fc893f846...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mpcosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9xmedal medal pull rule blur result gift agree g...bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp...0x90d40af4947b8a499c22c79e1ea29cea981be1f819db...{'pub_key': 'A055jXQh2nQUJQQdlssNe0ZWQf9KRkUba...eyJwdWJfa2V5IjoiQTA1NWpYUWgyblFVSlFRZGxzc05lMF...[5e42909234f9266f1a6cac6f517ca7971472cf36a9308...[97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640...
41000000john16495703804QmNWiHGs9WjmzbcQz96fugBm2Bu6CR3uZVsMuiM1tr4wYD0xcd012b8e0c4a5bd5c9283a0a4281ec553420d1490xb241a6f909672108710c007c1ea3173656139243deaa...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmkcosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93hope someone gown grain execute reason chaos g...bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk...0xcc8656d43b15788c5e0400596f5cebd760da1fd0b75e...{'pub_key': 'Ao00rX4/WgQwgoR9wgwOTEgNq5mh9qfDI...eyJwdWJfa2V5IjoiQW8wMHJYNC9XZ1F3Z29SOXdnd09URW...[d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e5...[1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922...
\n
" + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "def get_contract_name(contract_address: str) -> str:\n", - " if contract_address == gift_contract_address:\n", - " return 'Gift Contract'\n", - " elif contract_address == passport_contract_address:\n", - " return 'Passport Contract'\n", - " elif contract_address == os.getenv('WALLET_ADDRESS'):\n", - " return 'Wallet'\n", - " else:\n", - " return contract_address\n", + "cosmos_proofs_df = proofs_df[proofs_df.address.str.startswith('cosmos')][['address', 'proof']]\n", + "ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", "\n", + "claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='left',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='left',\n", + " on='cosmos_address')\n", "\n", - "def parse_contract_execution_json(contract_execution_json: str) -> None:\n", - " for log_item in json.loads(contract_execution_json)['logs']:\n", - " for event_item in log_item['events']:\n", - " print('')\n", - " if event_item['type'] == 'message':\n", - " if len(event_item[\"attributes\"]) == 3:\n", - " print(f'message from {get_contract_name(event_item[\"attributes\"][-1][\"value\"])} {event_item[\"attributes\"][1][\"value\"]} {event_item[\"attributes\"][0][\"value\"]}')\n", - " else:\n", - " print(event_item)\n", - " elif event_item['type'] == 'execute':\n", - " if len(event_item[\"attributes\"]) == 1:\n", - " print(f'execute contract: {get_contract_name(event_item[\"attributes\"][0][\"value\"])}')\n", - " else:\n", - " print(event_item)\n", - " elif event_item['type'] == 'cyberlink':\n", - " print('cyberlinks')\n", - " for i in range(len(event_item['attributes'])//2):\n", - " print(f'\\t{event_item[\"attributes\"][i * 2][\"value\"]} -> {event_item[\"attributes\"][i * 2 + 1][\"value\"]}')\n", - " print(f'\\tneuron: {get_contract_name(event_item[\"attributes\"][-1][\"value\"])}')\n", - " elif event_item['type'] == 'coin_received':\n", - " print('coin_received')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'coin_spent':\n", - " print('coin_spent')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'wasm':\n", - " print('wasm')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " elif event_item['type'] == 'transfer':\n", - " print('transfer')\n", - " for attr_item in event_item[\"attributes\"]:\n", - " print(f'\\t{attr_item[\"key\"]}: {get_contract_name(attr_item[\"value\"])}')\n", - " else:\n", - " print(event_item)" + "claims_with_proofs_df.to_csv('claims_ethereum_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + "claims_with_proofs_df.head()" ], "metadata": { "collapsed": false, @@ -329,7 +324,10 @@ }, { "cell_type": "markdown", - "source": [], + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], "metadata": { "collapsed": false, "pycharm": { @@ -338,55 +336,85 @@ } }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", + "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", + "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" + ] + } + ], "source": [ - "### Create Merkle Root" + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph')\n", + " proof_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph')\n", + "else:\n", + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%% md\n" + "name": "#%%\n" } } }, { - "cell_type": "code", - "execution_count": 6, - "outputs": [], + "cell_type": "markdown", "source": [ - "root_source_list = [{'address': _item['ethereum_address'],\n", - " 'amount': str(_item['amount'])} for _item in claims_list]+ \\\n", - " [{'address': _item['cosmos_address'],\n", - " 'amount': str(_item['amount'])} for _item in claims_list]\n", - "\n", - "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", - " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + "### Instantiate Passport Contract" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } } }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Merkle root: cec353c5df0b490ab2679ce623deda7205e73280f54a8aaf90e840ba22b1b1c8\n" + "Passport contract address: bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\n" ] } ], "source": [ - "execute_bash(f'rm {ROOT_FILE_NAME}')\n", - "root_output, root_error = execute_bash(\n", - " f'merkle-airdrop-cli generateRoot --file {ROOT_SOURCE_FILE_NAME} >> {ROOT_FILE_NAME} && cat {ROOT_FILE_NAME}')\n", - "root = root_output.replace('\\n', '')\n", - "print(f'Merkle root: {root}')" + "if INIT_PASSPORT_CONTRACT:\n", + " passport_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport')\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" ], "metadata": { "collapsed": false, @@ -395,16 +423,33 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subgraph Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "outputs": [], "source": [ - "root_register_output, root_register_error = \\\n", - " execute_bash(\n", - " f'''REGISTER='{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}' \\\n", - " && CONTRACT=\"{gift_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET --broadcast-mode block -y --chain-id={NETWORK} --node={NODE_URL}''')" + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" ], "metadata": { "collapsed": false, @@ -416,36 +461,38 @@ { "cell_type": "markdown", "source": [ - "#### Get Merkle Root form the Gift Contract" + "### Instantiate Gift Contract" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - }, - "execution_count": 156 + } }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "data:\n", - " merkle_root: cec353c5df0b490ab2679ce623deda7205e73280f54a8aaf90e840ba22b1b1c8\n", - "\n" + "Gift contract address: bostrom1nn0hd8l3fqhxhsgdeqp3rew79w2nrtm5qedrvamd7a54r2c0czjqj5hcsn\n" ] } ], "source": [ - "print(\n", - " execute_bash(\n", - " f'''QUERY='{{\"merkle_root\": {{}}}}' \\\n", - " && cyber query wasm contract-state smart {gift_contract_address} \"$QUERY\" --chain-id={NETWORK} --node={NODE_URL}''')[0]\n", - ")" + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift')\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" ], "metadata": { "collapsed": false, @@ -457,7 +504,7 @@ { "cell_type": "markdown", "source": [ - "### Create Passports" + "### Initiate Class of Output Parsing" ], "metadata": { "collapsed": false, @@ -468,150 +515,17 @@ }, { "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "data": { - "text/plain": "0it [00:00, ?it/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "e03630b3a83a42fdb5df85519fdb03b8" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "REGISTER='{\"create_passport\":{\"avatar\":\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\", \"nickname\":\"john16445669770\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"237661\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224329\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"mint\"\n", - " },\n", - " {\n", - " \"key\": \"minter\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"token_id\",\n", - " \"value\": \"11\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"mint\\\"},{\\\"key\\\":\\\"minter\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"token_id\\\",\\\"value\\\":\\\"11\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"9F8DBAE2338C4594A11B5A71CBEAC2DDFA7BE9EB0D782C7BF0CC397E1665B1FD\"\n", - "}\n" - ] - } - ], + "execution_count": 11, + "outputs": [], "source": [ - "def create_passport(claim_row: pd.Series, display_data: bool = False):\n", - " return execute_bash(\n", - " f'''REGISTER='{{\"create_passport\":{{\"avatar\":\"{claim_row[\"avatar\"]}\", \"nickname\":\"{claim_row[\"nickname\"]}\"}}}}' \\\n", - " && CONTRACT=\"{passport_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", - "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", - " if index == 0:\n", - " create_passport_json, _ = create_passport(row, display_data=True)\n", - " else:\n", - " create_passport(row)" + "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", + " address_dict= {\n", + " gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" ], "metadata": { "collapsed": false, @@ -620,36 +534,58 @@ } } }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 12, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "cyberlinks\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v\n", - "\tQmeT4VmXf4nP2i5UJ9K54HbGr5ZTH3rZnW7bwtmuNrsqkX -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tQmeubEhpA6e8bV8P2Q9fmpcQrkVNcSHYFszcunconYm58v -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tneuron: Passport Contract\n", + "Events\n", "\n", - "execute contract: Passport Contract\n", + "execute\n", + "\texecute contract: Gift Contract\n", "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: mint\n", - "\tminter: Passport Contract\n", - "\ttoken_id: 11\n" + "\t_contract_address: Gift Contract\n", + "\taction: register_merkle_root\n", + "\tmerkle_root: 3dc8421e3f4b94c8e3aed45c031e95a002007dfac135ca398314b163f15a2cee\n", + "Gas used: 121,232\n", + "Tx hash: 85B31F8C7895D79C33B890F77B7F87B5F3218E217B4C489D2189575E2C3E34D4\n" ] } ], "source": [ - "parse_contract_execution_json(create_passport_json)" + "root_register_output = execute_contract_bash(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", + " from_address=WALLET_ADDRESS,\n", + " contract_address=gift_contract_address)\n", + "contract_utils.parse_contract_execution_json(root_register_output)" ], "metadata": { "collapsed": false, @@ -661,335 +597,33 @@ { "cell_type": "markdown", "source": [ - "### Proof (Add) Address to Passports" + "#### Get Merkle Root form the Gift Contract" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "execution_count": 156 }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "outputs": [ - { - "data": { - "text/plain": "0it [00:00, ?it/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "91cc53b2e0754ccb9e032c03b38d4c46" - } - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669770\", \"address\":\"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\", \"signature\":\"eyJwdWJfa2V5IjoiQWlXb1NTQ1BhcFZsNW9iL0xIamxRelFrdytrU0xUSGJjdVR2emp5TStTVUsiLCJzaWduYXR1cmUiOiJJZUt0WmRLSE1uKy9uV0V5YkVLWjBTbS8yL0x0YVIzNGFaQzY2emZ1Q1hBTW5mN1pYV2hXUlgzYWNEbkNFVk1jVEZYVUQ2Z2NqdnNZdndCeG95NFN5QT09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"206533\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224332\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16445669770\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmW3UBwP6ZvfqcZ787RuioE5fWWXm9mqKapK1Z7gchjT1T\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669770\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos1t6hlkgpkwgx4qx2qjctd6hnzj6emn77zrdlcch\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"43A6ED5B08EAC2D508376660D8F2BF8E58F642271FC7E2B91B1A85ACD4CBDD78\"\n", - "}\n", - "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669771\", \"address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\", \"signature\":\"0xc37be3a26e4add0a57fde48d3ba130a126e1195350f03354b4f989960eb3e3196f272979d3da106b731fa38e3a12572ecae121fdc3899ecf846819d04b94b0b51b\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"204108\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224333\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16445669771\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669771\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"F98E65A9189B34C22B362D1CE4A7E2BAB6BC896C1E31B1CEA938FBFCE8225A4A\"\n", - "}\n", - "REGISTER='{\"proof_address\":{\"nickname\":\"john16445669771\", \"address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\", \"signature\":\"eyJwdWJfa2V5IjoiQTFRZW91THFaemVYbU9pY1Q1OUFZYWpCMHlubXRlU2VzUnVNK3E3MHl5ckYiLCJzaWduYXR1cmUiOiJibzJQWGMxNmZRTW9JTUxmM0FWWGhKcWc0TGdFMWc5SVZtdUxQN2RqWnRKM0FUa0VvTzVlckxNUjZtNXYyY3ZENEU1NDd2RE9sU1M3aCtQa3pWWDhJZz09In0=\"}}' && CONTRACT=\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\" && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"206533\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224334\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\"\n", - " },\n", - " {\n", - " \"key\": \"particleFrom\",\n", - " \"value\": \"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\"\n", - " },\n", - " {\n", - " \"key\": \"particleTo\",\n", - " \"value\": \"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\"\n", - " },\n", - " {\n", - " \"key\": \"neuron\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"cyberlink\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"proof_address\"\n", - " },\n", - " {\n", - " \"key\": \"nickname\",\n", - " \"value\": \"john16445669771\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"cyberlink\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\\\"},{\\\"key\\\":\\\"particleFrom\\\",\\\"value\\\":\\\"QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\\\"},{\\\"key\\\":\\\"particleTo\\\",\\\"value\\\":\\\"QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\\\"},{\\\"key\\\":\\\"neuron\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1ttftq90jgl6cms2y0awsatx8rnf99m2u2l6cmdtd427yg6g3myvqgsm4nu\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"proof_address\\\"},{\\\"key\\\":\\\"nickname\\\",\\\"value\\\":\\\"john16445669771\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"9C6A4995EEEE4201DA9F4137DFBC5EEEF4847A673AB8AC83E155813DD0F3AE49\"\n", - "}\n" + "Gift contract bostrom1nn0hd8l3fqhxhsgdeqp3rew79w2nrtm5qedrvamd7a54r2c0czjqj5hcsn\n", + "{'data': {'merkle_root': '3dc8421e3f4b94c8e3aed45c031e95a002007dfac135ca398314b163f15a2cee'}}\n" ] } ], "source": [ - "def proof_address(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_bash(\n", - " f'''REGISTER='{{\"proof_address\":{{\"nickname\":\"{claim_row[\"nickname\"]}\", \"address\":\"{claim_row[network + \"_address\"]}\", \"signature\":\"{claim_row[network + \"_message_signature\"]}\"}}}}' \\\n", - " && CONTRACT=\"{passport_contract_address}\" \\\n", - " && cyber tx wasm execute $CONTRACT \"$REGISTER\" --from $WALLET -o json --broadcast-mode block -y --gas=400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", - "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", - " if index == 1:\n", - " proof_ethereum_address_json, _ = proof_address(row, display_data=True)\n", - " proof_cosmos_address_json, _ = proof_address(row, network='cosmos', display_data=True)\n", - " else:\n", - " proof_address(row)\n", - " proof_address(row, network='cosmos', display_data=True)" + "print(f'Gift contract {gift_contract_address}')\n", + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))" ], "metadata": { "collapsed": false, @@ -999,69 +633,123 @@ } }, { - "cell_type": "code", - "execution_count": 28, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "cyberlinks\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri\n", - "\tQmPbwkom19D6txb69sfz2x4UznTYnJ8jKxqFhwUPnXeMri -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tneuron: Passport Contract\n", - "\n", - "execute contract: Passport Contract\n", - "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16445669771\n", - "\taddress: 0x42931499d6d14a05fb312808123a564e30a66a0c\n" - ] + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" } - ], + } + }, + { + "cell_type": "markdown", "source": [ - "parse_contract_execution_json(proof_ethereum_address_json)" + "### Send coins to new addresses" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } } }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 14, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "cyberlinks\n", - "\tQmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf -> QmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR\n", - "\tQmWJy7gCB6qp1YcsJLaY8PbodwnQvVXjGmSAedNJdEB6uR -> QmNbQbcUooRXS5gepU1M78qGUKE25x7aJfo6GKTEWn9amf\n", - "\tneuron: Passport Contract\n", + "Events\n", "\n", - "execute contract: Passport Contract\n", + "coin received\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6\n", + "\tamount: 1boot\n", "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "coin spent\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16445669771\n", - "\taddress: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n" + "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", + "\n", + "transfer\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13f4sr82dux0kfu7uma3atv7frhzx57ghvm9dxa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pypc2s9dh0f6yp0xcqwjap99l5k75qgmp2kntw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13ugfw2hr7s8f0yttczg8e2v6v04dlwwarsc4rw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19pfkg9t5nvsmmjffsjv6k625xy98esgukewtyy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kzrdznpsuhj8scw8p734eex07g0779vr8xw0d6\n", + "\tamount: 1boot\n", + "Gas used: 291,894\n", + "Tx hash: 55CDAD5B0692ACDD9A5DD1281C0CAD93B0ABEF41D52D521CEB1CC35F87EB1CC0\n" ] } ], "source": [ - "parse_contract_execution_json(proof_cosmos_address_json)" + "bostrom_addresses = claims_with_proofs_df.bostrom_address.to_list()\n", + "NUMBER_ADDRESSES_IN_SENDING_CHUNK = 1000\n", + "bostrom_addresses_chunks = [bostrom_addresses[i: i+ NUMBER_ADDRESSES_IN_SENDING_CHUNK] for i in range(0, len(bostrom_addresses), NUMBER_ADDRESSES_IN_SENDING_CHUNK)]\n", + "\n", + "for bostrom_addresses_item in bostrom_addresses_chunks:\n", + " send_output = contract_utils.send_coins(\n", + " from_seed=WALLET_SEED,\n", + " to_addresses=claims_with_proofs_df.bostrom_address.to_list(),\n", + " amounts=[1] * len(claims_with_proofs_df.bostrom_address.to_list()),\n", + " gas=min(71000 * len(claims_with_proofs_df.bostrom_address.to_list()), int(23e6)),\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(contract_execution_json=send_output)" ], "metadata": { "collapsed": false, @@ -1073,7 +761,7 @@ { "cell_type": "markdown", "source": [ - "### Generate Proofs and Claim" + "### Create Passports" ], "metadata": { "collapsed": false, @@ -1092,7 +780,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "0f9fede9ba2145a4b04246aac54c4303" + "model_id": "104e629a228f405caec0d8f478d061f3" } }, "metadata": {}, @@ -1102,262 +790,43 @@ "name": "stdout", "output_type": "stream", "text": [ - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address 0x42931499d6d14a05fb312808123a564e30a66a0c --amount 1477000\n", - "b\"[\\n 'b9bf7453f7b3442c281fd3c3ffa2aec387395682c0d16cb6800f8ca06c407e44',\\n '8b39367c8d583dc84ff9adf8dc57424b28520bb7dfd3e2b001370c22b5d12626'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16445669771\", \"gift_claiming_address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\", \"gift_amount\":\"1477000\", \"proof\":[\"b9bf7453f7b3442c281fd3c3ffa2aec387395682c0d16cb6800f8ca06c407e44\",\"8b39367c8d583dc84ff9adf8dc57424b28520bb7dfd3e2b001370c22b5d12626\"]}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"308419\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224337\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"claim\"\n", - " },\n", - " {\n", - " \"key\": \"original\",\n", - " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", - " },\n", - " {\n", - " \"key\": \"target\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"28885541\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"28885541\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"3F3C36A7051F081F668E69C878654A731DB657A3E0EF973DB55BF9A58CA33EE6\"\n", - "}\n", - "merkle-airdrop-cli generateProofs --file root_testing_source_2_addresses.json --address cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk --amount 1477000\n", - "b\"[\\n '6cd0edca780f0eaa32b8def55e83445bc56381aa2a7bac2d08680a7318c1fc88',\\n '3ffd6f13d7134caab82a3a5bade2fb3f22d6c40153d7ee1560b6a458b70f3bc1'\\n]\\n\"\n", - "CLAIM='{\"claim\":{\"nickname\":\"john16445669771\", \"gift_claiming_address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\", \"gift_amount\":\"1477000\", \"proof\":[\"6cd0edca780f0eaa32b8def55e83445bc56381aa2a7bac2d08680a7318c1fc88\",\"3ffd6f13d7134caab82a3a5bade2fb3f22d6c40153d7ee1560b6a458b70f3bc1\"]}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"308810\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224338\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"100000boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"claim\"\n", - " },\n", - " {\n", - " \"key\": \"original\",\n", - " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", - " },\n", - " {\n", - " \"key\": \"target\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"28231082\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"100000boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"claim\\\"},{\\\"key\\\":\\\"original\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"},{\\\"key\\\":\\\"target\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"28231082\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"4CE9DC78AEA4A566A60884AF618CFAFE5FF1C3B9804354603E9C2BE2623EA574\"\n", - "}\n" + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tPassport Owner Address -> Nickname\n", + "\tNickname -> Passport Owner Address\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tNickname -> Avatar\n", + "\tAvatar -> Nickname\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: mint\n", + "\tminter: Passport Contract\n", + "\ttoken_id: 1413\n", + "Gas used: 440,183\n", + "Tx hash: CDA96114D1ED58B64B4A2F38BEF6E35C4181F9CD8236B14F039BCF39D2F30C50\n" ] } ], "source": [ - "def generate_proof_and_claim(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " proof_output, _ = execute_bash(f'merkle-airdrop-cli generateProofs --file {ROOT_SOURCE_FILE_NAME} --address {claim_row[network + \"_address\"]} --amount {claim_row.amount}',\n", - " display_data=display_data)\n", - " proof = proof_output.replace('\\n','').replace(\" \",'').replace(\"'\", '\"')\n", - " return execute_bash(\n", - " f'''CLAIM='{{\"claim\":{{\"nickname\":\"{claim_row['nickname']}\", \"gift_claiming_address\":\"{claim_row[network + \"_address\"]}\", \"gift_amount\":\"{claim_row.amount}\", \"proof\":{proof}}}}}' \\\n", - " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", - "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", - " if index == 1:\n", - " claim_ethereum_json, _ = generate_proof_and_claim(row, display_data=True)\n", - " claim_cosmos_json, _ = generate_proof_and_claim(row, network='cosmos', display_data=True)\n", + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 0:\n", + " create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(create_passport_json, row=row)\n", " else:\n", - " generate_proof_and_claim(row)\n", - " generate_proof_and_claim(row, network='cosmos')" + " contract_utils.create_passport(row)" ], "metadata": { "collapsed": false, @@ -1366,43 +835,96 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Proof (Add) Address to Passports" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 16, "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "fb6c020e0e4b4ff3a480f87cb525513f" + } + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ "\n", - "coin_received\n", - "\treceiver: Wallet\n", - "\tamount: 100000boot\n", + "Events\n", "\n", - "coin_spent\n", - "\tspender: Gift Contract\n", - "\tamount: 100000boot\n", + "cyberlinks\n", + "\tNickname -> Ethereum Address\n", + "\tEthereum Address -> Nickname\n", + "\tneuron: Proof Subgraph Contract\n", "\n", - "execute contract: Gift Contract\n", "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 100000boot\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: 0x42931499d6d14a05fb312808123a564e30a66a0c\n", - "\ttarget: Wallet\n", - "\tamount: 28885541\n" + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16495703801\n", + "\taddress: 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa\n", + "Gas used: 281,090\n", + "Tx hash: 96C7ADA679DC321B73BF5E090CFA8E086FB906E87B1133E3CD03234F4A568115\n", + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tNickname -> Cosmos Address\n", + "\tCosmos Address -> Nickname\n", + "\tneuron: Proof Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", + "\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16495703801\n", + "\taddress: cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8\n", + "Gas used: 284,525\n", + "Tx hash: 7FC12C2CD87496689399FD468AAA5E536AB9A04A712CCC016EB1F5C18C7B05BD\n" ] } ], "source": [ - "parse_contract_execution_json(claim_ethereum_json)" + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 1:\n", + " proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(proof_ethereum_address_json, row=row)\n", + "\n", + " proof_cosmos_address_json = contract_utils.proof_address(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(proof_cosmos_address_json, row=row)\n", + " else:\n", + " contract_utils.proof_address(row)\n", + " contract_utils.proof_address(row, network='cosmos')" ], "metadata": { "collapsed": false, @@ -1411,43 +933,355 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Claim" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 17, "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "c00adad4b7754a548dd287666781a483" + } + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ + "{'claim': {'nickname': 'john16495703800', 'gift_claiming_address': '0x9124d6592264ae9e6693dfa39b8f82f16182419c', 'gift_amount': '1000000', 'proof': ['78900d7c06c43ae20970087421f80e49257815363f6a3a3563f5ec29d28940d1', '8cfc554eaa1feae2ff77f1307b0341fbdf7edf6be643fbe6083fd025f5cc6328', '788ddba1a2fb402628dd12efa2aafbab89e1dfbd57d5c2b279626936a990ba2b', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x9124d6592264ae9e6693dfa39b8f82f16182419c\n", + "\ttarget: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 13,000,000\n", + "Gas used: 315,015\n", + "Tx hash: E5005F4F9F5489C312145A360E16DB493DE55AD9E50984540318611B09DF9C24\n", + "{'claim': {'nickname': 'john16495703800', 'gift_claiming_address': 'cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl', 'gift_amount': '1000000', 'proof': ['30fdf3cb4f18b08a20a2db3acc5ac961095089672200b30ca6d313065c5664c5', '68ee8354cf5d2c8231dda926d3f5a80df35e2f9417d067347c4671bc044715da', '788ddba1a2fb402628dd12efa2aafbab89e1dfbd57d5c2b279626936a990ba2b', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl\n", + "\ttarget: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 13,000,000\n", + "Gas used: 315,552\n", + "Tx hash: 0FC49AF516BFC03324E5A02B639AF8F42C91B67D562EEA501BA4975F56968176\n", + "{'claim': {'nickname': 'john16495703801', 'gift_claiming_address': '0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa', 'gift_amount': '1000000', 'proof': ['d0c8f5fc66c5a977340dd92568b1b989992f3b3c5b114c46455a5b2491bd9d6b', 'c2c29fd45a2eeebaf8c548789bc2c7412444469f8c24164d3d096bae98b198c1', '3793c33e8114594b79a2ac806df7a921d9b111babc33ce26433b3b29c6b8b7a0', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 100000boot\n", "\n", - "coin_received\n", - "\treceiver: Wallet\n", + "coin spent\n", + "\tspender: Gift Contract\n", "\tamount: 100000boot\n", "\n", - "coin_spent\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x042a2bb0e4acd457bcadda6e05827aa83ebe91fa\n", + "\ttarget: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 12,922,000\n", + "Gas used: 315,296\n", + "Tx hash: A839FC20A445A038B054DAE1604DC9C1F41626B2A23767772259282A818D1752\n", + "{'claim': {'nickname': 'john16495703801', 'gift_claiming_address': 'cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8', 'gift_amount': '1000000', 'proof': ['c571aa4a3bb95f180e8865ac710746125a1d2936940a1ffafecf98aadb2d41df', 'c2c29fd45a2eeebaf8c548789bc2c7412444469f8c24164d3d096bae98b198c1', '3793c33e8114594b79a2ac806df7a921d9b111babc33ce26433b3b29c6b8b7a0', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", "\tspender: Gift Contract\n", "\tamount: 100000boot\n", "\n", - "execute contract: Gift Contract\n", + "execute\n", + "\texecute contract: Gift Contract\n", "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Wallet\n", + "\trecipient: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", "\tsender: Gift Contract\n", "\tamount: 100000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: claim\n", - "\toriginal: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n", - "\ttarget: Wallet\n", - "\tamount: 28231082\n" + "\toriginal: cosmos162f8clv5ht6j2kmms0556j0mezuj3e6k679fy8\n", + "\ttarget: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\tamount: 12,844,000\n", + "Gas used: 315,761\n", + "Tx hash: 3E5B0D8D5F488749C6105A71318FC955DC2ACF818F0B10D8C563B9ADBE942F3F\n", + "{'claim': {'nickname': 'john16495703802', 'gift_claiming_address': '0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359', 'gift_amount': '1000000', 'proof': ['9d5777f2aee55468fcd9a426466d35917086cc43855ca8274b54ab69a3926763', '0f4f00eb184448c07e51dacabbacf44b650bcff804336cd35b53aea2f28b8210', '3793c33e8114594b79a2ac806df7a921d9b111babc33ce26433b3b29c6b8b7a0', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x0329bbdbf79eaf87d8d77ecb71f7f8d816544359\n", + "\ttarget: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 12,766,468\n", + "Gas used: 315,500\n", + "Tx hash: 56B810E9EC7BE15F13838BC24E61A30D3F09AA9DD68808B099EA1EEFC880877A\n", + "{'claim': {'nickname': 'john16495703802', 'gift_claiming_address': 'cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw', 'gift_amount': '1000000', 'proof': ['d560e34d04482e9002c51c4155cc578ad1083221e4d87016061a18fcb63f7406', '66f78f689f1978d3b6988865b455868e67c42f65330e2c75616b791c6d987b76', 'f4ddc1e9906cd06afa3d49b7f201b88b2a91abbcdb5ef77fd96f9064791bca4c', '487e9addb6ac54920bf3b68cab20c089b773e22db2e2b74f65795590cd5421fe']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos1he3vaq8knkx56tevl6mkel42eddq507mt0trdw\n", + "\ttarget: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\tamount: 12,689,404\n", + "Gas used: 314,581\n", + "Tx hash: 57C3DDED0189DFF25682AF6B901383F1E767366773295685FC3AE9199F845C5E\n", + "{'claim': {'nickname': 'john16495703803', 'gift_claiming_address': '0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8', 'gift_amount': '1000000', 'proof': ['5e42909234f9266f1a6cac6f517ca7971472cf36a9308f85e532d7dbb06139bd', '68ee8354cf5d2c8231dda926d3f5a80df35e2f9417d067347c4671bc044715da', '788ddba1a2fb402628dd12efa2aafbab89e1dfbd57d5c2b279626936a990ba2b', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0x2c105e1ce5bc66a3ec0eb18089b00a471e3bd0a8\n", + "\ttarget: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 12,612,805\n", + "Gas used: 315,704\n", + "Tx hash: F0E35A791B483BB675EE1A23F01D839E6C29DEB1FB0C63A5ACE4CB0A32225D73\n", + "{'claim': {'nickname': 'john16495703803', 'gift_claiming_address': 'cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x', 'gift_amount': '1000000', 'proof': ['97b75d463fd68f9b16cf586bdf6d0d6dd3044beb7a640a0b42030f5684554e1e', '8d0ba595bfdde180641f64244d954a8e6f7679f414880a820f9621fd440d7637', '3f5a7595a6098370287df811d2d2af459135cd0a8b7e71c4b5c02cb1cdd6eb28', '88942d0d4485753dca9f7593b98470a3e310fa20a4ad78b3548e310edc2f9294', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos1efylm4laztlkc0ydye3k6g6cx95h6khwa37d9x\n", + "\ttarget: bostrom1efylm4laztlkc0ydye3k6g6cx95h6khw7z27mp\n", + "\tamount: 12,536,668\n", + "Gas used: 315,976\n", + "Tx hash: 7F952323C46F76D62B74468F2675620CA24C369878673EF3E418F4FF3A0173AD\n", + "{'claim': {'nickname': 'john16495703804', 'gift_claiming_address': '0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149', 'gift_amount': '1000000', 'proof': ['d24b8d0cf08a253a44e55c4c134626b76f66b6b4e61e547479585f4f155817b0', '66f78f689f1978d3b6988865b455868e67c42f65330e2c75616b791c6d987b76', 'f4ddc1e9906cd06afa3d49b7f201b88b2a91abbcdb5ef77fd96f9064791bca4c', '487e9addb6ac54920bf3b68cab20c089b773e22db2e2b74f65795590cd5421fe']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: 0xcd012b8e0c4a5bd5c9283a0a4281ec553420d149\n", + "\ttarget: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 12,460,991\n", + "Gas used: 314,255\n", + "Tx hash: DD8D790592140D135DDC6811116B74D7FAB2E3BAEEA3E1992BDC12B59761B9B3\n", + "{'claim': {'nickname': 'john16495703804', 'gift_claiming_address': 'cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93', 'gift_amount': '1000000', 'proof': ['1504edb79fb0500537d30e48ee1ad4fda5c61b7ac9922d18f6bcac92d6b51ef6', 'ede12e4ad76960f7b154499c6a8bdad1546c29b6c0c944454948d6d3a3474e00', '4a9eef354ac65a0aea9fe072e011797544eaeb847f9aec2895be9a2709dd9e9f', '8fdbf3af68c6049a91547cdc34c7c7d862bc2445ba8e0688a4d334fa48e8fdf6', 'eee157a02965da2c68325270a3893ccad9644d1a717328f173758f04d9d31620']}}\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tsender: Gift Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: cosmos1z4gex65lzw62uqapaxctfku4588ulvgnkhca93\n", + "\ttarget: bostrom1z4gex65lzw62uqapaxctfku4588ulvgn4yvwmk\n", + "\tamount: 12,385,771\n", + "Gas used: 316,001\n", + "Tx hash: E0C2F2951E77A4CA44F3F16EBA34EC5D41103EB1A9895BC3186C9EC3EC86274A\n" ] } ], "source": [ - "parse_contract_execution_json(claim_cosmos_json)" + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 0:\n", + " claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(claim_ethereum_json)\n", + "\n", + " claim_cosmos_json = contract_utils.claim(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(claim_cosmos_json)\n", + " else:\n", + " claim_ethereum_json_2 = contract_utils.claim(row)\n", + " contract_utils.parse_contract_execution_json(claim_ethereum_json_2)\n", + "\n", + " claim_cosmos_json_2 = contract_utils.claim(row, network='cosmos')\n", + " contract_utils.parse_contract_execution_json(claim_cosmos_json_2)" ], "metadata": { "collapsed": false, @@ -1479,7 +1313,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "8de1eda2e0714816b3d244b1894c61d8" + "model_id": "880e97937b774e1b9a8bfc16bed1176d" } }, "metadata": {}, @@ -1489,309 +1323,80 @@ "name": "stdout", "output_type": "stream", "text": [ - "CLAIM='{\"release\":{\"gift_address\":\"0x42931499d6d14a05fb312808123a564e30a66a0c\"}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"159137\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224341\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"release\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"gift_address\",\n", - " \"value\": \"0x42931499d6d14a05fb312808123a564e30a66a0c\"\n", - " },\n", - " {\n", - " \"key\": \"stage\",\n", - " \"value\": \"9\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2878554\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"0x42931499d6d14a05fb312808123a564e30a66a0c\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2878554\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"A1E6B341DB43CF410B32F31BC46EA6166E08D7F92CF7CC83A7F74DDC7FC48579\"\n", - "}\n", - "CLAIM='{\"release\":{\"gift_address\":\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"}}' && cyber tx wasm execute bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262 \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id=space-pussy-1 --node=https://rpc.space-pussy-1.cybernode.ai:443\n", - "{\n", - " \"code\": 0,\n", - " \"codespace\": \"\",\n", - " \"data\": \"0A260A242F636F736D7761736D2E7761736D2E76312E4D736745786563757465436F6E7472616374\",\n", - " \"gas_used\": \"159205\",\n", - " \"gas_wanted\": \"400000\",\n", - " \"height\": \"1224342\",\n", - " \"info\": \"\",\n", - " \"logs\": [\n", - " {\n", - " \"events\": [\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"receiver\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_received\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"spender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108boot\"\n", - " }\n", - " ],\n", - " \"type\": \"coin_spent\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " }\n", - " ],\n", - " \"type\": \"execute\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"/cosmwasm.wasm.v1.MsgExecuteContract\"\n", - " },\n", - " {\n", - " \"key\": \"module\",\n", - " \"value\": \"wasm\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " }\n", - " ],\n", - " \"type\": \"message\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"recipient\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"sender\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108boot\"\n", - " }\n", - " ],\n", - " \"type\": \"transfer\"\n", - " },\n", - " {\n", - " \"attributes\": [\n", - " {\n", - " \"key\": \"_contract_address\",\n", - " \"value\": \"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\"\n", - " },\n", - " {\n", - " \"key\": \"action\",\n", - " \"value\": \"release\"\n", - " },\n", - " {\n", - " \"key\": \"address\",\n", - " \"value\": \"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\"\n", - " },\n", - " {\n", - " \"key\": \"gift_address\",\n", - " \"value\": \"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\"\n", - " },\n", - " {\n", - " \"key\": \"stage\",\n", - " \"value\": \"9\"\n", - " },\n", - " {\n", - " \"key\": \"amount\",\n", - " \"value\": \"2813108\"\n", - " }\n", - " ],\n", - " \"type\": \"wasm\"\n", - " }\n", - " ],\n", - " \"log\": \"\",\n", - " \"msg_index\": 0\n", - " }\n", - " ],\n", - " \"raw_log\": \"[{\\\"events\\\":[{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"execute\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/cosmwasm.wasm.v1.MsgExecuteContract\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"wasm\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108boot\\\"}]},{\\\"type\\\":\\\"wasm\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"_contract_address\\\",\\\"value\\\":\\\"bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262\\\"},{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"release\\\"},{\\\"key\\\":\\\"address\\\",\\\"value\\\":\\\"bostrom135ca8hdpy9sk0ntwqzpzsvatyl48ptx5j359lz\\\"},{\\\"key\\\":\\\"gift_address\\\",\\\"value\\\":\\\"cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\\\"},{\\\"key\\\":\\\"stage\\\",\\\"value\\\":\\\"9\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"2813108\\\"}]}]}]\",\n", - " \"timestamp\": \"\",\n", - " \"tx\": null,\n", - " \"txhash\": \"53BE9FF78C682BD88B1808A7BC71B6B86B9A91BB2CF3F779CBD87EB65A98A293\"\n", - "}\n" - ] - } - ], - "source": [ - "def release(claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False):\n", - " return execute_bash(\n", - " f'''CLAIM='{{\"release\":{{\"gift_address\":\"{claim_row[network + \"_address\"]}\"}}}}' \\\n", - " && cyber tx wasm execute {gift_contract_address} \"$CLAIM\" --from $WALLET -o json --broadcast-mode block -y --gas 400000 --chain-id={NETWORK} --node={NODE_URL}''',\n", - " display_data=display_data)\n", - "\n", - "for index, row in tqdm(claims_df.iterrows()):\n", - " if index == 1:\n", - " release_ethereum_json, _ = release(row, display_data=True)\n", - " release_cosmos_json, _ = release(row, network='cosmos', display_data=True)\n", - " else:\n", - " release(row)\n", - " release(row, network='cosmos')\n" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 32, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ "\n", - "coin_received\n", - "\treceiver: Wallet\n", - "\tamount: 2878554boot\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 1290000boot\n", "\n", - "coin_spent\n", + "coin spent\n", "\tspender: Gift Contract\n", - "\tamount: 2878554boot\n", + "\tamount: 1290000boot\n", "\n", - "execute contract: Gift Contract\n", + "execute\n", + "\texecute contract: Gift Contract\n", "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: Wallet\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", "\tsender: Gift Contract\n", - "\tamount: 2878554boot\n", + "\tamount: 1290000boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: Wallet\n", - "\tgift_address: 0x42931499d6d14a05fb312808123a564e30a66a0c\n", + "\taddress: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tgift_address: 0x9124d6592264ae9e6693dfa39b8f82f16182419c\n", "\tstage: 9\n", - "\tamount: 2878554\n" + "\tamount: 1,290,000\n", + "Gas used: 157,502\n", + "Tx hash: 07B209093AB4960C86A93450B0023387BA9337A3716C92F83BA92D998130DA9B\n", + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tamount: 1290000boot\n", + "\n", + "coin spent\n", + "\tspender: Gift Contract\n", + "\tamount: 1290000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tsender: Gift Contract\n", + "\tamount: 1290000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: release\n", + "\taddress: bostrom1y90fdf63dz6jfahupu4wdqp6v3f69rxptnr04c\n", + "\tgift_address: cosmos1y90fdf63dz6jfahupu4wdqp6v3f69rxpgqhutl\n", + "\tstage: 9\n", + "\tamount: 1,290,000\n", + "Gas used: 157,681\n", + "Tx hash: 5E702803DE153457E7CA64E1EBEEB5FAC7F05B3469641E6736E515D58CD4B89B\n" ] } ], "source": [ - "parse_contract_execution_json(release_ethereum_json)" + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 0:\n", + " release_ethereum_json = contract_utils.release(row, display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(release_ethereum_json)\n", + "\n", + " release_cosmos_json = contract_utils.release(row, network='cosmos', display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(release_cosmos_json)\n", + " else:\n", + " contract_utils.release(row)\n", + " contract_utils.release(row, network='cosmos')" ], "metadata": { "collapsed": false, @@ -1800,44 +1405,98 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "## Passport NFT testing\n", + "### Transfer Passport" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 19, + "outputs": [], + "source": [ + "def get_passport_id(bostrom_address: str) -> str:\n", + " return query_contract(query=f'''{{\"tokens\": {{\"owner\": \"{bostrom_address}\"}}}}''',\n", + " contract_address=passport_contract_address)['data']['tokens'][0]" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 20, "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "179496bd31d340eba7e93395240234ec" + } + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ "\n", - "coin_received\n", - "\treceiver: Wallet\n", - "\tamount: 2813108boot\n", + "Events\n", "\n", - "coin_spent\n", - "\tspender: Gift Contract\n", - "\tamount: 2813108boot\n", + "cyberlinks\n", + "\tQmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji -> Nickname\n", + "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", + "\tneuron: Name Subgraph Contract\n", "\n", - "execute contract: Gift Contract\n", "\n", - "message from Wallet wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", "\n", - "transfer\n", - "\trecipient: Wallet\n", - "\tsender: Gift Contract\n", - "\tamount: 2813108boot\n", + "message from bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Avatar Subgraph Contract\n", "\n", "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: release\n", - "\taddress: Wallet\n", - "\tgift_address: cosmos12h0p07w95x5r3xjr03999pvx8535vnem4kedjk\n", - "\tstage: 9\n", - "\tamount: 2813108\n" + "\t_contract_address: Passport Contract\n", + "\taction: transfer_nft\n", + "\tsender: bostrom162f8clv5ht6j2kmms0556j0mezuj3e6ked366q\n", + "\trecipient: Passport Owner Address\n", + "\ttoken_id: 1414\n", + "Gas used: 385,801\n", + "Tx hash: 5F0B12D48BAB7041AACE2E9EA131AC85065B9D8AEE33D44568A4798D84785BC1\n" ] } ], "source": [ - "parse_contract_execution_json(release_cosmos_json)" + "for index, row in tqdm(claims_with_proofs_df[:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 1:\n", + " transfer_passport_json = contract_utils.transfer_passport(\n", + " row,\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " to_address=WALLET_ADDRESS,\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(\n", + " transfer_passport_json,\n", + " row=row)\n", + " else:\n", + " pass" ], "metadata": { "collapsed": false, @@ -1846,28 +1505,75 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Burn" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 21, "outputs": [ + { + "data": { + "text/plain": "0it [00:00, ?it/s]", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "f296088669f345c6b20f7ac74f137ae8" + } + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "first release: 2_878_554\n", - "coef: 19.56\n" + "\n", + "Events\n", + "\n", + "cyberlinks\n", + "\tcyberhole -> Nickname\n", + "\tNickname -> cyberhole\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tcyberhole -> Avatar\n", + "\tAvatar -> cyberhole\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: burn\n", + "\tsender: bostrom1he3vaq8knkx56tevl6mkel42eddq507mgulsnf\n", + "\ttoken_id: 1415\n", + "Gas used: 381,878\n", + "Tx hash: 23476318EFB8D19BDF644F8DFB81BEFF9C0CA9BB188965FEB5E7E7AE76033C5E\n" ] } ], "source": [ - "# gift_address 0x30f99350a8b2e4acf87cdb197e347fb434fe0856\n", - "# gift amount 1_477_000\n", - "# first claim 28_885_541\n", - "# claim transfer 100_000\n", - "# first release 2_878_554\n", - "\n", - "print(f'first release: {int((28_885_541 - 100_000) * 0.1):>_}')\n", - "print(f'first coef: {28_885_541 / 1_477_000:>,.2f}')\n" + "for index, row in tqdm(claims_with_proofs_df[2:NUMBER_OF_ACTIVATED_PARTICIPANTS].iterrows()):\n", + " if index == 2:\n", + " burn_passport_json = contract_utils.burn_passport(row, token_id=get_passport_id(row['bostrom_address']), display_data=DISPLAY_TX_EXECUTION)\n", + " contract_utils.parse_contract_execution_json(burn_passport_json, row=row)\n", + " else:\n", + " pass" ], "metadata": { "collapsed": false, @@ -1877,14 +1583,47 @@ } }, { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [], + "cell_type": "markdown", + "source": [ + "### Add tests for Passport contract\n", + "#### create_passport +\n", + "#### update_name\n", + "#### update_avatar\n", + "#### proof_address +\n", + "#### remove_address\n", + "#### set_minter\n", + "#### set_owner\n", + "#### set_active\n", + "#### set_subgraphs\n", + "#### transfer_nft +\n", + "#### send_nft\n", + "#### mint\n", + "#### burn +\n", + "#### approve\n", + "#### approve_all\n", + "#### revoke\n", + "#### revoke_all\n", + "#### Expirations\n", + "##### at_height\n", + "##### at_time\n", + "##### never\n", + "\n", + "### Add tests for Gift contract\n", + "#### update_owner\n", + "#### update_passport_addr\n", + "#### update_target\n", + "#### register_merkle_root +\n", + "#### claim +\n", + "#### release +\n", + "\n", + "### Add tests for subgraph contract\n", + "#### update_owner\n", + "#### update_executer +\n" + ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } } } diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb new file mode 100644 index 0000000..61b67a8 --- /dev/null +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb @@ -0,0 +1,461 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## Calculation of Merkle Root and Proofs for Final Distribution" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 1, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "from multiprocess import Pool\n", + "from math import ceil\n", + "import json\n", + "from tqdm.notebook import tqdm\n", + "from IPython.core.display import display, HTML\n", + "\n", + "from contract_utils import instantiate_contract, execute_contract, query_contract, get_proofs\n", + "\n", + "INITIAL_BALANCE = str(100_000_000_000)\n", + "\n", + "COEF_UP = str(13)\n", + "COEF_DOWN = str(7)\n", + "TARGET_CLAIM = str(10)\n", + "\n", + "NUMBER_OF_THREADS = 15\n", + "BASH_SIZE = 1000\n", + "\n", + "WALLET_ADDRESS = os.getenv('WALLET_ADDRESS')\n", + "DISPLAY_TX_EXECUTION = False\n", + "\n", + "INIT_SUBGRAPH_CONTRACTS = False\n", + "SUBGRAPH_CODE_ID = str(40)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", + "\n", + "INIT_PASSPORT_CONTRACT = False\n", + "PASSPORT_CODE_ID = str(25)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra'\n", + "\n", + "INIT_GIFT_CONTRACT = True\n", + "GIFT_CODE_ID = str(20)\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom1rt2acjyhs4jfjdq56pftpu7762hy9gfl63je6fnhwrc5p5y4kmuqxg0262'\n", + "MERKLE_ROOT = 'd8dfb2c769cac706bb3d9cea1b681ff6ba5f680f0af05cefbe68a74027317ab0'\n", + "\n", + "CALCULATE_PROOFS = False\n", + "STATE_FILE_NAME = 'gift_state_final_220320.csv'\n", + "ROOT_SOURCE_FILE_NAME = 'root_source_final.json'\n", + "PROOF_FILE_NAME = 'proof_final.json'\n", + "ROOT_FILE_NAME = 'root_final'" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create source data for Merkle Tree" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [], + "source": [ + "if CALCULATE_PROOFS:\n", + " state_df = pd.read_csv(STATE_FILE_NAME)\n", + " display(HTML(state_df.head().to_html(index=False, notebook=True, show_dimensions=False)))\n", + "\n", + " state_agg_by_address = state_df.groupby('address')['gift'].sum().reset_index().rename(columns={'gift': 'amount'})\n", + " state_agg_by_address['amount'] = state_agg_by_address['amount'] * 1_000_000\n", + "\n", + " root_source_list = state_agg_by_address.to_dict(orient='records')\n", + " number_of_addresses = len(root_source_list)\n", + " print(f'Number of addresses: {number_of_addresses:>,}')\n", + "\n", + " with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", + " outfile.write(str(root_source_list).replace(\"'\", '\"'))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Calculate Merkle Root and Proofs" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [], + "source": [ + "if CALCULATE_PROOFS:\n", + " tasks = list(\n", + " (\n", + " (ROOT_SOURCE_FILE_NAME,\n", + " f'final_temp/proofs_{i}.json',\n", + " i * BASH_SIZE,\n", + " min(number_of_addresses, (i + 1) * BASH_SIZE))\n", + " for i in range(ceil(number_of_addresses/BASH_SIZE))\n", + " )\n", + " )\n", + " print(f'First task: {tasks[0]}\\nLast task: {tasks[-1]}\\nTotal tasks: {len(tasks)}\\nThreads: {NUMBER_OF_THREADS:>,}')\n", + " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(get_proofs, tasks, 1)\n", + " assert res == [True] * len(res)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Get proofs and root from temporary files" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Merkle root: d8dfb2c769cac706bb3d9cea1b681ff6ba5f680f0af05cefbe68a74027317ab0\n", + "Number of proofs: 4426091\n" + ] + }, + { + "data": { + "text/plain": "", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0addressamountproof
00x000000000000000000000000000000000000002024000000['1c12d0e0e5c8dd03999ed1b49e4f8bdc3deb2238c91c7...
10x00000000000000000000000000000000009a6ca024000000['6f914877a2f44e37e2ad1937ba54e6a69078f40865d90...
20x000000000000000000000000000000000e297bdb24000000['28ab88ce80aa1d602c9273e3c01762a15db4a754326be...
30x000000000000000000000000000000000edd899b137000000['cf5c194a5ddb674c0feb1ed63f82d98ada8848db46759...
40x0000000000000000000000000000000053db6ff11505000000['cd92981c19927509a95c585ccd131219ceccda3093684...
\n
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "if CALCULATE_PROOFS:\n", + " roots = []\n", + " proofs = []\n", + " for task in tqdm(tasks):\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " if len(proofs) == 0:\n", + " proofs = root_and_proof_json['proofs']\n", + " else:\n", + " proofs.extend(root_and_proof_json['proofs'])\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + "\n", + " assert roots == [roots[0]] * len(roots)\n", + " root = roots[0]\n", + " proofs_df = pd.DataFrame(proofs)\n", + " proofs_df.to_csv('proofs_final.csv', header=True, index=True)\n", + "else:\n", + " root = MERKLE_ROOT\n", + " proofs_df = pd.read_csv('proofs_final.csv')\n", + "print(f'Merkle root: {root}')\n", + "print(f'Number of proofs: {len(proofs_df)}')\n", + "display(HTML(proofs_df.head().to_html(index=False, notebook=True, show_dimensions=False)))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", + "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", + "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" + ] + } + ], + "source": [ + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph')\n", + " proof_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph')\n", + "else:\n", + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Passport Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passport contract address: bostrom15hzg7eaxgs6ecn46gmu4juc9tau2w45l9cnf8n0797nmmtkdv7jscv88ra\n" + ] + } + ], + "source": [ + "if INIT_PASSPORT_CONTRACT:\n", + " passport_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport')\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subgraph Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [], + "source": [ + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_contract(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom1yhdxsta8qt7guughmerkekkxegrmkgycfyhxz9m4k8mu27su0hnq22ecn3\n" + ] + } + ], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test gift')\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 9, + "outputs": [], + "source": [ + "root_register_output = execute_contract(execute_query=f'''{{\"register_merkle_root\":{{\"merkle_root\":\"{root}\"}}}}''',\n", + " contract_address=gift_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract bostrom1yhdxsta8qt7guughmerkekkxegrmkgycfyhxz9m4k8mu27su0hnq22ecn3\n", + "{'data': {'merkle_root': 'd8dfb2c769cac706bb3d9cea1b681ff6ba5f680f0af05cefbe68a74027317ab0'}}\n" + ] + } + ], + "source": [ + "print(f'Gift contract {gift_contract_address}')\n", + "print(query_contract(query='''{\"merkle_root\": {}}''',\n", + " contract_address=gift_contract_address))\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts index bbd107d..b30a4e6 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts @@ -1,12 +1,14 @@ +import {Command, flags} from '@oclif/command' +import { readFileSync, writeFileSync } from 'fs'; import CryptoJS from "crypto-js"; import sha256 from "crypto-js/sha256"; import { MerkleTree } from "merkletreejs"; -import receivers from "./airdrop_stage_1_list.json"; interface Encoding { - target_address: string; + address: string; amount: string; } + class Airdrop { private tree: MerkleTree; @@ -17,7 +19,7 @@ class Airdrop { encode_data(data: Encoding): CryptoJS.lib.WordArray { return sha256( - data.target_address + data.amount + data.address + data.amount ); } @@ -40,10 +42,61 @@ class Airdrop { } } -let airdrop = new Airdrop(receivers); +class GenerateProofs extends Command { + static description = 'Generates merkle root and proofs for given addresses' + + static examples = [ + `$ generate-merkle-proofs --input root_testing_source.json --output proof.json --start_index 1 --end_index 100`, + ] + + static flags = { + input: flags.string({ + char: 'f', + description: 'airdrop file location' + }), + output: flags.string({ + char: 'o', + description: 'output file location' + }), + start_index: flags.integer({ + char: 's', + description: 'start index in the airdrop file for getting proofs', + default: 1, + required: false + }), + end_index: flags.integer({ + char: 'e', + description: 'end index in the airdrop file for getting proofs', + default: -1, + required: false + }), + } + + async run() { + const {flags} = this.parse(GenerateProofs) + + if (!flags.input) { + this.error(new Error('Airdrop file location not defined')) + } -console.log(airdrop.getMerkleRoot()); -console.log(receivers[0]) -console.log(airdrop.getMerkleProof(receivers[0])); -console.log(receivers[1]) -console.log(airdrop.getMerkleProof(receivers[1])); + if (!flags.output) { + this.error(new Error('Output file location not defined')) + } + + let file = readFileSync(flags.input, 'utf-8'); + let receivers: Array = JSON.parse(file); + let airdrop = new Airdrop(receivers); + + let merkle_root = airdrop.getMerkleRoot() + console.log("Merkle root: " + merkle_root) + + let result = + {"merkle_root": merkle_root, + "proofs": receivers.slice(flags.start_index, flags.end_index).map( + (r) => {return {"address": r.address, "amount": r.amount, "proof": airdrop.getMerkleProof(r)}})}; + writeFileSync(flags.output, JSON.stringify(result)); + console.log(`Number of addresses in the Merkle tree: ${Object.keys(result.proofs).length}`) + } +} +// @ts-ignore +GenerateProofs.run().catch(require('@oclif/core/handle')) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json b/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json index 383482d..7428c25 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json @@ -1,5 +1,5 @@ { - "name": "generate_test_data", + "name": "generate-merkle-proofs", "version": "1.0.0", "main": "index.ts", "license": "MIT", @@ -12,7 +12,11 @@ "@types/crypto-js": "^4.0.2", "ethereumjs-util": "^7.1.0", "merkletreejs": "^0.2.23", - "tslib": "^1" + "tslib": "^1", + "@oclif/command": "^1", + "@oclif/config": "^1", + "@oclif/core": "^1", + "@oclif/plugin-help": "^3" }, "devDependencies": { "@oclif/dev-cli": "^1", @@ -26,5 +30,17 @@ }, "engines": { "node": ">=8.0.0" + }, + "files": [ + "/bin", + "/lib", + "/npm-shrinkwrap.json", + "/oclif.manifest.json" + ], + "oclif": { + "bin": "generate-merkle-proofs", + "plugins": [ + "@oclif/plugin-help" + ] } } diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock b/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock index fff1afe..f54b53f 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock @@ -264,7 +264,7 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/command@^1.8.14", "@oclif/command@^1.8.15": +"@oclif/command@^1", "@oclif/command@^1.8.14", "@oclif/command@^1.8.15": version "1.8.16" resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" integrity sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w== @@ -288,6 +288,53 @@ is-wsl "^2.1.1" tslib "^2.0.0" +"@oclif/config@^1": + version "1.18.3" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.3.tgz#ddfc144fdab66b1658c2f1b3478fa7fbfd317e79" + integrity sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA== + dependencies: + "@oclif/errors" "^1.3.5" + "@oclif/parser" "^3.8.0" + debug "^4.1.1" + globby "^11.0.1" + is-wsl "^2.1.1" + tslib "^2.3.1" + +"@oclif/core@^1": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.6.3.tgz#3d1dd4e033f5512ac35963a73878257142390838" + integrity sha512-a3DrPNlOYemwnzxuJ3tINjqpMVIYe56Mg+XaQo0nGsqGSk69wF5Q/hD8plsWrtwdkeIxwxhgl7T699EJypAUwg== + dependencies: + "@oclif/linewrap" "^1.0.0" + "@oclif/screen" "^3.0.2" + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.10.0" + debug "^4.3.3" + ejs "^3.1.6" + fs-extra "^9.1.0" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + lodash "^4.17.21" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.2" + semver "^7.3.5" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + tslib "^2.3.1" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + "@oclif/dev-cli@^1": version "1.26.10" resolved "https://registry.yarnpkg.com/@oclif/dev-cli/-/dev-cli-1.26.10.tgz#d8df3a79009b68552f5e7f249d1d19ca52278382" @@ -365,11 +412,33 @@ widest-line "^3.1.0" wrap-ansi "^6.2.0" +"@oclif/plugin-help@^3": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-3.3.1.tgz#36adb4e0173f741df409bb4b69036d24a53bfb24" + integrity sha512-QuSiseNRJygaqAdABYFWn/H1CwIZCp9zp/PLid6yXvy6VcQV7OenEFF5XuYaCvSARe2Tg9r8Jqls5+fw1A9CbQ== + dependencies: + "@oclif/command" "^1.8.15" + "@oclif/config" "1.18.2" + "@oclif/errors" "1.3.5" + "@oclif/help" "^1.0.1" + chalk "^4.1.2" + indent-string "^4.0.0" + lodash "^4.17.21" + string-width "^4.2.0" + strip-ansi "^6.0.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" + "@oclif/screen@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493" integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw== +"@oclif/screen@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.2.tgz#969054308fe98d130c02844a45cc792199b75670" + integrity sha512-S/SF/XYJeevwIgHFmVDAFRUvM3m+OjhvCAYMk78ZJQCYCQ5wS7j+LTt1ZEv2jpEEGg2tx/F6TYYWxddNAYHrFQ== + "@tsconfig/node10@^1.0.7": version "1.0.8" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" @@ -532,7 +601,7 @@ ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.3.0: +ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -561,7 +630,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.2.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.2.0, ansi-styles@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -595,6 +664,16 @@ 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@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -770,7 +849,7 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -808,7 +887,7 @@ clean-regexp@^1.0.0: dependencies: escape-string-regexp "^1.0.5" -clean-stack@^3.0.0: +clean-stack@^3.0.0, clean-stack@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== @@ -822,6 +901,13 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-progress@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.10.0.tgz#63fd9d6343c598c93542fdfa3563a8b59887d78a" + integrity sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw== + dependencies: + string-width "^4.2.0" + cli-progress@^3.4.0: version "3.9.1" resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.9.1.tgz#a22eba6a20f53289fdd05d5ee8cb2cc8c28f866e" @@ -969,6 +1055,13 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" +debug@^4.3.3: + 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" + deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -998,6 +1091,13 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +ejs@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + dependencies: + jake "^10.6.1" + electron-to-chromium@^1.4.17: version "1.4.28" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.28.tgz#fef0e92e281df6d568f482d8d53c34ca5374de48" @@ -1440,6 +1540,17 @@ fast-glob@^3.0.3, fast-glob@^3.1.1: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1471,6 +1582,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +filelist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + dependencies: + minimatch "^3.0.4" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1530,6 +1648,16 @@ fs-extra@^8.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1550,6 +1678,11 @@ gensync@^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-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@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1617,6 +1750,18 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" @@ -1711,7 +1856,7 @@ ignore@^4.0.2, ignore@^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.1.1, ignore@^5.1.4: +ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -1864,6 +2009,16 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +jake@^10.6.1: + version "10.8.4" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.4.tgz#f6a8b7bf90c6306f768aa82bb7b98bf4ca15e84a" + integrity sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA== + dependencies: + async "0.9.x" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -1874,7 +2029,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -1921,6 +2076,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + keccak@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" @@ -2035,7 +2199,7 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -2118,7 +2282,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -natural-orderby@^2.0.1: +natural-orderby@^2.0.1, natural-orderby@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== @@ -2178,7 +2342,7 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" -object-treeify@^1.1.4: +object-treeify@^1.1.33, object-treeify@^1.1.4: version "1.1.33" resolved "https://registry.yarnpkg.com/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40" integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== @@ -2696,7 +2860,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.0.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== @@ -2769,14 +2933,14 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.1.0: +supports-color@^8.1.0, supports-color@^8.1.1: 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-hyperlinks@^2.1.0: +supports-hyperlinks@^2.1.0, supports-hyperlinks@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== @@ -2879,7 +3043,7 @@ tslib@^1, 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.0.0, tslib@^2.0.3: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -2937,6 +3101,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" diff --git a/gift_execution.png b/gift_execution.png new file mode 100644 index 0000000000000000000000000000000000000000..45f31bf5ab2ef41a21f8e1531e83554e5e12cb7c GIT binary patch literal 346566 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 z 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/Pl*>=A>VD%7J9m$=L1C8_oy9&2J`S&HP_x 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 literal 0 HcmV?d00001 From 019386f12bf97704ec2b8f63497fa90153151093 Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Thu, 28 Apr 2022 13:25:16 +0800 Subject: [PATCH 43/69] - Update load testing after adding treasury contract --- .../create_passport_and_claim_job.py | 2 +- ..._and_passport_contracts_load_testing.ipynb | 2779 ++++++----------- 2 files changed, 975 insertions(+), 1806 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py index 4d5bf10..f384d5b 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -53,7 +53,7 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False log_file = f'temp/contract_release_execution_log_{index_number}.txt' \ if release_bool else f'temp/contract_participation_execution_log_{index_number}.txt' address_dict = {gift_contract_address: 'Gift Contract', - 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8': 'Passport Contract'} + 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf': 'Passport Contract'} row = pd.read_csv(source_file_name).iloc[int(index_number) % 10_000] row['ethereum_proof'] = row['ethereum_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index f331e1f..61b312f 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -46,19 +46,19 @@ "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 100_000\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 50_000\n", + "NUMBER_OF_PARTICIPANTS = 50_000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 35_000\n", "NUMBER_OF_THREADS = 100\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [20_000] * NUMBER_OF_PARTICIPANTS\n", + "CLAIM_AMOUNT_LIST = [30_000] * NUMBER_OF_PARTICIPANTS\n", "PREFIXES = ['cosmos', 'osmo', 'terra']\n", "\n", - "INITIAL_BALANCE = str(1_000_000_000)\n", + "INITIAL_BALANCE = str(7_000_000_000)\n", "COEF_UP = str(13)\n", "COEF_DOWN = str(7)\n", - "TARGET_CLAIM = str(2)\n", + "TARGET_CLAIM = str(20_000)\n", "\n", "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", @@ -70,17 +70,21 @@ "SEND_COINS = True\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", - "SUBGRAPH_CODE_ID = str(40)\n", - "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6'\n", - "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq'\n", - "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4'\n", + "SUBGRAPH_CODE_ID = str(3)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", - "PASSPORT_CODE_ID = str(43)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8'\n", + "PASSPORT_CODE_ID = str(2)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf'\n", + "\n", + "INIT_TREASURY_CONTRACT = False\n", + "TREASURY_CODE_ID = str(4)\n", + "TREASURY_CONTRACT_ADDRESS = 'bostrom18cszlvm6pze0x9sz32qnjq4vtd45xehqs8dq7cwy8yhq35wfnn3q9u647v'\n", "\n", "INIT_GIFT_CONTRACT = True\n", - "GIFT_CODE_ID = str(20)\n", + "GIFT_CODE_ID = str(1)\n", "GIFT_CONTRACT_ADDRESS = 'bostrom14swjuycwxmvghd9hgr3f3755388g6xkaqpn2dxcf700fzcwdm2nqum7453'\n", "\n", "PARTICIPANTS_FILE_NAME = 'participants_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv'\n", @@ -112,17 +116,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 100000\n", + "Number of tasks: 50000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/100000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
020000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...
120000john16505145391QmcbX6Af2hx9Co1wDKnkpG5HwTVoC4sYUiJNdKiSgRgNsg0x54a31fa6e38731c1b8eda7579cf156a33769179f0xce2da6faaae94781d2881cc33edaf8ce32fd05f52ad1...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fgosmo1h48dqhht7cfukuxusujqgeuzpt43jtg8gl7kpaarrange sure benefit recipe replace width fan ...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg...0x7af0aed2bbf9b33e3e73a34cff62a19d2078f84030fa...{'pub_key': 'AtzxTgc/gj7M7q1a6oVBOz/V9uqAWmjjP...eyJwdWJfa2V5IjoiQXR6eFRnYy9najdNN3ExYTZvVkJPei...
220000john16505145392QmNg2da2P9CQppC5QdRsu8zy8LCbKSgwSCX7K51zexf2xq0x7bd9105d6084694757c819f8a965e39ecf7ff8a20x6213c521d7e6533db5bd4af75ef0ad61251afb632a0f...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2cosmos1c0h2ysdynjq7sslef0ktx86a9yk0dkp96lka7djoke vacuum town dress below either height tig...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2...0x73d09d6c82e35d6bd9379519a1957504ef235744e74d...{'pub_key': 'AhE823RJVhq2gyouGMwgcDvOQK80l/hap...eyJwdWJfa2V5IjoiQWhFODIzUkpWaHEyZ3lvdUdNd2djRH...
320000john16505145393QmbEz8ZGkWeQnpEJPSQrjnDpcyCxwyaerkmd1gxWYMn2Kf0x60920d73ebeaede54d58d56f0a7e22b6c051a9120x289c072a670df38e707d7c26f9c1b7ebe255431b56d6...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3cosmos1na6xl94tl7r5sjxyuhva04sy8p68jhhzhw7pxkcollect hockey simple firm joke air polar salo...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3...0x7d92f8e2e6b9db95853d5a7692bcd4c87c3b32966c58...{'pub_key': 'A2COW5KWNuVXMJPyoNNNpsIxlcs7N7CfX...eyJwdWJfa2V5IjoiQTJDT1c1S1dOdVZYTUpQeW9OTk5wc0...
420000john16505145394QmaBhHHPYivF8a6otweD8ZgtVWSVbB5AXpqtmVPQvfx3kB0xa38253e4257fda031a2cf619e8dd9f455211e22a0x3688c537e031cd40687ddcce934fba76a370e2f2d04f...bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4cterra1zt4phgz5xpfzvymhnnemqesdyyw2spe8hw8pflrecall pitch fork dune rebuild priority habit ...bostrom1zt4phgz5xpfzvymhnnemqesdyyw2spe8jefj4c...0xb83b211090ffee9f2e27d37552a8e346ee4604171d61...{'pub_key': 'AynVqVXox56sBogu4VL45Uk1KD9KvvtAd...eyJwdWJfa2V5IjoiQXluVnFWWG94NTZzQm9ndTRWTDQ1VW...
\n" + "text/plain": " amount nickname avatar \\\n0 30000 john16510755980 QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe \n1 30000 john16510755981 QmZpd2kCy2L32nutybeNyZa2U4V8MEVfG9t3xsHV8hi8oi \n2 30000 john16510755982 QmaSExj3kqGgyNHDcS1MYi4RRWRRhiLTMQvJBVSV1pRysv \n3 30000 john16510755983 QmdkNrH37aHtjkqc34wWfNr69UvQXrsghmpRDb8N62RBcK \n4 30000 john16510755984 QmWDPSpPxJdVkefCQT7CDP1dGWMkcPdGUavCR9JBTZEdcu \n\n ethereum_address \\\n0 0x4728b5d6240343f357b7e11863ad32492ebc7668 \n1 0x8544acb35c255078dcfe5827bdf539f23fc4f347 \n2 0x9d265a500b932d1601478d50af8fa597b51077ed \n3 0x0ccdb3913071a85ba7e325a728b35b7031a2f841 \n4 0xe31aa9aee81531fcc8b837653a4b565607fe3793 \n\n ethereum_private_key \\\n0 0x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e... \n1 0xd08ff213baeee47add74b3620332e595f8edb5dc556f... \n2 0x5d7d660a54591c323a836e162a9865a245b738c2d548... \n3 0xe65d014bde708de4d4558e7c09b45b08e1d1f0f04fb5... \n4 0xcc56f1eebcea455d20304a178b8d96cba6aba371bbfd... \n\n bostrom_address \\\n0 bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70 \n1 bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s \n2 bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz \n3 bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn \n4 bostrom144x8pazv6ueln6wyv4ze6aq6q528mu0vnuy7pt \n\n cosmos_address \\\n0 terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzg \n1 cosmos1en9pu3xckqu8cj6qenw9x0xs02zfe8h96wru0h \n2 cosmos1a2z98w5htp738l35vra8lcknztf292myns2rl9 \n3 terra1a00xqte46sv80e386jxjen7htpzuk64sqg4n85 \n4 terra144x8pazv6ueln6wyv4ze6aq6q528mu0vkt2dav \n\n cosmos_seed \\\n0 enjoy wait anxiety recycle thrive evidence was... \n1 dry auto denial present oval marine opinion sl... \n2 ship turn amused rule parrot current hold regr... \n3 side bread decline actor mandate hollow arena ... \n4 text rival knock hire feature cabbage toilet v... \n\n message \\\n0 bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70... \n1 bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s... \n2 bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz... \n3 bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn... \n4 bostrom144x8pazv6ueln6wyv4ze6aq6q528mu0vnuy7pt... \n\n ethereum_message_signature \\\n0 0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf... \n1 0x9225d7843f8bcdf7c4e969a69cba1ab9bb2e2f83ede8... \n2 0xd4000eacac3facfc3366bc893bfdd7a0ea24288650e7... \n3 0x159ee0c77d0a03074fd7fe418ec929d28d9919ca44ed... \n4 0x286d0513c0301039babb77e31d091b8a7680917943aa... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE... \n1 {'pub_key': 'Aj7QPDdHomIP2DUH9eTnSfOon44xrMLIZ... \n2 {'pub_key': 'Aw0oWw3gkVlNat5+055ePbrJhrj7LVZy0... \n3 {'pub_key': 'Aw8kHHa+WGrKrX0aS3j4V3RP+Gzusj1b/... \n4 {'pub_key': 'AhGcw/spF88f7kZgMhHeFMRFE83QX5iD8... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG... \n1 eyJwdWJfa2V5IjoiQWo3UVBEZEhvbUlQMkRVSDllVG5TZk... \n2 eyJwdWJfa2V5IjoiQXcwb1d3M2drVmxOYXQ1KzA1NWVQYn... \n3 eyJwdWJfa2V5IjoiQXc4a0hIYStXR3JLclgwYVMzajRWM1... \n4 eyJwdWJfa2V5IjoiQWhHY3cvc3BGODhmN2taZ01oSGVGTV... ", + "text/html": "

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
030000john16510755980QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe0x4728b5d6240343f357b7e11863ad32492ebc76680x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzgenjoy wait anxiety recycle thrive evidence was...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70...0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf...{'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE...eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG...
130000john16510755981QmZpd2kCy2L32nutybeNyZa2U4V8MEVfG9t3xsHV8hi8oi0x8544acb35c255078dcfe5827bdf539f23fc4f3470xd08ff213baeee47add74b3620332e595f8edb5dc556f...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03scosmos1en9pu3xckqu8cj6qenw9x0xs02zfe8h96wru0hdry auto denial present oval marine opinion sl...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s...0x9225d7843f8bcdf7c4e969a69cba1ab9bb2e2f83ede8...{'pub_key': 'Aj7QPDdHomIP2DUH9eTnSfOon44xrMLIZ...eyJwdWJfa2V5IjoiQWo3UVBEZEhvbUlQMkRVSDllVG5TZk...
230000john16510755982QmaSExj3kqGgyNHDcS1MYi4RRWRRhiLTMQvJBVSV1pRysv0x9d265a500b932d1601478d50af8fa597b51077ed0x5d7d660a54591c323a836e162a9865a245b738c2d548...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spzcosmos1a2z98w5htp738l35vra8lcknztf292myns2rl9ship turn amused rule parrot current hold regr...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz...0xd4000eacac3facfc3366bc893bfdd7a0ea24288650e7...{'pub_key': 'Aw0oWw3gkVlNat5+055ePbrJhrj7LVZy0...eyJwdWJfa2V5IjoiQXcwb1d3M2drVmxOYXQ1KzA1NWVQYn...
330000john16510755983QmdkNrH37aHtjkqc34wWfNr69UvQXrsghmpRDb8N62RBcK0x0ccdb3913071a85ba7e325a728b35b7031a2f8410xe65d014bde708de4d4558e7c09b45b08e1d1f0f04fb5...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmnterra1a00xqte46sv80e386jxjen7htpzuk64sqg4n85side bread decline actor mandate hollow arena ...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn...0x159ee0c77d0a03074fd7fe418ec929d28d9919ca44ed...{'pub_key': 'Aw8kHHa+WGrKrX0aS3j4V3RP+Gzusj1b/...eyJwdWJfa2V5IjoiQXc4a0hIYStXR3JLclgwYVMzajRWM1...
430000john16510755984QmWDPSpPxJdVkefCQT7CDP1dGWMkcPdGUavCR9JBTZEdcu0xe31aa9aee81531fcc8b837653a4b565607fe37930xcc56f1eebcea455d20304a178b8d96cba6aba371bbfd...bostrom144x8pazv6ueln6wyv4ze6aq6q528mu0vnuy7ptterra144x8pazv6ueln6wyv4ze6aq6q528mu0vkt2davtext rival knock hire feature cabbage toilet v...bostrom144x8pazv6ueln6wyv4ze6aq6q528mu0vnuy7pt...0x286d0513c0301039babb77e31d091b8a7680917943aa...{'pub_key': 'AhGcw/spF88f7kZgMhHeFMRFE83QX5iD8...eyJwdWJfa2V5IjoiQWhHY3cvc3BGODhmN2taZ01oSGVGTV...
\n
" }, "execution_count": 2, "metadata": {}, @@ -243,16 +247,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "{('root_testing_source_100000_addresses.json', 'temp/proofs_166.json', 166000, 167001), ('root_testing_source_100000_addresses.json', 'temp/proofs_132.json', 132000, 133001), ('root_testing_source_100000_addresses.json', 'temp/proofs_54.json', 54000, 55001), ('root_testing_source_100000_addresses.json', 'temp/proofs_120.json', 120000, 121001), ('root_testing_source_100000_addresses.json', 'temp/proofs_29.json', 29000, 30001), ('root_testing_source_100000_addresses.json', 'temp/proofs_149.json', 149000, 150001), ('root_testing_source_100000_addresses.json', 'temp/proofs_63.json', 63000, 64001), ('root_testing_source_100000_addresses.json', 'temp/proofs_145.json', 145000, 146001), ('root_testing_source_100000_addresses.json', 'temp/proofs_105.json', 105000, 106001), ('root_testing_source_100000_addresses.json', 'temp/proofs_156.json', 156000, 157001), ('root_testing_source_100000_addresses.json', 'temp/proofs_49.json', 49000, 50001), ('root_testing_source_100000_addresses.json', 'temp/proofs_137.json', 137000, 138001), ('root_testing_source_100000_addresses.json', 'temp/proofs_161.json', 161000, 162001), ('root_testing_source_100000_addresses.json', 'temp/proofs_37.json', 37000, 38001), ('root_testing_source_100000_addresses.json', 'temp/proofs_68.json', 68000, 69001), ('root_testing_source_100000_addresses.json', 'temp/proofs_40.json', 40000, 41001), ('root_testing_source_100000_addresses.json', 'temp/proofs_17.json', 17000, 18001), ('root_testing_source_100000_addresses.json', 'temp/proofs_52.json', 52000, 53001), ('root_testing_source_100000_addresses.json', 'temp/proofs_79.json', 79000, 80001), ('root_testing_source_100000_addresses.json', 'temp/proofs_111.json', 111000, 112001), ('root_testing_source_100000_addresses.json', 'temp/proofs_53.json', 53000, 54001), ('root_testing_source_100000_addresses.json', 'temp/proofs_160.json', 160000, 161001), ('root_testing_source_100000_addresses.json', 'temp/proofs_191.json', 191000, 192001), ('root_testing_source_100000_addresses.json', 'temp/proofs_87.json', 87000, 88001), ('root_testing_source_100000_addresses.json', 'temp/proofs_46.json', 46000, 47001), ('root_testing_source_100000_addresses.json', 'temp/proofs_39.json', 39000, 40001), ('root_testing_source_100000_addresses.json', 'temp/proofs_130.json', 130000, 131001), ('root_testing_source_100000_addresses.json', 'temp/proofs_60.json', 60000, 61001), ('root_testing_source_100000_addresses.json', 'temp/proofs_71.json', 71000, 72001), ('root_testing_source_100000_addresses.json', 'temp/proofs_131.json', 131000, 132001), ('root_testing_source_100000_addresses.json', 'temp/proofs_56.json', 56000, 57001), ('root_testing_source_100000_addresses.json', 'temp/proofs_5.json', 5000, 6001), ('root_testing_source_100000_addresses.json', 'temp/proofs_88.json', 88000, 89001), ('root_testing_source_100000_addresses.json', 'temp/proofs_197.json', 197000, 198001), ('root_testing_source_100000_addresses.json', 'temp/proofs_47.json', 47000, 48001), ('root_testing_source_100000_addresses.json', 'temp/proofs_66.json', 66000, 67001), ('root_testing_source_100000_addresses.json', 'temp/proofs_139.json', 139000, 140001), ('root_testing_source_100000_addresses.json', 'temp/proofs_175.json', 175000, 176001), ('root_testing_source_100000_addresses.json', 'temp/proofs_30.json', 30000, 31001), ('root_testing_source_100000_addresses.json', 'temp/proofs_107.json', 107000, 108001), ('root_testing_source_100000_addresses.json', 'temp/proofs_128.json', 128000, 129001), ('root_testing_source_100000_addresses.json', 'temp/proofs_36.json', 36000, 37001), ('root_testing_source_100000_addresses.json', 'temp/proofs_185.json', 185000, 186001), ('root_testing_source_100000_addresses.json', 'temp/proofs_62.json', 62000, 63001), ('root_testing_source_100000_addresses.json', 'temp/proofs_104.json', 104000, 105001), ('root_testing_source_100000_addresses.json', 'temp/proofs_114.json', 114000, 115001), ('root_testing_source_100000_addresses.json', 'temp/proofs_28.json', 28000, 29001), ('root_testing_source_100000_addresses.json', 'temp/proofs_2.json', 2000, 3001), ('root_testing_source_100000_addresses.json', 'temp/proofs_72.json', 72000, 73001), ('root_testing_source_100000_addresses.json', 'temp/proofs_78.json', 78000, 79001), ('root_testing_source_100000_addresses.json', 'temp/proofs_133.json', 133000, 134001), ('root_testing_source_100000_addresses.json', 'temp/proofs_173.json', 173000, 174001), ('root_testing_source_100000_addresses.json', 'temp/proofs_92.json', 92000, 93001), ('root_testing_source_100000_addresses.json', 'temp/proofs_123.json', 123000, 124001), ('root_testing_source_100000_addresses.json', 'temp/proofs_174.json', 174000, 175001), ('root_testing_source_100000_addresses.json', 'temp/proofs_76.json', 76000, 77001), ('root_testing_source_100000_addresses.json', 'temp/proofs_65.json', 65000, 66001), ('root_testing_source_100000_addresses.json', 'temp/proofs_43.json', 43000, 44001), ('root_testing_source_100000_addresses.json', 'temp/proofs_194.json', 194000, 195001), ('root_testing_source_100000_addresses.json', 'temp/proofs_13.json', 13000, 14001), ('root_testing_source_100000_addresses.json', 'temp/proofs_38.json', 38000, 39001), ('root_testing_source_100000_addresses.json', 'temp/proofs_172.json', 172000, 173001), ('root_testing_source_100000_addresses.json', 'temp/proofs_177.json', 177000, 178001), ('root_testing_source_100000_addresses.json', 'temp/proofs_176.json', 176000, 177001), ('root_testing_source_100000_addresses.json', 'temp/proofs_24.json', 24000, 25001), ('root_testing_source_100000_addresses.json', 'temp/proofs_70.json', 70000, 71001), ('root_testing_source_100000_addresses.json', 'temp/proofs_94.json', 94000, 95001), ('root_testing_source_100000_addresses.json', 'temp/proofs_169.json', 169000, 170001), ('root_testing_source_100000_addresses.json', 'temp/proofs_16.json', 16000, 17001), ('root_testing_source_100000_addresses.json', 'temp/proofs_165.json', 165000, 166001), ('root_testing_source_100000_addresses.json', 'temp/proofs_42.json', 42000, 43001), ('root_testing_source_100000_addresses.json', 'temp/proofs_64.json', 64000, 65001), ('root_testing_source_100000_addresses.json', 'temp/proofs_45.json', 45000, 46001), ('root_testing_source_100000_addresses.json', 'temp/proofs_97.json', 97000, 98001), ('root_testing_source_100000_addresses.json', 'temp/proofs_58.json', 58000, 59001), ('root_testing_source_100000_addresses.json', 'temp/proofs_31.json', 31000, 32001), ('root_testing_source_100000_addresses.json', 'temp/proofs_187.json', 187000, 188001), ('root_testing_source_100000_addresses.json', 'temp/proofs_182.json', 182000, 183001), ('root_testing_source_100000_addresses.json', 'temp/proofs_125.json', 125000, 126001), ('root_testing_source_100000_addresses.json', 'temp/proofs_184.json', 184000, 185001), ('root_testing_source_100000_addresses.json', 'temp/proofs_26.json', 26000, 27001), ('root_testing_source_100000_addresses.json', 'temp/proofs_8.json', 8000, 9001), ('root_testing_source_100000_addresses.json', 'temp/proofs_75.json', 75000, 76001), ('root_testing_source_100000_addresses.json', 'temp/proofs_85.json', 85000, 86001), ('root_testing_source_100000_addresses.json', 'temp/proofs_153.json', 153000, 154001), ('root_testing_source_100000_addresses.json', 'temp/proofs_159.json', 159000, 160001), ('root_testing_source_100000_addresses.json', 'temp/proofs_117.json', 117000, 118001), ('root_testing_source_100000_addresses.json', 'temp/proofs_127.json', 127000, 128001), ('root_testing_source_100000_addresses.json', 'temp/proofs_0.json', 0, 1001), ('root_testing_source_100000_addresses.json', 'temp/proofs_57.json', 57000, 58001), ('root_testing_source_100000_addresses.json', 'temp/proofs_3.json', 3000, 4001), ('root_testing_source_100000_addresses.json', 'temp/proofs_44.json', 44000, 45001), ('root_testing_source_100000_addresses.json', 'temp/proofs_15.json', 15000, 16001), ('root_testing_source_100000_addresses.json', 'temp/proofs_186.json', 186000, 187001), ('root_testing_source_100000_addresses.json', 'temp/proofs_143.json', 143000, 144001), ('root_testing_source_100000_addresses.json', 'temp/proofs_188.json', 188000, 189001), ('root_testing_source_100000_addresses.json', 'temp/proofs_163.json', 163000, 164001), ('root_testing_source_100000_addresses.json', 'temp/proofs_147.json', 147000, 148001), ('root_testing_source_100000_addresses.json', 'temp/proofs_11.json', 11000, 12001), ('root_testing_source_100000_addresses.json', 'temp/proofs_27.json', 27000, 28001), ('root_testing_source_100000_addresses.json', 'temp/proofs_95.json', 95000, 96001), ('root_testing_source_100000_addresses.json', 'temp/proofs_98.json', 98000, 99001), ('root_testing_source_100000_addresses.json', 'temp/proofs_158.json', 158000, 159001), ('root_testing_source_100000_addresses.json', 'temp/proofs_20.json', 20000, 21001), ('root_testing_source_100000_addresses.json', 'temp/proofs_89.json', 89000, 90001), ('root_testing_source_100000_addresses.json', 'temp/proofs_23.json', 23000, 24001), ('root_testing_source_100000_addresses.json', 'temp/proofs_100.json', 100000, 101001), ('root_testing_source_100000_addresses.json', 'temp/proofs_102.json', 102000, 103001), ('root_testing_source_100000_addresses.json', 'temp/proofs_77.json', 77000, 78001), ('root_testing_source_100000_addresses.json', 'temp/proofs_157.json', 157000, 158001), ('root_testing_source_100000_addresses.json', 'temp/proofs_190.json', 190000, 191001), ('root_testing_source_100000_addresses.json', 'temp/proofs_18.json', 18000, 19001), ('root_testing_source_100000_addresses.json', 'temp/proofs_109.json', 109000, 110001), ('root_testing_source_100000_addresses.json', 'temp/proofs_152.json', 152000, 153001), ('root_testing_source_100000_addresses.json', 'temp/proofs_7.json', 7000, 8001), ('root_testing_source_100000_addresses.json', 'temp/proofs_14.json', 14000, 15001), ('root_testing_source_100000_addresses.json', 'temp/proofs_150.json', 150000, 151001), ('root_testing_source_100000_addresses.json', 'temp/proofs_82.json', 82000, 83001), ('root_testing_source_100000_addresses.json', 'temp/proofs_51.json', 51000, 52001), ('root_testing_source_100000_addresses.json', 'temp/proofs_106.json', 106000, 107001), ('root_testing_source_100000_addresses.json', 'temp/proofs_50.json', 50000, 51001), ('root_testing_source_100000_addresses.json', 'temp/proofs_67.json', 67000, 68001), ('root_testing_source_100000_addresses.json', 'temp/proofs_32.json', 32000, 33001), ('root_testing_source_100000_addresses.json', 'temp/proofs_124.json', 124000, 125001), ('root_testing_source_100000_addresses.json', 'temp/proofs_112.json', 112000, 113001), ('root_testing_source_100000_addresses.json', 'temp/proofs_126.json', 126000, 127001), ('root_testing_source_100000_addresses.json', 'temp/proofs_33.json', 33000, 34001), ('root_testing_source_100000_addresses.json', 'temp/proofs_84.json', 84000, 85001), ('root_testing_source_100000_addresses.json', 'temp/proofs_196.json', 196000, 197001), ('root_testing_source_100000_addresses.json', 'temp/proofs_122.json', 122000, 123001), ('root_testing_source_100000_addresses.json', 'temp/proofs_151.json', 151000, 152001), ('root_testing_source_100000_addresses.json', 'temp/proofs_162.json', 162000, 163001), ('root_testing_source_100000_addresses.json', 'temp/proofs_12.json', 12000, 13001), ('root_testing_source_100000_addresses.json', 'temp/proofs_6.json', 6000, 7001), ('root_testing_source_100000_addresses.json', 'temp/proofs_180.json', 180000, 181001), ('root_testing_source_100000_addresses.json', 'temp/proofs_167.json', 167000, 168001), ('root_testing_source_100000_addresses.json', 'temp/proofs_93.json', 93000, 94001), ('root_testing_source_100000_addresses.json', 'temp/proofs_198.json', 198000, 199001), ('root_testing_source_100000_addresses.json', 'temp/proofs_171.json', 171000, 172001), ('root_testing_source_100000_addresses.json', 'temp/proofs_41.json', 41000, 42001), ('root_testing_source_100000_addresses.json', 'temp/proofs_144.json', 144000, 145001), ('root_testing_source_100000_addresses.json', 'temp/proofs_86.json', 86000, 87001), ('root_testing_source_100000_addresses.json', 'temp/proofs_148.json', 148000, 149001), ('root_testing_source_100000_addresses.json', 'temp/proofs_103.json', 103000, 104001), ('root_testing_source_100000_addresses.json', 'temp/proofs_91.json', 91000, 92001), ('root_testing_source_100000_addresses.json', 'temp/proofs_116.json', 116000, 117001), ('root_testing_source_100000_addresses.json', 'temp/proofs_134.json', 134000, 135001), ('root_testing_source_100000_addresses.json', 'temp/proofs_189.json', 189000, 190001), ('root_testing_source_100000_addresses.json', 'temp/proofs_193.json', 193000, 194001), ('root_testing_source_100000_addresses.json', 'temp/proofs_48.json', 48000, 49001), ('root_testing_source_100000_addresses.json', 'temp/proofs_141.json', 141000, 142001), ('root_testing_source_100000_addresses.json', 'temp/proofs_21.json', 21000, 22001), ('root_testing_source_100000_addresses.json', 'temp/proofs_25.json', 25000, 26001), ('root_testing_source_100000_addresses.json', 'temp/proofs_108.json', 108000, 109001), ('root_testing_source_100000_addresses.json', 'temp/proofs_118.json', 118000, 119001), ('root_testing_source_100000_addresses.json', 'temp/proofs_90.json', 90000, 91001), ('root_testing_source_100000_addresses.json', 'temp/proofs_136.json', 136000, 137001), ('root_testing_source_100000_addresses.json', 'temp/proofs_168.json', 168000, 169001), ('root_testing_source_100000_addresses.json', 'temp/proofs_199.json', 199000, 200001), ('root_testing_source_100000_addresses.json', 'temp/proofs_81.json', 81000, 82001), ('root_testing_source_100000_addresses.json', 'temp/proofs_35.json', 35000, 36001), ('root_testing_source_100000_addresses.json', 'temp/proofs_73.json', 73000, 74001), ('root_testing_source_100000_addresses.json', 'temp/proofs_10.json', 10000, 11001), ('root_testing_source_100000_addresses.json', 'temp/proofs_80.json', 80000, 81001), ('root_testing_source_100000_addresses.json', 'temp/proofs_113.json', 113000, 114001), ('root_testing_source_100000_addresses.json', 'temp/proofs_110.json', 110000, 111001), ('root_testing_source_100000_addresses.json', 'temp/proofs_178.json', 178000, 179001), ('root_testing_source_100000_addresses.json', 'temp/proofs_119.json', 119000, 120001), ('root_testing_source_100000_addresses.json', 'temp/proofs_61.json', 61000, 62001), ('root_testing_source_100000_addresses.json', 'temp/proofs_129.json', 129000, 130001), ('root_testing_source_100000_addresses.json', 'temp/proofs_170.json', 170000, 171001), ('root_testing_source_100000_addresses.json', 'temp/proofs_4.json', 4000, 5001), ('root_testing_source_100000_addresses.json', 'temp/proofs_101.json', 101000, 102001), ('root_testing_source_100000_addresses.json', 'temp/proofs_55.json', 55000, 56001), ('root_testing_source_100000_addresses.json', 'temp/proofs_142.json', 142000, 143001), ('root_testing_source_100000_addresses.json', 'temp/proofs_69.json', 69000, 70001), ('root_testing_source_100000_addresses.json', 'temp/proofs_135.json', 135000, 136001), ('root_testing_source_100000_addresses.json', 'temp/proofs_59.json', 59000, 60001), ('root_testing_source_100000_addresses.json', 'temp/proofs_154.json', 154000, 155001), ('root_testing_source_100000_addresses.json', 'temp/proofs_96.json', 96000, 97001), ('root_testing_source_100000_addresses.json', 'temp/proofs_138.json', 138000, 139001), ('root_testing_source_100000_addresses.json', 'temp/proofs_19.json', 19000, 20001), ('root_testing_source_100000_addresses.json', 'temp/proofs_179.json', 179000, 180001), ('root_testing_source_100000_addresses.json', 'temp/proofs_146.json', 146000, 147001), ('root_testing_source_100000_addresses.json', 'temp/proofs_22.json', 22000, 23001), ('root_testing_source_100000_addresses.json', 'temp/proofs_83.json', 83000, 84001), ('root_testing_source_100000_addresses.json', 'temp/proofs_1.json', 1000, 2001), ('root_testing_source_100000_addresses.json', 'temp/proofs_9.json', 9000, 10001), ('root_testing_source_100000_addresses.json', 'temp/proofs_121.json', 121000, 122001), ('root_testing_source_100000_addresses.json', 'temp/proofs_140.json', 140000, 141001), ('root_testing_source_100000_addresses.json', 'temp/proofs_74.json', 74000, 75001), ('root_testing_source_100000_addresses.json', 'temp/proofs_155.json', 155000, 156001), ('root_testing_source_100000_addresses.json', 'temp/proofs_99.json', 99000, 100001), ('root_testing_source_100000_addresses.json', 'temp/proofs_183.json', 183000, 184001), ('root_testing_source_100000_addresses.json', 'temp/proofs_164.json', 164000, 165001), ('root_testing_source_100000_addresses.json', 'temp/proofs_181.json', 181000, 182001), ('root_testing_source_100000_addresses.json', 'temp/proofs_195.json', 195000, 196001), ('root_testing_source_100000_addresses.json', 'temp/proofs_34.json', 34000, 35001), ('root_testing_source_100000_addresses.json', 'temp/proofs_192.json', 192000, 193001), ('root_testing_source_100000_addresses.json', 'temp/proofs_115.json', 115000, 116001)}\n" + "{('root_testing_source_50000_addresses.json', 'temp/proofs_75.json', 75000, 76001), ('root_testing_source_50000_addresses.json', 'temp/proofs_8.json', 8000, 9001), ('root_testing_source_50000_addresses.json', 'temp/proofs_5.json', 5000, 6001), ('root_testing_source_50000_addresses.json', 'temp/proofs_37.json', 37000, 38001), ('root_testing_source_50000_addresses.json', 'temp/proofs_4.json', 4000, 5001), ('root_testing_source_50000_addresses.json', 'temp/proofs_17.json', 17000, 18001), ('root_testing_source_50000_addresses.json', 'temp/proofs_19.json', 19000, 20001), ('root_testing_source_50000_addresses.json', 'temp/proofs_82.json', 82000, 83001), ('root_testing_source_50000_addresses.json', 'temp/proofs_48.json', 48000, 49001), ('root_testing_source_50000_addresses.json', 'temp/proofs_95.json', 95000, 96001), ('root_testing_source_50000_addresses.json', 'temp/proofs_81.json', 81000, 82001), ('root_testing_source_50000_addresses.json', 'temp/proofs_23.json', 23000, 24001), ('root_testing_source_50000_addresses.json', 'temp/proofs_14.json', 14000, 15001), ('root_testing_source_50000_addresses.json', 'temp/proofs_73.json', 73000, 74001), ('root_testing_source_50000_addresses.json', 'temp/proofs_2.json', 2000, 3001), ('root_testing_source_50000_addresses.json', 'temp/proofs_90.json', 90000, 91001), ('root_testing_source_50000_addresses.json', 'temp/proofs_6.json', 6000, 7001), ('root_testing_source_50000_addresses.json', 'temp/proofs_78.json', 78000, 79001), ('root_testing_source_50000_addresses.json', 'temp/proofs_57.json', 57000, 58001), ('root_testing_source_50000_addresses.json', 'temp/proofs_16.json', 16000, 17001), ('root_testing_source_50000_addresses.json', 'temp/proofs_31.json', 31000, 32001), ('root_testing_source_50000_addresses.json', 'temp/proofs_46.json', 46000, 47001), ('root_testing_source_50000_addresses.json', 'temp/proofs_80.json', 80000, 81001), ('root_testing_source_50000_addresses.json', 'temp/proofs_76.json', 76000, 77001), ('root_testing_source_50000_addresses.json', 'temp/proofs_55.json', 55000, 56001), ('root_testing_source_50000_addresses.json', 'temp/proofs_63.json', 63000, 64001), ('root_testing_source_50000_addresses.json', 'temp/proofs_30.json', 30000, 31001), ('root_testing_source_50000_addresses.json', 'temp/proofs_20.json', 20000, 21001), ('root_testing_source_50000_addresses.json', 'temp/proofs_99.json', 99000, 100001), ('root_testing_source_50000_addresses.json', 'temp/proofs_9.json', 9000, 10001), ('root_testing_source_50000_addresses.json', 'temp/proofs_66.json', 66000, 67001), ('root_testing_source_50000_addresses.json', 'temp/proofs_60.json', 60000, 61001), ('root_testing_source_50000_addresses.json', 'temp/proofs_69.json', 69000, 70001), ('root_testing_source_50000_addresses.json', 'temp/proofs_50.json', 50000, 51001), ('root_testing_source_50000_addresses.json', 'temp/proofs_45.json', 45000, 46001), ('root_testing_source_50000_addresses.json', 'temp/proofs_52.json', 52000, 53001), ('root_testing_source_50000_addresses.json', 'temp/proofs_96.json', 96000, 97001), ('root_testing_source_50000_addresses.json', 'temp/proofs_22.json', 22000, 23001), ('root_testing_source_50000_addresses.json', 'temp/proofs_40.json', 40000, 41001), ('root_testing_source_50000_addresses.json', 'temp/proofs_24.json', 24000, 25001), ('root_testing_source_50000_addresses.json', 'temp/proofs_15.json', 15000, 16001), ('root_testing_source_50000_addresses.json', 'temp/proofs_59.json', 59000, 60001), ('root_testing_source_50000_addresses.json', 'temp/proofs_41.json', 41000, 42001), ('root_testing_source_50000_addresses.json', 'temp/proofs_54.json', 54000, 55001), ('root_testing_source_50000_addresses.json', 'temp/proofs_94.json', 94000, 95001), ('root_testing_source_50000_addresses.json', 'temp/proofs_29.json', 29000, 30001), ('root_testing_source_50000_addresses.json', 'temp/proofs_11.json', 11000, 12001), ('root_testing_source_50000_addresses.json', 'temp/proofs_39.json', 39000, 40001), ('root_testing_source_50000_addresses.json', 'temp/proofs_70.json', 70000, 71001), ('root_testing_source_50000_addresses.json', 'temp/proofs_43.json', 43000, 44001), ('root_testing_source_50000_addresses.json', 'temp/proofs_58.json', 58000, 59001), ('root_testing_source_50000_addresses.json', 'temp/proofs_18.json', 18000, 19001), ('root_testing_source_50000_addresses.json', 'temp/proofs_65.json', 65000, 66001), ('root_testing_source_50000_addresses.json', 'temp/proofs_35.json', 35000, 36001), ('root_testing_source_50000_addresses.json', 'temp/proofs_1.json', 1000, 2001), ('root_testing_source_50000_addresses.json', 'temp/proofs_12.json', 12000, 13001), ('root_testing_source_50000_addresses.json', 'temp/proofs_85.json', 85000, 86001), ('root_testing_source_50000_addresses.json', 'temp/proofs_61.json', 61000, 62001), ('root_testing_source_50000_addresses.json', 'temp/proofs_92.json', 92000, 93001), ('root_testing_source_50000_addresses.json', 'temp/proofs_10.json', 10000, 11001), ('root_testing_source_50000_addresses.json', 'temp/proofs_38.json', 38000, 39001), ('root_testing_source_50000_addresses.json', 'temp/proofs_91.json', 91000, 92001), ('root_testing_source_50000_addresses.json', 'temp/proofs_67.json', 67000, 68001), ('root_testing_source_50000_addresses.json', 'temp/proofs_47.json', 47000, 48001), ('root_testing_source_50000_addresses.json', 'temp/proofs_32.json', 32000, 33001), ('root_testing_source_50000_addresses.json', 'temp/proofs_74.json', 74000, 75001), ('root_testing_source_50000_addresses.json', 'temp/proofs_49.json', 49000, 50001), ('root_testing_source_50000_addresses.json', 'temp/proofs_83.json', 83000, 84001), ('root_testing_source_50000_addresses.json', 'temp/proofs_27.json', 27000, 28001), ('root_testing_source_50000_addresses.json', 'temp/proofs_62.json', 62000, 63001), ('root_testing_source_50000_addresses.json', 'temp/proofs_72.json', 72000, 73001), ('root_testing_source_50000_addresses.json', 'temp/proofs_71.json', 71000, 72001), ('root_testing_source_50000_addresses.json', 'temp/proofs_42.json', 42000, 43001), ('root_testing_source_50000_addresses.json', 'temp/proofs_68.json', 68000, 69001), ('root_testing_source_50000_addresses.json', 'temp/proofs_89.json', 89000, 90001), ('root_testing_source_50000_addresses.json', 'temp/proofs_98.json', 98000, 99001), ('root_testing_source_50000_addresses.json', 'temp/proofs_36.json', 36000, 37001), ('root_testing_source_50000_addresses.json', 'temp/proofs_34.json', 34000, 35001), ('root_testing_source_50000_addresses.json', 'temp/proofs_88.json', 88000, 89001), ('root_testing_source_50000_addresses.json', 'temp/proofs_56.json', 56000, 57001), ('root_testing_source_50000_addresses.json', 'temp/proofs_21.json', 21000, 22001), ('root_testing_source_50000_addresses.json', 'temp/proofs_26.json', 26000, 27001), ('root_testing_source_50000_addresses.json', 'temp/proofs_33.json', 33000, 34001), ('root_testing_source_50000_addresses.json', 'temp/proofs_79.json', 79000, 80001), ('root_testing_source_50000_addresses.json', 'temp/proofs_25.json', 25000, 26001), ('root_testing_source_50000_addresses.json', 'temp/proofs_84.json', 84000, 85001), ('root_testing_source_50000_addresses.json', 'temp/proofs_93.json', 93000, 94001), ('root_testing_source_50000_addresses.json', 'temp/proofs_13.json', 13000, 14001), ('root_testing_source_50000_addresses.json', 'temp/proofs_44.json', 44000, 45001), ('root_testing_source_50000_addresses.json', 'temp/proofs_87.json', 87000, 88001), ('root_testing_source_50000_addresses.json', 'temp/proofs_77.json', 77000, 78001), ('root_testing_source_50000_addresses.json', 'temp/proofs_7.json', 7000, 8001), ('root_testing_source_50000_addresses.json', 'temp/proofs_86.json', 86000, 87001), ('root_testing_source_50000_addresses.json', 'temp/proofs_97.json', 97000, 98001), ('root_testing_source_50000_addresses.json', 'temp/proofs_53.json', 53000, 54001), ('root_testing_source_50000_addresses.json', 'temp/proofs_64.json', 64000, 65001), ('root_testing_source_50000_addresses.json', 'temp/proofs_0.json', 0, 1001), ('root_testing_source_50000_addresses.json', 'temp/proofs_28.json', 28000, 29001), ('root_testing_source_50000_addresses.json', 'temp/proofs_3.json', 3000, 4001), ('root_testing_source_50000_addresses.json', 'temp/proofs_51.json', 51000, 52001)}\n" ] }, { "data": { - "text/plain": " 0%| | 0/200 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
020000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...[d7994ad73633a407682e08454c4f6f204c62abb39ba94...[ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896...
120000john16505145390QmcTMPUubiQPK2ZsEpVRDE7LdbGRBZYNRBwJSfRdRdNhYv0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca0xea1e4958631e349eeec2e49d59281f69eb0b453120b3...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6pottery hen display later journey drastic need...bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50...0xab18d0c72c34142df74678d8728b557e6efa5b1f01ef...{'pub_key': 'AuE0sjrPIEMRXUysFNN9z43/gpxlkgs0e...eyJwdWJfa2V5IjoiQXVFMHNqclBJRU1SWFV5c0ZOTjl6ND...[d7994ad73633a407682e08454c4f6f204c62abb39ba94...[ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896...
220000john16505145391QmcbX6Af2hx9Co1wDKnkpG5HwTVoC4sYUiJNdKiSgRgNsg0x54a31fa6e38731c1b8eda7579cf156a33769179f0xce2da6faaae94781d2881cc33edaf8ce32fd05f52ad1...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fgosmo1h48dqhht7cfukuxusujqgeuzpt43jtg8gl7kpaarrange sure benefit recipe replace width fan ...bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg...0x7af0aed2bbf9b33e3e73a34cff62a19d2078f84030fa...{'pub_key': 'AtzxTgc/gj7M7q1a6oVBOz/V9uqAWmjjP...eyJwdWJfa2V5IjoiQXR6eFRnYy9najdNN3ExYTZvVkJPei...[81f6ba90f31cfd28c01b6c2fd1f2b7969482df24c44fe...[a12947f476bc2c7836a2e99efdc602fdec5861f394441...
320000john16505145392QmNg2da2P9CQppC5QdRsu8zy8LCbKSgwSCX7K51zexf2xq0x7bd9105d6084694757c819f8a965e39ecf7ff8a20x6213c521d7e6533db5bd4af75ef0ad61251afb632a0f...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2cosmos1c0h2ysdynjq7sslef0ktx86a9yk0dkp96lka7djoke vacuum town dress below either height tig...bostrom1c0h2ysdynjq7sslef0ktx86a9yk0dkp9evzwq2...0x73d09d6c82e35d6bd9379519a1957504ef235744e74d...{'pub_key': 'AhE823RJVhq2gyouGMwgcDvOQK80l/hap...eyJwdWJfa2V5IjoiQWhFODIzUkpWaHEyZ3lvdUdNd2djRH...[cf4410fa48d4b8524be71f0b897838c9d4091b3677cef...[6c8a772467c91ba7d401ae87f4bfa6480946d96b03dbc...
420000john16505145393QmbEz8ZGkWeQnpEJPSQrjnDpcyCxwyaerkmd1gxWYMn2Kf0x60920d73ebeaede54d58d56f0a7e22b6c051a9120x289c072a670df38e707d7c26f9c1b7ebe255431b56d6...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3cosmos1na6xl94tl7r5sjxyuhva04sy8p68jhhzhw7pxkcollect hockey simple firm joke air polar salo...bostrom1na6xl94tl7r5sjxyuhva04sy8p68jhhz5a2jc3...0x7d92f8e2e6b9db95853d5a7692bcd4c87c3b32966c58...{'pub_key': 'A2COW5KWNuVXMJPyoNNNpsIxlcs7N7CfX...eyJwdWJfa2V5IjoiQTJDT1c1S1dOdVZYTUpQeW9OTk5wc0...[0c9925d293ac5afdd7c80530610f28408c84b3b138530...[cf6588c49f84523a5264a7b4fd92dbd811c7c0b3ba23f...
\n" + "text/plain": " amount nickname avatar \\\n0 30000 john16510755980 QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe \n1 30000 john16510755980 QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe \n2 30000 john16510755981 QmZpd2kCy2L32nutybeNyZa2U4V8MEVfG9t3xsHV8hi8oi \n3 30000 john16510755982 QmaSExj3kqGgyNHDcS1MYi4RRWRRhiLTMQvJBVSV1pRysv \n4 30000 john16510755983 QmdkNrH37aHtjkqc34wWfNr69UvQXrsghmpRDb8N62RBcK \n\n ethereum_address \\\n0 0x4728b5d6240343f357b7e11863ad32492ebc7668 \n1 0x4728b5d6240343f357b7e11863ad32492ebc7668 \n2 0x8544acb35c255078dcfe5827bdf539f23fc4f347 \n3 0x9d265a500b932d1601478d50af8fa597b51077ed \n4 0x0ccdb3913071a85ba7e325a728b35b7031a2f841 \n\n ethereum_private_key \\\n0 0x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e... \n1 0x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e... \n2 0xd08ff213baeee47add74b3620332e595f8edb5dc556f... \n3 0x5d7d660a54591c323a836e162a9865a245b738c2d548... \n4 0xe65d014bde708de4d4558e7c09b45b08e1d1f0f04fb5... \n\n bostrom_address \\\n0 bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70 \n1 bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70 \n2 bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s \n3 bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz \n4 bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn \n\n cosmos_address \\\n0 terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzg \n1 terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzg \n2 cosmos1en9pu3xckqu8cj6qenw9x0xs02zfe8h96wru0h \n3 cosmos1a2z98w5htp738l35vra8lcknztf292myns2rl9 \n4 terra1a00xqte46sv80e386jxjen7htpzuk64sqg4n85 \n\n cosmos_seed \\\n0 enjoy wait anxiety recycle thrive evidence was... \n1 enjoy wait anxiety recycle thrive evidence was... \n2 dry auto denial present oval marine opinion sl... \n3 ship turn amused rule parrot current hold regr... \n4 side bread decline actor mandate hollow arena ... \n\n message \\\n0 bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70... \n1 bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70... \n2 bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s... \n3 bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz... \n4 bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn... \n\n ethereum_message_signature \\\n0 0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf... \n1 0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf... \n2 0x9225d7843f8bcdf7c4e969a69cba1ab9bb2e2f83ede8... \n3 0xd4000eacac3facfc3366bc893bfdd7a0ea24288650e7... \n4 0x159ee0c77d0a03074fd7fe418ec929d28d9919ca44ed... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE... \n1 {'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE... \n2 {'pub_key': 'Aj7QPDdHomIP2DUH9eTnSfOon44xrMLIZ... \n3 {'pub_key': 'Aw0oWw3gkVlNat5+055ePbrJhrj7LVZy0... \n4 {'pub_key': 'Aw8kHHa+WGrKrX0aS3j4V3RP+Gzusj1b/... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG... \n1 eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG... \n2 eyJwdWJfa2V5IjoiQWo3UVBEZEhvbUlQMkRVSDllVG5TZk... \n3 eyJwdWJfa2V5IjoiQXcwb1d3M2drVmxOYXQ1KzA1NWVQYn... \n4 eyJwdWJfa2V5IjoiQXc4a0hIYStXR3JLclgwYVMzajRWM1... \n\n ethereum_proof \\\n0 [34b7a2e200e5c3f096bdc387bba1de12394b5bf22fbc6... \n1 [34b7a2e200e5c3f096bdc387bba1de12394b5bf22fbc6... \n2 [30f68c9d61928bcedeadb3b832f7a05564acf39862de9... \n3 [288660d1d333ebb6696458bfa55d84ef1ef3d72ca60f3... \n4 [d1e1ef301abdeba9df2dd907e330b33160c8cb3e4925c... \n\n cosmos_proof \n0 [0c9f9a62d402bb94f072f4e0d3315facacdde304c170f... \n1 [0c9f9a62d402bb94f072f4e0d3315facacdde304c170f... \n2 [4327d418680f19edea0c09eb64a6856da55bee3733390... \n3 [fd4f92e4df636bf36fa59bd8e58cb73db8f047c390fe8... \n4 [176519937326fb3e1316b4beb5814163e26fdc9b864f7... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
030000john16510755980QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe0x4728b5d6240343f357b7e11863ad32492ebc76680x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzgenjoy wait anxiety recycle thrive evidence was...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70...0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf...{'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE...eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG...[34b7a2e200e5c3f096bdc387bba1de12394b5bf22fbc6...[0c9f9a62d402bb94f072f4e0d3315facacdde304c170f...
130000john16510755980QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe0x4728b5d6240343f357b7e11863ad32492ebc76680x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzgenjoy wait anxiety recycle thrive evidence was...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70...0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf...{'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE...eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG...[34b7a2e200e5c3f096bdc387bba1de12394b5bf22fbc6...[0c9f9a62d402bb94f072f4e0d3315facacdde304c170f...
230000john16510755981QmZpd2kCy2L32nutybeNyZa2U4V8MEVfG9t3xsHV8hi8oi0x8544acb35c255078dcfe5827bdf539f23fc4f3470xd08ff213baeee47add74b3620332e595f8edb5dc556f...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03scosmos1en9pu3xckqu8cj6qenw9x0xs02zfe8h96wru0hdry auto denial present oval marine opinion sl...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s...0x9225d7843f8bcdf7c4e969a69cba1ab9bb2e2f83ede8...{'pub_key': 'Aj7QPDdHomIP2DUH9eTnSfOon44xrMLIZ...eyJwdWJfa2V5IjoiQWo3UVBEZEhvbUlQMkRVSDllVG5TZk...[30f68c9d61928bcedeadb3b832f7a05564acf39862de9...[4327d418680f19edea0c09eb64a6856da55bee3733390...
330000john16510755982QmaSExj3kqGgyNHDcS1MYi4RRWRRhiLTMQvJBVSV1pRysv0x9d265a500b932d1601478d50af8fa597b51077ed0x5d7d660a54591c323a836e162a9865a245b738c2d548...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spzcosmos1a2z98w5htp738l35vra8lcknztf292myns2rl9ship turn amused rule parrot current hold regr...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz...0xd4000eacac3facfc3366bc893bfdd7a0ea24288650e7...{'pub_key': 'Aw0oWw3gkVlNat5+055ePbrJhrj7LVZy0...eyJwdWJfa2V5IjoiQXcwb1d3M2drVmxOYXQ1KzA1NWVQYn...[288660d1d333ebb6696458bfa55d84ef1ef3d72ca60f3...[fd4f92e4df636bf36fa59bd8e58cb73db8f047c390fe8...
430000john16510755983QmdkNrH37aHtjkqc34wWfNr69UvQXrsghmpRDb8N62RBcK0x0ccdb3913071a85ba7e325a728b35b7031a2f8410xe65d014bde708de4d4558e7c09b45b08e1d1f0f04fb5...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmnterra1a00xqte46sv80e386jxjen7htpzuk64sqg4n85side bread decline actor mandate hollow arena ...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn...0x159ee0c77d0a03074fd7fe418ec929d28d9919ca44ed...{'pub_key': 'Aw8kHHa+WGrKrX0aS3j4V3RP+Gzusj1b/...eyJwdWJfa2V5IjoiQXc4a0hIYStXR3JLclgwYVMzajRWM1...[d1e1ef301abdeba9df2dd907e330b33160c8cb3e4925c...[176519937326fb3e1316b4beb5814163e26fdc9b864f7...
\n
" }, "execution_count": 5, "metadata": {}, @@ -1583,9 +987,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Name subgraph contract address: bostrom1rncw9n73gm30vhrv6e4p603hav0gue8y5y9fgqa84k4atf5pqvfqcrnpl6\n", - "Avatar subgraph contract address: bostrom164w2vl7z7lpuvex6z3ru0v55fgq3dmvxuqt0aejp49w7fyc8g6kshreggq\n", - "Proof subgraph contract address: bostrom1543j9n7slzff3curyac7ylf2ctg7rk9zjf9ehj08eqx57xj33zzqdy6ga4\n" + "Name subgraph contract address: bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza\n", + "Avatar subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", + "Proof subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n" ] } ], @@ -1643,7 +1047,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Passport contract address: bostrom1g59m935w4kxmtfx5hhykre7w9q497ptp66asspz76vhgarss5ensdy35s8\n" + "Passport contract address: bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf\n" ] } ], @@ -1701,6 +1105,51 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Treasury Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 60, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Treasury contract address: bostrom18cszlvm6pze0x9sz32qnjq4vtd45xehqs8dq7cwy8yhq35wfnn3q9u647v\n" + ] + } + ], + "source": [ + "if INIT_TREASURY_CONTRACT:\n", + " treasury_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"admins\": [\"{WALLET_ADDRESS}\"], \"mutable\": true}}''',\n", + " contract_code_id=TREASURY_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test treasury',\n", + " from_address=WALLET_ADDRESS,\n", + " display_data=False)\n", + "else:\n", + " treasury_contract_address = TREASURY_CONTRACT_ADDRESS\n", + "print(f'Treasury contract address: {treasury_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "source": [ @@ -1715,13 +1164,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1923ktlaaw5gsnsxtl5evudr798s9vp744q4rtu9mapt24p2heq3sccue2w\n" + "Gift contract address: bostrom1kwdranvwf6vl2grh99layugwdnph6um2x0c0l8qyvrcgsjcykuhsjvtnl3\n" ] } ], @@ -1729,9 +1178,8 @@ "if INIT_GIFT_CONTRACT:\n", " gift_contract_address = \\\n", " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"treasury\":\"{treasury_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", " contract_code_id=GIFT_CODE_ID,\n", - " amount=INITIAL_BALANCE,\n", " contract_label='test gift',\n", " from_address=WALLET_ADDRESS,\n", " display_data=False)\n", @@ -1760,17 +1208,122 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "outputs": [], "source": [ "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", " address_dict= {\n", " gift_contract_address: 'Gift Contract',\n", " passport_contract_address: 'Passport Contract',\n", + " treasury_contract_address: 'Treasury Contract',\n", " WALLET_ADDRESS: 'Passport Owner Address',\n", " name_subgraph_contract_address: 'Name Subgraph Contract',\n", " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", - "proof_subgraph_contract_address: 'Proof Subgraph Contract'})" + " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set Allowance in Treasury contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Treasury Contract\n", + "\tamount: 7000000000boot\n", + "\n", + "coin spent\n", + "\tspender: Passport Owner Address\n", + "\tamount: 7000000000boot\n", + "\n", + "message from bank bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0 /cosmos.bank.v1beta1.MsgMultiSend\n", + "\n", + "transfer\n", + "\trecipient: Treasury Contract\n", + "\tamount: 7000000000boot\n", + "Gas used: 72,935\n", + "Tx hash: DB7D682C80C98487226020809543360F870D4334CA1A4E81092AD316A6E9D7E9\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(\n", + " contract_utils.send_coins(\n", + " from_seed=WALLET_SEED,\n", + " to_addresses=[treasury_contract_address],\n", + " amounts=[INITIAL_BALANCE],\n", + " gas=min(100_000 + 25_000, int(20e6)),\n", + " display_data=DISPLAY_TX_EXECUTION))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 54, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Treasury Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Treasury Contract\n", + "\taction: increase_allowance\n", + "\towner: Passport Owner Address\n", + "\tspender: Gift Contract\n", + "\tdenomination: boot\n", + "\tamount: 7,000,000,000\n", + "Gas used: 135,616\n", + "Tx hash: 340EA372979FFB714A5ECD218685EC42EB8F5A81F19FD91C0590E8F12F295ED0\n" + ] + } + ], + "source": [ + "def set_allowance(amount: str = INITIAL_BALANCE, display_data: bool = False):\n", + " return contract_utils.execute_contract(\n", + " execute_msg={\"increase_allowance\": {\"spender\": gift_contract_address, \"amount\": {\"amount\": amount, \"denom\": 'boot'}}},\n", + " contract_address=treasury_contract_address,\n", + " mnemonic=WALLET_SEED,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "contract_utils.parse_contract_execution_json(\n", + " set_allowance(display_data=False))" ], "metadata": { "collapsed": false, @@ -1803,7 +1356,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "outputs": [ { "name": "stdout", @@ -1820,9 +1373,9 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: 896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541\n", - "Gas used: 121,492\n", - "Tx hash: 04115509D4B1BAF1CDECB5334585561BADF092583A42AE2BE81B0BD16D411C17\n" + "\tmerkle_root: a29db2dd9b82645fec8fe623533e7c1ede6c8a9cd549ff3d27d986d77c7358b4\n", + "Gas used: 130,997\n", + "Tx hash: 89BA6F6CB162C54FFA8CBC7E1260520C935DD91A5C285F3F064A4120551907AA\n" ] } ], @@ -1855,14 +1408,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom1923ktlaaw5gsnsxtl5evudr798s9vp744q4rtu9mapt24p2heq3sccue2w\n", - "{'data': {'merkle_root': '896386ecff01a3e567efc15113b10320a6916d98b4d2bb9238e6719e352af541'}}\n" + "Gift contract bostrom1kwdranvwf6vl2grh99layugwdnph6um2x0c0l8qyvrcgsjcykuhsjvtnl3\n", + "{'data': {'merkle_root': 'a29db2dd9b82645fec8fe623533e7c1ede6c8a9cd549ff3d27d986d77c7358b4'}}\n" ] } ], @@ -1902,592 +1455,352 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "outputs": [ { "data": { "text/plain": " 0%| | 0/101 [00:00 Nickname\n", - "\tNickname -> Passport Owner Address\n", - "\tneuron: Name Subgraph Contract\n", - "\n", - "\tNickname -> Avatar\n", - "\tAvatar -> Nickname\n", - "\tneuron: Avatar Subgraph Contract\n", - "\n", - "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Name Subgraph Contract\n", + "\treply contract: Avatar Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\ttoken_id: 273502\n", - "Gas used: 440,639\n", - "Tx hash: C5D37ED01DA7729B4EFF34D23F914D91ECA5F05276919F6C246A9C18773602DE\n" + "\towner: bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq\n", + "\ttoken_id: 1313\n", + "Gas used: 304,936\n", + "Tx hash: 68476B519B9D3917F8642F5AC5A1072F6920709D4B94B7268695AFA5BE3000F5\n" ] } ], @@ -3378,7 +2534,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 63, "outputs": [ { "name": "stdout", @@ -3387,25 +2543,22 @@ "\n", "Events\n", "\n", - "cyberlinks\n", - "\tNickname -> Ethereum Address\n", - "\tEthereum Address -> Nickname\n", - "\tneuron: Proof Subgraph Contract\n", - "\n", - "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Proof Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16505145390\n", - "\taddress: 0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca\n", - "Gas used: 281,286\n", - "Tx hash: FE3E533881DB9739E4BA17DC8CB90F74EE0FA5E36E303EE7116A6ED0F8FB3754\n" + "\tnickname: john1651075598899\n", + "\taddress: 0x36b3f2647f2c4fb9a853c84004cf135d1817d3e1\n", + "Gas used: 218,815\n", + "Tx hash: 941A55ACD76F9448C35805DDF850F091B35F0F65A4FFB22F106845988EF596EA\n" ] } ], @@ -3421,7 +2574,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 64, "outputs": [ { "name": "stdout", @@ -3429,9 +2582,23 @@ "text": [ "\n", "Events\n", - "account sequence mismatch, expected 3, got 2: incorrect account sequence\n", - "Gas used: 45,725\n", - "Tx hash: 194F45CEAF88E1D67E6800105DF9F19F9A2C60F902CD76CAA0618059A7AF47C8\n" + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", + "\n", + "message from bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Proof Subgraph Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john1651075598899\n", + "\taddress: osmo1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0nslrq4\n", + "Gas used: 222,147\n", + "Tx hash: 1EB352774FC27C7DEB00562B13A2F9EB9AD00B41A0357A9975CDA51B14FF3BA0\n" ] } ], @@ -3447,7 +2614,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 65, "outputs": [ { "name": "stdout", @@ -3455,9 +2622,37 @@ "text": [ "\n", "Events\n", - "account sequence mismatch, expected 3, got 2: incorrect account sequence\n", - "Gas used: 66,365\n", - "Tx hash: A567FA0EE76102306A2FE2FE5504C6E1DBEF718B099F753492ACC64025044B99\n" + "\n", + "coin received\n", + "\treceiver: bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Treasury Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\texecute contract: Treasury Contract\n", + "\n", + "message from bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq\n", + "\tsender: Treasury Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: osmo1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0nslrq4\n", + "\ttarget: bostrom1dn752gjrly9y6nm0ddwhd5h3rdp4uwx0cccqgq\n", + "\tamount: 372,091\n", + "\t_contract_address: Treasury Contract\n", + "\taction: execute\n", + "\towner: Gift Contract\n", + "Gas used: 394,925\n", + "Tx hash: 792776D0D16ED7AB26123A987F98A5D462978CAEBA8D7F77B54BAB2C35B10566\n" ] } ], @@ -3471,29 +2666,6 @@ } } }, - { - "cell_type": "code", - "execution_count": 35, - "outputs": [ - { - "data": { - "text/plain": "\"{'claim': {'nickname': 'john16505145390', 'gift_claiming_address': '0x97649bc00f28d5df4ec7918f9b7781fc8ec98aca', 'gift_amount': '20000', 'proof': ['d7994ad73633a407682e08454c4f6f204c62abb39ba9445ffbd752682e7399f6', 'b216b4d989f96eea1236bfd7f3353511062b6ccf57144b27e5fc4696bc628db3', '304d2eb8c435271af3c3a5a26637b93c5180485c65b6e6d0d8c0c2e5543d43a3', 'c1911041c63aed27e6525c4e53b779ee4a83e6bc56928815931052d130425fd6', 'dd4acb78e0ba298c05a87aab437939f2247135ee95db77cbf1a497b4b24d7223', '95fdb1deacc6b5e579f311c48ab34e05d60e8b06601930db6d815aabed949ff7', '5790cd3f7f1a87cd1c9790f7871ddd3e77c435788eb50c6046614a741c1307b4', '475f65dbbd92f3cc6993fcc9b555c5e90e0fcf1bc1f3b6f6af1cb38c66d66941', 'f90ea473b36d04ad3fad9569be7763273ba88288b7d4a1445644d8d89d3b066e', 'e46722181b39fec39867bd85c42b39f300a9d2973abec6649000b1d5ba508f51', '1c34554ac02a8a87fa7007a99808b334608d4b294ecf4cf3ce168a46f59dc297', '025ad62bb9bc634ccd872746b721f97a3179b13f4ad0cc8579d354eb750cda99', '34b67b797b94ce2d67f718e15005ede24c019ed410df0a9a73a8fc9cddb25907', '3cc69da7d8973783603a7fba0ae1ec91217ffbb3240b1a3ae0af5c3cacc6ce76', 'eda4d32a6ffb4244da50cebeda6d2ecd3b16d816493adcc42e0edd6f15cf75ad', '22f793e1646a8209afbe521325f2c13e971c398297c1a62159d6db5e5051df01', '808b073c50f904d95f56a6ba7e4f898d951dac00e58847783ef028be5cb732d8', 'dd92e6d7c71669e4bf6d1c69465b45551a7f37665b3c28a84706265d1bc58e42']}}\\n{'claim': {'nickname': 'john16505145390', 'gift_claiming_address': 'osmo12asenmdatefr74qhpvr3twur35xm8t638jspu6', 'gift_amount': '20000', 'proof': ['ac0d7205b7d2da4496e9c0a99ec9309106835dfcec896da71f9ee1fffd4bb334', '49f0e8334c20e13225a8ca5d5b4de3e5c9ca95806595eed5e59dbb7ac40ff631', 'b2a2bce5baed9cbb75c2dd87a907d4dcb715a0b913481bf5f16d10ba41eb4991', '81332b59c7df1dbce50e902731b82be95d53574c735182b31c19899624f920a1', '0b30fdeacaf57f4c2c5fb2fb5e3308a5aae124564af8e27c25a494e3048831cd', 'fcb072334183fd1c3cdd0a273d478a8812274d6e4e40cc59cf214953d2321e42', '8a3a93d2b410b37b405d899254351971ab32702c10ded03bda86fcebe9994e78', '76c32bfce697a56a11a3b1dfbc8daf5f6549b7b13fe2f4f60acdccb20f9c17b5', '8cb4a8605ba1845a93684ed523e56047525718713d91caf1ad9649b9a6b2e386', '32d347f8f9562ba18331f6117d000de508adec54186e531c8820a47b29a778d3', 'cf9773d5d26705614d55219aad824d8c38c7d28a1779ab49a8998d0cebe36bbb', 'da429fda4a22b7b8a78535e2f26e04df7ddf453e4d8b5e0aa072e28593608095', '0a1a37293e00d55cb2690dbd0c24aa658a2e9e2a2adac3ef1a7924e55df85876', '7cdb3ef322f51dde3d93c7e32e2199ca757ce757875c8d7b1e8189ba8f67b055', 'a2c0fb47545c737773dcf2a23cc3c6266d2fe90da1a5d1ddd170777e2651bc33', 'f014a7a103e776ccc3c56c091bafbb9b3b699653adf6a3c8aaea292f81a7cf62', '808b073c50f904d95f56a6ba7e4f898d951dac00e58847783ef028be5cb732d8', 'dd92e6d7c71669e4bf6d1c69465b45551a7f37665b3c28a84706265d1bc58e42']}}\\nbostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50: done\\n\"" - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "res_participation[1]" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, { "cell_type": "markdown", "source": [ @@ -3514,17 +2686,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 50000\n", + "Number of tasks: 35000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/50000 [00:00 str:\n", @@ -3705,7 +2885,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 32, "outputs": [ { "data": { @@ -3713,7 +2893,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "88cd8e922def414996936a9894d779b4" + "model_id": "9e804af05307467faa2bce52e0ebcecd" } }, "metadata": {}, @@ -3726,30 +2906,25 @@ "\n", "Events\n", "\n", - "cyberlinks\n", - "\tQmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji -> Nickname\n", - "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", - "\tneuron: Name Subgraph Contract\n", - "\n", - "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", + "\treply contract: Name Subgraph Contract\n", "\treply contract: Avatar Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom12asenmdatefr74qhpvr3twur35xm8t63v6hz50\n", + "\tsender: bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 273502\n", - "Gas used: 386,208\n", - "Tx hash: 397994D783B8B06CFCD80DB336466FA3CBAD3C8192A9DC8590C2853A0534117A\n" + "\ttoken_id: 448\n", + "Gas used: 306,534\n", + "Tx hash: D8A57F98E6CBF87802C8DEBFB0F9F7A5CFADF987E92EF84A99360F3C88E3BE03\n" ] } ], @@ -3788,7 +2963,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 33, "outputs": [ { "data": { @@ -3796,7 +2971,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "97790a7a000e40a5ad187cbf07fb36aa" + "model_id": "a704092cbf3341088d6f6d803b7781ed" } }, "metadata": {}, @@ -3809,30 +2984,24 @@ "\n", "Events\n", "\n", - "cyberlinks\n", - "\tcyberhole -> Nickname\n", - "\tNickname -> cyberhole\n", - "\tneuron: Name Subgraph Contract\n", - "\n", - "\tcyberhole -> Avatar\n", - "\tAvatar -> cyberhole\n", - "\tneuron: Avatar Subgraph Contract\n", - "\n", - "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Name Subgraph Contract\n", + "\treply contract: Avatar Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom1h48dqhht7cfukuxusujqgeuzpt43jtg8rhe4fg\n", - "\ttoken_id: 273515\n", - "Gas used: 382,043\n", - "Tx hash: 5166979A21AF9222CEA51AC262101239CCEE2CF69F46CBBA346F4DF0A0B1A297\n" + "\tsender: bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s\n", + "\ttoken_id: 419\n", + "Gas used: 275,576\n", + "Tx hash: F972C65EFB8E00FBCD3AEEE6FC62FCD49CE398EC362A0B573A5989FC0C3F639A\n" ] } ], From e60f62c46c076481c2e50224d8dfdd9b655127c5 Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Mon, 2 May 2022 11:54:24 +0800 Subject: [PATCH 44/69] - Update load test after testnet restart --- .../create_passport_and_claim_job.py | 2 +- ..._and_passport_contracts_load_testing.ipynb | 5721 +++++++++++++---- 2 files changed, 4363 insertions(+), 1360 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py index f384d5b..37d5c0f 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -53,7 +53,7 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False log_file = f'temp/contract_release_execution_log_{index_number}.txt' \ if release_bool else f'temp/contract_participation_execution_log_{index_number}.txt' address_dict = {gift_contract_address: 'Gift Contract', - 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf': 'Passport Contract'} + 'bostrom18v47nqmhvejx3vc498pantg8vr435xa0rt6x0m6kzhp6yuqmcp8syatwkd': 'Passport Contract'} row = pd.read_csv(source_file_name).iloc[int(index_number) % 10_000] row['ethereum_proof'] = row['ethereum_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index 61b312f..4fc6c5a 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -46,8 +46,8 @@ "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 50_000\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 35_000\n", + "NUMBER_OF_PARTICIPANTS = 100_000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 50_000\n", "NUMBER_OF_THREADS = 100\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", @@ -55,7 +55,7 @@ "CLAIM_AMOUNT_LIST = [30_000] * NUMBER_OF_PARTICIPANTS\n", "PREFIXES = ['cosmos', 'osmo', 'terra']\n", "\n", - "INITIAL_BALANCE = str(7_000_000_000)\n", + "INITIAL_BALANCE = str(18_000_000_000)\n", "COEF_UP = str(13)\n", "COEF_DOWN = str(7)\n", "TARGET_CLAIM = str(20_000)\n", @@ -71,17 +71,17 @@ "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", "SUBGRAPH_CODE_ID = str(3)\n", - "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza'\n", - "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf'\n", - "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp'\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1qwlgtx52gsdu7dtp0cekka5zehdl0uj3fhp9acg325fvgs8jdzksa7wx60'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", "PASSPORT_CODE_ID = str(2)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf'\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom18v47nqmhvejx3vc498pantg8vr435xa0rt6x0m6kzhp6yuqmcp8syatwkd'\n", "\n", - "INIT_TREASURY_CONTRACT = False\n", + "INIT_TREASURY_CONTRACT = True\n", "TREASURY_CODE_ID = str(4)\n", - "TREASURY_CONTRACT_ADDRESS = 'bostrom18cszlvm6pze0x9sz32qnjq4vtd45xehqs8dq7cwy8yhq35wfnn3q9u647v'\n", + "TREASURY_CONTRACT_ADDRESS = 'bostrom1wkwy0xh89ksdgj9hr347dyd2dw7zesmtrue6kfzyml4vdtz6e5ws8fj6nu'\n", "\n", "INIT_GIFT_CONTRACT = True\n", "GIFT_CODE_ID = str(1)\n", @@ -116,17 +116,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 50000\n", + "Number of tasks: 100000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/50000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
030000john16510755980QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe0x4728b5d6240343f357b7e11863ad32492ebc76680x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzgenjoy wait anxiety recycle thrive evidence was...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70...0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf...{'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE...eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG...
130000john16510755981QmZpd2kCy2L32nutybeNyZa2U4V8MEVfG9t3xsHV8hi8oi0x8544acb35c255078dcfe5827bdf539f23fc4f3470xd08ff213baeee47add74b3620332e595f8edb5dc556f...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03scosmos1en9pu3xckqu8cj6qenw9x0xs02zfe8h96wru0hdry auto denial present oval marine opinion sl...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s...0x9225d7843f8bcdf7c4e969a69cba1ab9bb2e2f83ede8...{'pub_key': 'Aj7QPDdHomIP2DUH9eTnSfOon44xrMLIZ...eyJwdWJfa2V5IjoiQWo3UVBEZEhvbUlQMkRVSDllVG5TZk...
230000john16510755982QmaSExj3kqGgyNHDcS1MYi4RRWRRhiLTMQvJBVSV1pRysv0x9d265a500b932d1601478d50af8fa597b51077ed0x5d7d660a54591c323a836e162a9865a245b738c2d548...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spzcosmos1a2z98w5htp738l35vra8lcknztf292myns2rl9ship turn amused rule parrot current hold regr...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz...0xd4000eacac3facfc3366bc893bfdd7a0ea24288650e7...{'pub_key': 'Aw0oWw3gkVlNat5+055ePbrJhrj7LVZy0...eyJwdWJfa2V5IjoiQXcwb1d3M2drVmxOYXQ1KzA1NWVQYn...
330000john16510755983QmdkNrH37aHtjkqc34wWfNr69UvQXrsghmpRDb8N62RBcK0x0ccdb3913071a85ba7e325a728b35b7031a2f8410xe65d014bde708de4d4558e7c09b45b08e1d1f0f04fb5...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmnterra1a00xqte46sv80e386jxjen7htpzuk64sqg4n85side bread decline actor mandate hollow arena ...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn...0x159ee0c77d0a03074fd7fe418ec929d28d9919ca44ed...{'pub_key': 'Aw8kHHa+WGrKrX0aS3j4V3RP+Gzusj1b/...eyJwdWJfa2V5IjoiQXc4a0hIYStXR3JLclgwYVMzajRWM1...
430000john16510755984QmWDPSpPxJdVkefCQT7CDP1dGWMkcPdGUavCR9JBTZEdcu0xe31aa9aee81531fcc8b837653a4b565607fe37930xcc56f1eebcea455d20304a178b8d96cba6aba371bbfd...bostrom144x8pazv6ueln6wyv4ze6aq6q528mu0vnuy7ptterra144x8pazv6ueln6wyv4ze6aq6q528mu0vkt2davtext rival knock hire feature cabbage toilet v...bostrom144x8pazv6ueln6wyv4ze6aq6q528mu0vnuy7pt...0x286d0513c0301039babb77e31d091b8a7680917943aa...{'pub_key': 'AhGcw/spF88f7kZgMhHeFMRFE83QX5iD8...eyJwdWJfa2V5IjoiQWhHY3cvc3BGODhmN2taZ01oSGVGTV...
\n" + "text/plain": " amount nickname avatar \\\n0 30000 john16514110440 QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE7 \n1 30000 john16514110441 QmVWURubuV33SKYXtyLtT4MtN1pfPrukzT9tjR4vmBRVBd \n2 30000 john16514110442 QmXudghn9jWWjzzgizpTtzZ1kJLeCK7bdgRe5ANgS9dsLt \n3 30000 john16514110443 QmUCtjvizRdrdoF6e5VQRN5pgUB4D1wafwFzTsTjt2zPoY \n4 30000 john16514110444 QmddRuhgqujtgojjegXtZ37QA1KgH8PhqCmVPJxSfVSfPX \n\n ethereum_address \\\n0 0x3756069ce10d18b5d23db3295ec59f62909b4032 \n1 0xc70b2e789b42a6b3add29f8949b4ec8ebeb78aa9 \n2 0x22d6a3a23a348a5055caf5e9459b6b81a849c3d9 \n3 0xa88f6812e62e6dbae520c8cc9bf2fbe68418f7cf \n4 0x923fda130f266134410a244b826d72433822777d \n\n ethereum_private_key \\\n0 0xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3... \n1 0xbf851509658dd955365c2b62848a55842cd28937b792... \n2 0x989e2221d4dc219182aeb5d5f9ff124406759747db73... \n3 0xcd8696cdafd3388c6ca8a8062d3cf038dfca1129d559... \n4 0x83c14ac2ea6dd1fccec8ef74092bc9d20d1f018c115a... \n\n bostrom_address \\\n0 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 \n1 bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l \n2 bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a \n3 bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y \n4 bostrom178hq4ur7ywrvlsd4lmgaldp7d27dqj5h3u7fmz \n\n cosmos_address \\\n0 cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lquj \n1 terra1mvuczu56l9c3rsj889ysykumpg4s9v3xd6wfxc \n2 cosmos1yyx6wvgvr3deg70dvgsfwulgzurnz8kcdr8we6 \n3 cosmos1yhrmy9l027gsa342wwxmua0pfel2c24etgmzqr \n4 osmo178hq4ur7ywrvlsd4lmgaldp7d27dqj5h65e2nh \n\n cosmos_seed \\\n0 domain jacket harsh toast list evil champion s... \n1 net coin wealth creek lumber reduce catalog sl... \n2 shock pipe begin detect economy finger great u... \n3 air video reflect suggest own skate spray mapl... \n4 chase melt spread boss outdoor convince hundre... \n\n message \\\n0 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4... \n1 bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l... \n2 bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a... \n3 bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y... \n4 bostrom178hq4ur7ywrvlsd4lmgaldp7d27dqj5h3u7fmz... \n\n ethereum_message_signature \\\n0 0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9... \n1 0x97b409a700e4d11d7b5cadd764c67cc6399b868d93e2... \n2 0xcad3e647570e7f168aee49bbda543824c6dc6f47a06e... \n3 0x58b5e9de07036ab4e5f2f4b185d3f0a684aca66e4678... \n4 0xfacbb78d8c1be2246538fa7832c98eee6113ecd17655... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4... \n1 {'pub_key': 'A3nBxjlMaPLs6FP7eSIMG9ztk7w/EJABw... \n2 {'pub_key': 'A1VGj0IPB2PAI0ZW25CScr//U/jJkxlDA... \n3 {'pub_key': 'AlWQq+xr7W2FW77LivQdpCQ/G8zmRucoE... \n4 {'pub_key': 'AhVQjlyo7QhMi20ije0+S84RykSj76TG3... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC... \n1 eyJwdWJfa2V5IjoiQTNuQnhqbE1hUExzNkZQN2VTSU1HOX... \n2 eyJwdWJfa2V5IjoiQTFWR2owSVBCMlBBSTBaVzI1Q1Njci... \n3 eyJwdWJfa2V5IjoiQWxXUXEreHI3VzJGVzc3TGl2UWRwQ1... \n4 eyJwdWJfa2V5IjoiQWhWUWpseW83UWhNaTIwaWplMCtTOD... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
030000john16514110440QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE70x3756069ce10d18b5d23db3295ec59f62909b40320xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lqujdomain jacket harsh toast list evil champion s...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4...0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9...{'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4...eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC...
130000john16514110441QmVWURubuV33SKYXtyLtT4MtN1pfPrukzT9tjR4vmBRVBd0xc70b2e789b42a6b3add29f8949b4ec8ebeb78aa90xbf851509658dd955365c2b62848a55842cd28937b792...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66lterra1mvuczu56l9c3rsj889ysykumpg4s9v3xd6wfxcnet coin wealth creek lumber reduce catalog sl...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l...0x97b409a700e4d11d7b5cadd764c67cc6399b868d93e2...{'pub_key': 'A3nBxjlMaPLs6FP7eSIMG9ztk7w/EJABw...eyJwdWJfa2V5IjoiQTNuQnhqbE1hUExzNkZQN2VTSU1HOX...
230000john16514110442QmXudghn9jWWjzzgizpTtzZ1kJLeCK7bdgRe5ANgS9dsLt0x22d6a3a23a348a5055caf5e9459b6b81a849c3d90x989e2221d4dc219182aeb5d5f9ff124406759747db73...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8acosmos1yyx6wvgvr3deg70dvgsfwulgzurnz8kcdr8we6shock pipe begin detect economy finger great u...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a...0xcad3e647570e7f168aee49bbda543824c6dc6f47a06e...{'pub_key': 'A1VGj0IPB2PAI0ZW25CScr//U/jJkxlDA...eyJwdWJfa2V5IjoiQTFWR2owSVBCMlBBSTBaVzI1Q1Njci...
330000john16514110443QmUCtjvizRdrdoF6e5VQRN5pgUB4D1wafwFzTsTjt2zPoY0xa88f6812e62e6dbae520c8cc9bf2fbe68418f7cf0xcd8696cdafd3388c6ca8a8062d3cf038dfca1129d559...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037ycosmos1yhrmy9l027gsa342wwxmua0pfel2c24etgmzqrair video reflect suggest own skate spray mapl...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y...0x58b5e9de07036ab4e5f2f4b185d3f0a684aca66e4678...{'pub_key': 'AlWQq+xr7W2FW77LivQdpCQ/G8zmRucoE...eyJwdWJfa2V5IjoiQWxXUXEreHI3VzJGVzc3TGl2UWRwQ1...
430000john16514110444QmddRuhgqujtgojjegXtZ37QA1KgH8PhqCmVPJxSfVSfPX0x923fda130f266134410a244b826d72433822777d0x83c14ac2ea6dd1fccec8ef74092bc9d20d1f018c115a...bostrom178hq4ur7ywrvlsd4lmgaldp7d27dqj5h3u7fmzosmo178hq4ur7ywrvlsd4lmgaldp7d27dqj5h65e2nhchase melt spread boss outdoor convince hundre...bostrom178hq4ur7ywrvlsd4lmgaldp7d27dqj5h3u7fmz...0xfacbb78d8c1be2246538fa7832c98eee6113ecd17655...{'pub_key': 'AhVQjlyo7QhMi20ije0+S84RykSj76TG3...eyJwdWJfa2V5IjoiQWhWUWpseW83UWhNaTIwaWplMCtTOD...
\n
" }, "execution_count": 2, "metadata": {}, @@ -247,16 +247,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "{('root_testing_source_50000_addresses.json', 'temp/proofs_75.json', 75000, 76001), ('root_testing_source_50000_addresses.json', 'temp/proofs_8.json', 8000, 9001), ('root_testing_source_50000_addresses.json', 'temp/proofs_5.json', 5000, 6001), ('root_testing_source_50000_addresses.json', 'temp/proofs_37.json', 37000, 38001), ('root_testing_source_50000_addresses.json', 'temp/proofs_4.json', 4000, 5001), ('root_testing_source_50000_addresses.json', 'temp/proofs_17.json', 17000, 18001), ('root_testing_source_50000_addresses.json', 'temp/proofs_19.json', 19000, 20001), ('root_testing_source_50000_addresses.json', 'temp/proofs_82.json', 82000, 83001), ('root_testing_source_50000_addresses.json', 'temp/proofs_48.json', 48000, 49001), ('root_testing_source_50000_addresses.json', 'temp/proofs_95.json', 95000, 96001), ('root_testing_source_50000_addresses.json', 'temp/proofs_81.json', 81000, 82001), ('root_testing_source_50000_addresses.json', 'temp/proofs_23.json', 23000, 24001), ('root_testing_source_50000_addresses.json', 'temp/proofs_14.json', 14000, 15001), ('root_testing_source_50000_addresses.json', 'temp/proofs_73.json', 73000, 74001), ('root_testing_source_50000_addresses.json', 'temp/proofs_2.json', 2000, 3001), ('root_testing_source_50000_addresses.json', 'temp/proofs_90.json', 90000, 91001), ('root_testing_source_50000_addresses.json', 'temp/proofs_6.json', 6000, 7001), ('root_testing_source_50000_addresses.json', 'temp/proofs_78.json', 78000, 79001), ('root_testing_source_50000_addresses.json', 'temp/proofs_57.json', 57000, 58001), ('root_testing_source_50000_addresses.json', 'temp/proofs_16.json', 16000, 17001), ('root_testing_source_50000_addresses.json', 'temp/proofs_31.json', 31000, 32001), ('root_testing_source_50000_addresses.json', 'temp/proofs_46.json', 46000, 47001), ('root_testing_source_50000_addresses.json', 'temp/proofs_80.json', 80000, 81001), ('root_testing_source_50000_addresses.json', 'temp/proofs_76.json', 76000, 77001), ('root_testing_source_50000_addresses.json', 'temp/proofs_55.json', 55000, 56001), ('root_testing_source_50000_addresses.json', 'temp/proofs_63.json', 63000, 64001), ('root_testing_source_50000_addresses.json', 'temp/proofs_30.json', 30000, 31001), ('root_testing_source_50000_addresses.json', 'temp/proofs_20.json', 20000, 21001), ('root_testing_source_50000_addresses.json', 'temp/proofs_99.json', 99000, 100001), ('root_testing_source_50000_addresses.json', 'temp/proofs_9.json', 9000, 10001), ('root_testing_source_50000_addresses.json', 'temp/proofs_66.json', 66000, 67001), ('root_testing_source_50000_addresses.json', 'temp/proofs_60.json', 60000, 61001), ('root_testing_source_50000_addresses.json', 'temp/proofs_69.json', 69000, 70001), ('root_testing_source_50000_addresses.json', 'temp/proofs_50.json', 50000, 51001), ('root_testing_source_50000_addresses.json', 'temp/proofs_45.json', 45000, 46001), ('root_testing_source_50000_addresses.json', 'temp/proofs_52.json', 52000, 53001), ('root_testing_source_50000_addresses.json', 'temp/proofs_96.json', 96000, 97001), ('root_testing_source_50000_addresses.json', 'temp/proofs_22.json', 22000, 23001), ('root_testing_source_50000_addresses.json', 'temp/proofs_40.json', 40000, 41001), ('root_testing_source_50000_addresses.json', 'temp/proofs_24.json', 24000, 25001), ('root_testing_source_50000_addresses.json', 'temp/proofs_15.json', 15000, 16001), ('root_testing_source_50000_addresses.json', 'temp/proofs_59.json', 59000, 60001), ('root_testing_source_50000_addresses.json', 'temp/proofs_41.json', 41000, 42001), ('root_testing_source_50000_addresses.json', 'temp/proofs_54.json', 54000, 55001), ('root_testing_source_50000_addresses.json', 'temp/proofs_94.json', 94000, 95001), ('root_testing_source_50000_addresses.json', 'temp/proofs_29.json', 29000, 30001), ('root_testing_source_50000_addresses.json', 'temp/proofs_11.json', 11000, 12001), ('root_testing_source_50000_addresses.json', 'temp/proofs_39.json', 39000, 40001), ('root_testing_source_50000_addresses.json', 'temp/proofs_70.json', 70000, 71001), ('root_testing_source_50000_addresses.json', 'temp/proofs_43.json', 43000, 44001), ('root_testing_source_50000_addresses.json', 'temp/proofs_58.json', 58000, 59001), ('root_testing_source_50000_addresses.json', 'temp/proofs_18.json', 18000, 19001), ('root_testing_source_50000_addresses.json', 'temp/proofs_65.json', 65000, 66001), ('root_testing_source_50000_addresses.json', 'temp/proofs_35.json', 35000, 36001), ('root_testing_source_50000_addresses.json', 'temp/proofs_1.json', 1000, 2001), ('root_testing_source_50000_addresses.json', 'temp/proofs_12.json', 12000, 13001), ('root_testing_source_50000_addresses.json', 'temp/proofs_85.json', 85000, 86001), ('root_testing_source_50000_addresses.json', 'temp/proofs_61.json', 61000, 62001), ('root_testing_source_50000_addresses.json', 'temp/proofs_92.json', 92000, 93001), ('root_testing_source_50000_addresses.json', 'temp/proofs_10.json', 10000, 11001), ('root_testing_source_50000_addresses.json', 'temp/proofs_38.json', 38000, 39001), ('root_testing_source_50000_addresses.json', 'temp/proofs_91.json', 91000, 92001), ('root_testing_source_50000_addresses.json', 'temp/proofs_67.json', 67000, 68001), ('root_testing_source_50000_addresses.json', 'temp/proofs_47.json', 47000, 48001), ('root_testing_source_50000_addresses.json', 'temp/proofs_32.json', 32000, 33001), ('root_testing_source_50000_addresses.json', 'temp/proofs_74.json', 74000, 75001), ('root_testing_source_50000_addresses.json', 'temp/proofs_49.json', 49000, 50001), ('root_testing_source_50000_addresses.json', 'temp/proofs_83.json', 83000, 84001), ('root_testing_source_50000_addresses.json', 'temp/proofs_27.json', 27000, 28001), ('root_testing_source_50000_addresses.json', 'temp/proofs_62.json', 62000, 63001), ('root_testing_source_50000_addresses.json', 'temp/proofs_72.json', 72000, 73001), ('root_testing_source_50000_addresses.json', 'temp/proofs_71.json', 71000, 72001), ('root_testing_source_50000_addresses.json', 'temp/proofs_42.json', 42000, 43001), ('root_testing_source_50000_addresses.json', 'temp/proofs_68.json', 68000, 69001), ('root_testing_source_50000_addresses.json', 'temp/proofs_89.json', 89000, 90001), ('root_testing_source_50000_addresses.json', 'temp/proofs_98.json', 98000, 99001), ('root_testing_source_50000_addresses.json', 'temp/proofs_36.json', 36000, 37001), ('root_testing_source_50000_addresses.json', 'temp/proofs_34.json', 34000, 35001), ('root_testing_source_50000_addresses.json', 'temp/proofs_88.json', 88000, 89001), ('root_testing_source_50000_addresses.json', 'temp/proofs_56.json', 56000, 57001), ('root_testing_source_50000_addresses.json', 'temp/proofs_21.json', 21000, 22001), ('root_testing_source_50000_addresses.json', 'temp/proofs_26.json', 26000, 27001), ('root_testing_source_50000_addresses.json', 'temp/proofs_33.json', 33000, 34001), ('root_testing_source_50000_addresses.json', 'temp/proofs_79.json', 79000, 80001), ('root_testing_source_50000_addresses.json', 'temp/proofs_25.json', 25000, 26001), ('root_testing_source_50000_addresses.json', 'temp/proofs_84.json', 84000, 85001), ('root_testing_source_50000_addresses.json', 'temp/proofs_93.json', 93000, 94001), ('root_testing_source_50000_addresses.json', 'temp/proofs_13.json', 13000, 14001), ('root_testing_source_50000_addresses.json', 'temp/proofs_44.json', 44000, 45001), ('root_testing_source_50000_addresses.json', 'temp/proofs_87.json', 87000, 88001), ('root_testing_source_50000_addresses.json', 'temp/proofs_77.json', 77000, 78001), ('root_testing_source_50000_addresses.json', 'temp/proofs_7.json', 7000, 8001), ('root_testing_source_50000_addresses.json', 'temp/proofs_86.json', 86000, 87001), ('root_testing_source_50000_addresses.json', 'temp/proofs_97.json', 97000, 98001), ('root_testing_source_50000_addresses.json', 'temp/proofs_53.json', 53000, 54001), ('root_testing_source_50000_addresses.json', 'temp/proofs_64.json', 64000, 65001), ('root_testing_source_50000_addresses.json', 'temp/proofs_0.json', 0, 1001), ('root_testing_source_50000_addresses.json', 'temp/proofs_28.json', 28000, 29001), ('root_testing_source_50000_addresses.json', 'temp/proofs_3.json', 3000, 4001), ('root_testing_source_50000_addresses.json', 'temp/proofs_51.json', 51000, 52001)}\n" + "Number of addresses: 200000\n", + "Number of threads: 15\n", + "Bash size: 1000\n", + "Number of tasks: {('root_testing_source_100000_addresses.json', 'temp/proofs_13.json', 13000, 14001), ('root_testing_source_100000_addresses.json', 'temp/proofs_24.json', 24000, 25001), ('root_testing_source_100000_addresses.json', 'temp/proofs_101.json', 101000, 102001), ('root_testing_source_100000_addresses.json', 'temp/proofs_191.json', 191000, 192001), ('root_testing_source_100000_addresses.json', 'temp/proofs_23.json', 23000, 24001), ('root_testing_source_100000_addresses.json', 'temp/proofs_103.json', 103000, 104001), ('root_testing_source_100000_addresses.json', 'temp/proofs_162.json', 162000, 163001), ('root_testing_source_100000_addresses.json', 'temp/proofs_42.json', 42000, 43001), ('root_testing_source_100000_addresses.json', 'temp/proofs_189.json', 189000, 190001), ('root_testing_source_100000_addresses.json', 'temp/proofs_67.json', 67000, 68001), ('root_testing_source_100000_addresses.json', 'temp/proofs_11.json', 11000, 12001), ('root_testing_source_100000_addresses.json', 'temp/proofs_14.json', 14000, 15001), ('root_testing_source_100000_addresses.json', 'temp/proofs_198.json', 198000, 199001), ('root_testing_source_100000_addresses.json', 'temp/proofs_62.json', 62000, 63001), ('root_testing_source_100000_addresses.json', 'temp/proofs_25.json', 25000, 26001), ('root_testing_source_100000_addresses.json', 'temp/proofs_88.json', 88000, 89001), ('root_testing_source_100000_addresses.json', 'temp/proofs_2.json', 2000, 3001), ('root_testing_source_100000_addresses.json', 'temp/proofs_105.json', 105000, 106001), ('root_testing_source_100000_addresses.json', 'temp/proofs_116.json', 116000, 117001), ('root_testing_source_100000_addresses.json', 'temp/proofs_134.json', 134000, 135001), ('root_testing_source_100000_addresses.json', 'temp/proofs_117.json', 117000, 118001), ('root_testing_source_100000_addresses.json', 'temp/proofs_71.json', 71000, 72001), ('root_testing_source_100000_addresses.json', 'temp/proofs_160.json', 160000, 161001), ('root_testing_source_100000_addresses.json', 'temp/proofs_176.json', 176000, 177001), ('root_testing_source_100000_addresses.json', 'temp/proofs_54.json', 54000, 55001), ('root_testing_source_100000_addresses.json', 'temp/proofs_181.json', 181000, 182001), ('root_testing_source_100000_addresses.json', 'temp/proofs_16.json', 16000, 17001), ('root_testing_source_100000_addresses.json', 'temp/proofs_35.json', 35000, 36001), ('root_testing_source_100000_addresses.json', 'temp/proofs_19.json', 19000, 20001), ('root_testing_source_100000_addresses.json', 'temp/proofs_77.json', 77000, 78001), ('root_testing_source_100000_addresses.json', 'temp/proofs_126.json', 126000, 127001), ('root_testing_source_100000_addresses.json', 'temp/proofs_104.json', 104000, 105001), ('root_testing_source_100000_addresses.json', 'temp/proofs_158.json', 158000, 159001), ('root_testing_source_100000_addresses.json', 'temp/proofs_174.json', 174000, 175001), ('root_testing_source_100000_addresses.json', 'temp/proofs_120.json', 120000, 121001), ('root_testing_source_100000_addresses.json', 'temp/proofs_63.json', 63000, 64001), ('root_testing_source_100000_addresses.json', 'temp/proofs_49.json', 49000, 50001), ('root_testing_source_100000_addresses.json', 'temp/proofs_37.json', 37000, 38001), ('root_testing_source_100000_addresses.json', 'temp/proofs_136.json', 136000, 137001), ('root_testing_source_100000_addresses.json', 'temp/proofs_82.json', 82000, 83001), ('root_testing_source_100000_addresses.json', 'temp/proofs_157.json', 157000, 158001), ('root_testing_source_100000_addresses.json', 'temp/proofs_190.json', 190000, 191001), ('root_testing_source_100000_addresses.json', 'temp/proofs_177.json', 177000, 178001), ('root_testing_source_100000_addresses.json', 'temp/proofs_135.json', 135000, 136001), ('root_testing_source_100000_addresses.json', 'temp/proofs_27.json', 27000, 28001), ('root_testing_source_100000_addresses.json', 'temp/proofs_28.json', 28000, 29001), ('root_testing_source_100000_addresses.json', 'temp/proofs_141.json', 141000, 142001), ('root_testing_source_100000_addresses.json', 'temp/proofs_118.json', 118000, 119001), ('root_testing_source_100000_addresses.json', 'temp/proofs_65.json', 65000, 66001), ('root_testing_source_100000_addresses.json', 'temp/proofs_81.json', 81000, 82001), ('root_testing_source_100000_addresses.json', 'temp/proofs_112.json', 112000, 113001), ('root_testing_source_100000_addresses.json', 'temp/proofs_68.json', 68000, 69001), ('root_testing_source_100000_addresses.json', 'temp/proofs_90.json', 90000, 91001), ('root_testing_source_100000_addresses.json', 'temp/proofs_129.json', 129000, 130001), ('root_testing_source_100000_addresses.json', 'temp/proofs_108.json', 108000, 109001), ('root_testing_source_100000_addresses.json', 'temp/proofs_111.json', 111000, 112001), ('root_testing_source_100000_addresses.json', 'temp/proofs_12.json', 12000, 13001), ('root_testing_source_100000_addresses.json', 'temp/proofs_57.json', 57000, 58001), ('root_testing_source_100000_addresses.json', 'temp/proofs_83.json', 83000, 84001), ('root_testing_source_100000_addresses.json', 'temp/proofs_125.json', 125000, 126001), ('root_testing_source_100000_addresses.json', 'temp/proofs_138.json', 138000, 139001), ('root_testing_source_100000_addresses.json', 'temp/proofs_115.json', 115000, 116001), ('root_testing_source_100000_addresses.json', 'temp/proofs_102.json', 102000, 103001), ('root_testing_source_100000_addresses.json', 'temp/proofs_53.json', 53000, 54001), ('root_testing_source_100000_addresses.json', 'temp/proofs_91.json', 91000, 92001), ('root_testing_source_100000_addresses.json', 'temp/proofs_196.json', 196000, 197001), ('root_testing_source_100000_addresses.json', 'temp/proofs_94.json', 94000, 95001), ('root_testing_source_100000_addresses.json', 'temp/proofs_194.json', 194000, 195001), ('root_testing_source_100000_addresses.json', 'temp/proofs_89.json', 89000, 90001), ('root_testing_source_100000_addresses.json', 'temp/proofs_121.json', 121000, 122001), ('root_testing_source_100000_addresses.json', 'temp/proofs_151.json', 151000, 152001), ('root_testing_source_100000_addresses.json', 'temp/proofs_20.json', 20000, 21001), ('root_testing_source_100000_addresses.json', 'temp/proofs_130.json', 130000, 131001), ('root_testing_source_100000_addresses.json', 'temp/proofs_163.json', 163000, 164001), ('root_testing_source_100000_addresses.json', 'temp/proofs_169.json', 169000, 170001), ('root_testing_source_100000_addresses.json', 'temp/proofs_92.json', 92000, 93001), ('root_testing_source_100000_addresses.json', 'temp/proofs_168.json', 168000, 169001), ('root_testing_source_100000_addresses.json', 'temp/proofs_33.json', 33000, 34001), ('root_testing_source_100000_addresses.json', 'temp/proofs_78.json', 78000, 79001), ('root_testing_source_100000_addresses.json', 'temp/proofs_131.json', 131000, 132001), ('root_testing_source_100000_addresses.json', 'temp/proofs_122.json', 122000, 123001), ('root_testing_source_100000_addresses.json', 'temp/proofs_98.json', 98000, 99001), ('root_testing_source_100000_addresses.json', 'temp/proofs_113.json', 113000, 114001), ('root_testing_source_100000_addresses.json', 'temp/proofs_30.json', 30000, 31001), ('root_testing_source_100000_addresses.json', 'temp/proofs_21.json', 21000, 22001), ('root_testing_source_100000_addresses.json', 'temp/proofs_0.json', 0, 1001), ('root_testing_source_100000_addresses.json', 'temp/proofs_152.json', 152000, 153001), ('root_testing_source_100000_addresses.json', 'temp/proofs_8.json', 8000, 9001), ('root_testing_source_100000_addresses.json', 'temp/proofs_142.json', 142000, 143001), ('root_testing_source_100000_addresses.json', 'temp/proofs_34.json', 34000, 35001), ('root_testing_source_100000_addresses.json', 'temp/proofs_85.json', 85000, 86001), ('root_testing_source_100000_addresses.json', 'temp/proofs_84.json', 84000, 85001), ('root_testing_source_100000_addresses.json', 'temp/proofs_172.json', 172000, 173001), ('root_testing_source_100000_addresses.json', 'temp/proofs_80.json', 80000, 81001), ('root_testing_source_100000_addresses.json', 'temp/proofs_178.json', 178000, 179001), ('root_testing_source_100000_addresses.json', 'temp/proofs_164.json', 164000, 165001), ('root_testing_source_100000_addresses.json', 'temp/proofs_140.json', 140000, 141001), ('root_testing_source_100000_addresses.json', 'temp/proofs_114.json', 114000, 115001), ('root_testing_source_100000_addresses.json', 'temp/proofs_50.json', 50000, 51001), ('root_testing_source_100000_addresses.json', 'temp/proofs_182.json', 182000, 183001), ('root_testing_source_100000_addresses.json', 'temp/proofs_32.json', 32000, 33001), ('root_testing_source_100000_addresses.json', 'temp/proofs_76.json', 76000, 77001), ('root_testing_source_100000_addresses.json', 'temp/proofs_99.json', 99000, 100001), ('root_testing_source_100000_addresses.json', 'temp/proofs_171.json', 171000, 172001), ('root_testing_source_100000_addresses.json', 'temp/proofs_124.json', 124000, 125001), ('root_testing_source_100000_addresses.json', 'temp/proofs_167.json', 167000, 168001), ('root_testing_source_100000_addresses.json', 'temp/proofs_195.json', 195000, 196001), ('root_testing_source_100000_addresses.json', 'temp/proofs_31.json', 31000, 32001), ('root_testing_source_100000_addresses.json', 'temp/proofs_38.json', 38000, 39001), ('root_testing_source_100000_addresses.json', 'temp/proofs_55.json', 55000, 56001), ('root_testing_source_100000_addresses.json', 'temp/proofs_18.json', 18000, 19001), ('root_testing_source_100000_addresses.json', 'temp/proofs_69.json', 69000, 70001), ('root_testing_source_100000_addresses.json', 'temp/proofs_40.json', 40000, 41001), ('root_testing_source_100000_addresses.json', 'temp/proofs_87.json', 87000, 88001), ('root_testing_source_100000_addresses.json', 'temp/proofs_6.json', 6000, 7001), ('root_testing_source_100000_addresses.json', 'temp/proofs_17.json', 17000, 18001), ('root_testing_source_100000_addresses.json', 'temp/proofs_179.json', 179000, 180001), ('root_testing_source_100000_addresses.json', 'temp/proofs_15.json', 15000, 16001), ('root_testing_source_100000_addresses.json', 'temp/proofs_39.json', 39000, 40001), ('root_testing_source_100000_addresses.json', 'temp/proofs_66.json', 66000, 67001), ('root_testing_source_100000_addresses.json', 'temp/proofs_161.json', 161000, 162001), ('root_testing_source_100000_addresses.json', 'temp/proofs_75.json', 75000, 76001), ('root_testing_source_100000_addresses.json', 'temp/proofs_132.json', 132000, 133001), ('root_testing_source_100000_addresses.json', 'temp/proofs_95.json', 95000, 96001), ('root_testing_source_100000_addresses.json', 'temp/proofs_41.json', 41000, 42001), ('root_testing_source_100000_addresses.json', 'temp/proofs_58.json', 58000, 59001), ('root_testing_source_100000_addresses.json', 'temp/proofs_146.json', 146000, 147001), ('root_testing_source_100000_addresses.json', 'temp/proofs_185.json', 185000, 186001), ('root_testing_source_100000_addresses.json', 'temp/proofs_59.json', 59000, 60001), ('root_testing_source_100000_addresses.json', 'temp/proofs_154.json', 154000, 155001), ('root_testing_source_100000_addresses.json', 'temp/proofs_5.json', 5000, 6001), ('root_testing_source_100000_addresses.json', 'temp/proofs_137.json', 137000, 138001), ('root_testing_source_100000_addresses.json', 'temp/proofs_9.json', 9000, 10001), ('root_testing_source_100000_addresses.json', 'temp/proofs_123.json', 123000, 124001), ('root_testing_source_100000_addresses.json', 'temp/proofs_175.json', 175000, 176001), ('root_testing_source_100000_addresses.json', 'temp/proofs_173.json', 173000, 174001), ('root_testing_source_100000_addresses.json', 'temp/proofs_106.json', 106000, 107001), ('root_testing_source_100000_addresses.json', 'temp/proofs_119.json', 119000, 120001), ('root_testing_source_100000_addresses.json', 'temp/proofs_133.json', 133000, 134001), ('root_testing_source_100000_addresses.json', 'temp/proofs_48.json', 48000, 49001), ('root_testing_source_100000_addresses.json', 'temp/proofs_170.json', 170000, 171001), ('root_testing_source_100000_addresses.json', 'temp/proofs_150.json', 150000, 151001), ('root_testing_source_100000_addresses.json', 'temp/proofs_10.json', 10000, 11001), ('root_testing_source_100000_addresses.json', 'temp/proofs_100.json', 100000, 101001), ('root_testing_source_100000_addresses.json', 'temp/proofs_165.json', 165000, 166001), ('root_testing_source_100000_addresses.json', 'temp/proofs_60.json', 60000, 61001), ('root_testing_source_100000_addresses.json', 'temp/proofs_47.json', 47000, 48001), ('root_testing_source_100000_addresses.json', 'temp/proofs_46.json', 46000, 47001), ('root_testing_source_100000_addresses.json', 'temp/proofs_72.json', 72000, 73001), ('root_testing_source_100000_addresses.json', 'temp/proofs_197.json', 197000, 198001), ('root_testing_source_100000_addresses.json', 'temp/proofs_22.json', 22000, 23001), ('root_testing_source_100000_addresses.json', 'temp/proofs_153.json', 153000, 154001), ('root_testing_source_100000_addresses.json', 'temp/proofs_159.json', 159000, 160001), ('root_testing_source_100000_addresses.json', 'temp/proofs_107.json', 107000, 108001), ('root_testing_source_100000_addresses.json', 'temp/proofs_199.json', 199000, 200001), ('root_testing_source_100000_addresses.json', 'temp/proofs_61.json', 61000, 62001), ('root_testing_source_100000_addresses.json', 'temp/proofs_147.json', 147000, 148001), ('root_testing_source_100000_addresses.json', 'temp/proofs_3.json', 3000, 4001), ('root_testing_source_100000_addresses.json', 'temp/proofs_156.json', 156000, 157001), ('root_testing_source_100000_addresses.json', 'temp/proofs_192.json', 192000, 193001), ('root_testing_source_100000_addresses.json', 'temp/proofs_193.json', 193000, 194001), ('root_testing_source_100000_addresses.json', 'temp/proofs_97.json', 97000, 98001), ('root_testing_source_100000_addresses.json', 'temp/proofs_79.json', 79000, 80001), ('root_testing_source_100000_addresses.json', 'temp/proofs_139.json', 139000, 140001), ('root_testing_source_100000_addresses.json', 'temp/proofs_70.json', 70000, 71001), ('root_testing_source_100000_addresses.json', 'temp/proofs_145.json', 145000, 146001), ('root_testing_source_100000_addresses.json', 'temp/proofs_45.json', 45000, 46001), ('root_testing_source_100000_addresses.json', 'temp/proofs_73.json', 73000, 74001), ('root_testing_source_100000_addresses.json', 'temp/proofs_148.json', 148000, 149001), ('root_testing_source_100000_addresses.json', 'temp/proofs_7.json', 7000, 8001), ('root_testing_source_100000_addresses.json', 'temp/proofs_52.json', 52000, 53001), ('root_testing_source_100000_addresses.json', 'temp/proofs_93.json', 93000, 94001), ('root_testing_source_100000_addresses.json', 'temp/proofs_109.json', 109000, 110001), ('root_testing_source_100000_addresses.json', 'temp/proofs_143.json', 143000, 144001), ('root_testing_source_100000_addresses.json', 'temp/proofs_29.json', 29000, 30001), ('root_testing_source_100000_addresses.json', 'temp/proofs_144.json', 144000, 145001), ('root_testing_source_100000_addresses.json', 'temp/proofs_44.json', 44000, 45001), ('root_testing_source_100000_addresses.json', 'temp/proofs_155.json', 155000, 156001), ('root_testing_source_100000_addresses.json', 'temp/proofs_188.json', 188000, 189001), ('root_testing_source_100000_addresses.json', 'temp/proofs_1.json', 1000, 2001), ('root_testing_source_100000_addresses.json', 'temp/proofs_56.json', 56000, 57001), ('root_testing_source_100000_addresses.json', 'temp/proofs_64.json', 64000, 65001), ('root_testing_source_100000_addresses.json', 'temp/proofs_127.json', 127000, 128001), ('root_testing_source_100000_addresses.json', 'temp/proofs_183.json', 183000, 184001), ('root_testing_source_100000_addresses.json', 'temp/proofs_36.json', 36000, 37001), ('root_testing_source_100000_addresses.json', 'temp/proofs_186.json', 186000, 187001), ('root_testing_source_100000_addresses.json', 'temp/proofs_43.json', 43000, 44001), ('root_testing_source_100000_addresses.json', 'temp/proofs_166.json', 166000, 167001), ('root_testing_source_100000_addresses.json', 'temp/proofs_180.json', 180000, 181001), ('root_testing_source_100000_addresses.json', 'temp/proofs_74.json', 74000, 75001), ('root_testing_source_100000_addresses.json', 'temp/proofs_187.json', 187000, 188001), ('root_testing_source_100000_addresses.json', 'temp/proofs_86.json', 86000, 87001), ('root_testing_source_100000_addresses.json', 'temp/proofs_149.json', 149000, 150001), ('root_testing_source_100000_addresses.json', 'temp/proofs_4.json', 4000, 5001), ('root_testing_source_100000_addresses.json', 'temp/proofs_26.json', 26000, 27001), ('root_testing_source_100000_addresses.json', 'temp/proofs_96.json', 96000, 97001), ('root_testing_source_100000_addresses.json', 'temp/proofs_51.json', 51000, 52001), ('root_testing_source_100000_addresses.json', 'temp/proofs_128.json', 128000, 129001), ('root_testing_source_100000_addresses.json', 'temp/proofs_184.json', 184000, 185001), ('root_testing_source_100000_addresses.json', 'temp/proofs_110.json', 110000, 111001)}\n" ] }, { "data": { - "text/plain": " 0%| | 0/100 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
030000john16510755980QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe0x4728b5d6240343f357b7e11863ad32492ebc76680x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzgenjoy wait anxiety recycle thrive evidence was...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70...0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf...{'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE...eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG...[34b7a2e200e5c3f096bdc387bba1de12394b5bf22fbc6...[0c9f9a62d402bb94f072f4e0d3315facacdde304c170f...
130000john16510755980QmT3nshpKe2jDXsqYbWseoKLqNk5hkfSNkXfbegULUSWTe0x4728b5d6240343f357b7e11863ad32492ebc76680x6dca8d2894e3e4fcbb126639aba5334e5bc46ce9c50e...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70terra12al99ea87hnxq52jc577ulzmkn63vhzhwl3pzgenjoy wait anxiety recycle thrive evidence was...bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70...0xed64ce431d3729e95fe6cd7fd4c735a609807602cedf...{'pub_key': 'A+/lC0Nmk1Fbl2ImpY4Gsli81L4isAJYE...eyJwdWJfa2V5IjoiQSsvbEMwTm1rMUZibDJJbXBZNEdzbG...[34b7a2e200e5c3f096bdc387bba1de12394b5bf22fbc6...[0c9f9a62d402bb94f072f4e0d3315facacdde304c170f...
230000john16510755981QmZpd2kCy2L32nutybeNyZa2U4V8MEVfG9t3xsHV8hi8oi0x8544acb35c255078dcfe5827bdf539f23fc4f3470xd08ff213baeee47add74b3620332e595f8edb5dc556f...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03scosmos1en9pu3xckqu8cj6qenw9x0xs02zfe8h96wru0hdry auto denial present oval marine opinion sl...bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s...0x9225d7843f8bcdf7c4e969a69cba1ab9bb2e2f83ede8...{'pub_key': 'Aj7QPDdHomIP2DUH9eTnSfOon44xrMLIZ...eyJwdWJfa2V5IjoiQWo3UVBEZEhvbUlQMkRVSDllVG5TZk...[30f68c9d61928bcedeadb3b832f7a05564acf39862de9...[4327d418680f19edea0c09eb64a6856da55bee3733390...
330000john16510755982QmaSExj3kqGgyNHDcS1MYi4RRWRRhiLTMQvJBVSV1pRysv0x9d265a500b932d1601478d50af8fa597b51077ed0x5d7d660a54591c323a836e162a9865a245b738c2d548...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spzcosmos1a2z98w5htp738l35vra8lcknztf292myns2rl9ship turn amused rule parrot current hold regr...bostrom1a2z98w5htp738l35vra8lcknztf292mysr7spz...0xd4000eacac3facfc3366bc893bfdd7a0ea24288650e7...{'pub_key': 'Aw0oWw3gkVlNat5+055ePbrJhrj7LVZy0...eyJwdWJfa2V5IjoiQXcwb1d3M2drVmxOYXQ1KzA1NWVQYn...[288660d1d333ebb6696458bfa55d84ef1ef3d72ca60f3...[fd4f92e4df636bf36fa59bd8e58cb73db8f047c390fe8...
430000john16510755983QmdkNrH37aHtjkqc34wWfNr69UvQXrsghmpRDb8N62RBcK0x0ccdb3913071a85ba7e325a728b35b7031a2f8410xe65d014bde708de4d4558e7c09b45b08e1d1f0f04fb5...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmnterra1a00xqte46sv80e386jxjen7htpzuk64sqg4n85side bread decline actor mandate hollow arena ...bostrom1a00xqte46sv80e386jxjen7htpzuk64s9lmqmn...0x159ee0c77d0a03074fd7fe418ec929d28d9919ca44ed...{'pub_key': 'Aw8kHHa+WGrKrX0aS3j4V3RP+Gzusj1b/...eyJwdWJfa2V5IjoiQXc4a0hIYStXR3JLclgwYVMzajRWM1...[d1e1ef301abdeba9df2dd907e330b33160c8cb3e4925c...[176519937326fb3e1316b4beb5814163e26fdc9b864f7...
\n" - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "if CALCULATE_PROOFS:\n", - " roots = []\n", - " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", - " for task in tasks:\n", - " with open(task[1], 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - " roots.append(root_and_proof_json['merkle_root'])\n", - " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", - " assert roots == [roots[0]] * len(roots)\n", - " root = roots[0]\n", - "\n", - " cosmos_proofs_df = proofs_df[~proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", - " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", - "\n", - " claims_with_proofs_df = claims_df\\\n", - " .merge(\n", - " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", - " how='left',\n", - " on='ethereum_address')\\\n", - " .merge(\n", - " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", - " how='left',\n", - " on='cosmos_address')\n", - "\n", - " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", - "else:\n", - " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", - " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", - " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", - " with open('temp/proofs_1.json', 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - " root = root_and_proof_json['merkle_root']\n", - "claims_with_proofs_df.head()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 6, - "outputs": [], - "source": [ - "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", - " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "## Instantiate Contracts\n", - "### Instantiate SUBGRAPH Contracts" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 7, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Name subgraph contract address: bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza\n", - "Avatar subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", - "Proof subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n" - ] - } - ], - "source": [ - "if INIT_SUBGRAPH_CONTRACTS:\n", - " name_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test name subgraph')\n", - " avatar_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test avatar subgraph',\n", - " from_address=WALLET_ADDRESS)\n", - " proof_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test proof subgraph',\n", - " from_address=WALLET_ADDRESS)\n", - "else:\n", - " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", - " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", - " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", - "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", - " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", - " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Passport Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 8, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Passport contract address: bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf\n" - ] - } - ], - "source": [ - "if INIT_PASSPORT_CONTRACT:\n", - " passport_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", - " contract_code_id=PASSPORT_CODE_ID,\n", - " contract_label='test passport',\n", - " from_address=WALLET_ADDRESS)\n", - "else:\n", - " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", - "print(f'Passport contract address: {passport_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Set executor in the Subgraph Contracts" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 9, - "outputs": [], - "source": [ - "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", - " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", - " contract_address=subgraph_contract_address,\n", - " gas=600000,\n", - " display_data=display_data)\n", - "\n", - "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", - " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Treasury Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 60, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Treasury contract address: bostrom18cszlvm6pze0x9sz32qnjq4vtd45xehqs8dq7cwy8yhq35wfnn3q9u647v\n" - ] - } - ], - "source": [ - "if INIT_TREASURY_CONTRACT:\n", - " treasury_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"admins\": [\"{WALLET_ADDRESS}\"], \"mutable\": true}}''',\n", - " contract_code_id=TREASURY_CODE_ID,\n", - " amount=INITIAL_BALANCE,\n", - " contract_label='test treasury',\n", - " from_address=WALLET_ADDRESS,\n", - " display_data=False)\n", - "else:\n", - " treasury_contract_address = TREASURY_CONTRACT_ADDRESS\n", - "print(f'Treasury contract address: {treasury_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Gift Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 11, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract address: bostrom1kwdranvwf6vl2grh99layugwdnph6um2x0c0l8qyvrcgsjcykuhsjvtnl3\n" - ] - } - ], - "source": [ - "if INIT_GIFT_CONTRACT:\n", - " gift_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"treasury\":\"{treasury_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", - " contract_code_id=GIFT_CODE_ID,\n", - " contract_label='test gift',\n", - " from_address=WALLET_ADDRESS,\n", - " display_data=False)\n", - "else:\n", - " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", - "print(f'Gift contract address: {gift_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Initiate Class of Output Parsing" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 12, - "outputs": [], - "source": [ - "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", - " address_dict= {\n", - " gift_contract_address: 'Gift Contract',\n", - " passport_contract_address: 'Passport Contract',\n", - " treasury_contract_address: 'Treasury Contract',\n", - " WALLET_ADDRESS: 'Passport Owner Address',\n", - " name_subgraph_contract_address: 'Name Subgraph Contract',\n", - " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", - " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Set Allowance in Treasury contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 13, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Done in 51.64s.\n", "\n", - "Events\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_39.json --start_index 39000 --end_index 40001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.01s.\n", "\n", - "coin received\n", - "\treceiver: Treasury Contract\n", - "\tamount: 7000000000boot\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_178.json --start_index 178000 --end_index 179001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.98s.\n", "\n", - "coin spent\n", - "\tspender: Passport Owner Address\n", - "\tamount: 7000000000boot\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_94.json --start_index 94000 --end_index 95001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.31s.\n", "\n", - "message from bank bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0 /cosmos.bank.v1beta1.MsgMultiSend\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_99.json --start_index 99000 --end_index 100001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.67s.\n", "\n", - "transfer\n", - "\trecipient: Treasury Contract\n", - "\tamount: 7000000000boot\n", - "Gas used: 72,935\n", - "Tx hash: DB7D682C80C98487226020809543360F870D4334CA1A4E81092AD316A6E9D7E9\n" - ] - } - ], - "source": [ - "contract_utils.parse_contract_execution_json(\n", - " contract_utils.send_coins(\n", - " from_seed=WALLET_SEED,\n", - " to_addresses=[treasury_contract_address],\n", - " amounts=[INITIAL_BALANCE],\n", - " gas=min(100_000 + 25_000, int(20e6)),\n", - " display_data=DISPLAY_TX_EXECUTION))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 54, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_195.json --start_index 195000 --end_index 196001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.77s.\n", "\n", - "Events\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_92.json --start_index 92000 --end_index 93001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.15s.\n", "\n", - "execute\n", - "\texecute contract: Treasury Contract\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_69.json --start_index 69000 --end_index 70001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.58s.\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_17.json --start_index 17000 --end_index 18001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.95s.\n", "\n", - "wasm\n", - "\t_contract_address: Treasury Contract\n", - "\taction: increase_allowance\n", - "\towner: Passport Owner Address\n", - "\tspender: Gift Contract\n", - "\tdenomination: boot\n", - "\tamount: 7,000,000,000\n", - "Gas used: 135,616\n", - "Tx hash: 340EA372979FFB714A5ECD218685EC42EB8F5A81F19FD91C0590E8F12F295ED0\n" - ] - } - ], - "source": [ - "def set_allowance(amount: str = INITIAL_BALANCE, display_data: bool = False):\n", - " return contract_utils.execute_contract(\n", - " execute_msg={\"increase_allowance\": {\"spender\": gift_contract_address, \"amount\": {\"amount\": amount, \"denom\": 'boot'}}},\n", - " contract_address=treasury_contract_address,\n", - " mnemonic=WALLET_SEED,\n", - " gas=600000,\n", - " display_data=display_data)\n", - "\n", - "contract_utils.parse_contract_execution_json(\n", - " set_allowance(display_data=False))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Register Merkle Root" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 15, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_182.json --start_index 182000 --end_index 183001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.81s.\n", "\n", - "Events\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_8.json --start_index 8000 --end_index 9001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.78s.\n", "\n", - "execute\n", - "\texecute contract: Gift Contract\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_20.json --start_index 20000 --end_index 21001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.62s.\n", "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_194.json --start_index 194000 --end_index 195001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.03s.\n", "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: register_merkle_root\n", - "\tmerkle_root: a29db2dd9b82645fec8fe623533e7c1ede6c8a9cd549ff3d27d986d77c7358b4\n", - "Gas used: 130,997\n", - "Tx hash: 89BA6F6CB162C54FFA8CBC7E1260520C935DD91A5C285F3F064A4120551907AA\n" - ] - } - ], - "source": [ - "root_register_output = contract_utils.execute_contract(\n", - " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", - " mnemonic=WALLET_SEED,\n", - " contract_address=gift_contract_address)\n", - "contract_utils.parse_contract_execution_json(root_register_output)" + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_53.json --start_index 53000 --end_index 54001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.60s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_164.json --start_index 164000 --end_index 165001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.47s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_66.json --start_index 66000 --end_index 67001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.72s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_84.json --start_index 84000 --end_index 85001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.76s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_131.json --start_index 131000 --end_index 132001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.23s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_171.json --start_index 171000 --end_index 172001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.83s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_30.json --start_index 30000 --end_index 31001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.96s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_31.json --start_index 31000 --end_index 32001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.91s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_41.json --start_index 41000 --end_index 42001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.93s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_170.json --start_index 170000 --end_index 171001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.13s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_9.json --start_index 9000 --end_index 10001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.37s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_165.json --start_index 165000 --end_index 166001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.16s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_72.json --start_index 72000 --end_index 73001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.94s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_106.json --start_index 106000 --end_index 107001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.64s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_59.json --start_index 59000 --end_index 60001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.14s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_147.json --start_index 147000 --end_index 148001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.13s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_193.json --start_index 193000 --end_index 194001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.98s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_159.json --start_index 159000 --end_index 160001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.51s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_44.json --start_index 44000 --end_index 45001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.83s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_70.json --start_index 70000 --end_index 71001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.45s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_148.json --start_index 148000 --end_index 149001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.63s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_161.json --start_index 161000 --end_index 162001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 53.63s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_109.json --start_index 109000 --end_index 110001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 53.28s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_58.json --start_index 58000 --end_index 59001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.26s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_123.json --start_index 123000 --end_index 124001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.05s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_97.json --start_index 97000 --end_index 98001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.57s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_107.json --start_index 107000 --end_index 108001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.42s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_60.json --start_index 60000 --end_index 61001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.30s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_150.json --start_index 150000 --end_index 151001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.78s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_119.json --start_index 119000 --end_index 120001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.47s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_7.json --start_index 7000 --end_index 8001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.79s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_197.json --start_index 197000 --end_index 198001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.13s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_155.json --start_index 155000 --end_index 156001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.34s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_154.json --start_index 154000 --end_index 155001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.03s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_3.json --start_index 3000 --end_index 4001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.86s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_145.json --start_index 145000 --end_index 146001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.28s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_75.json --start_index 75000 --end_index 76001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.61s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_143.json --start_index 143000 --end_index 144001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.14s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_175.json --start_index 175000 --end_index 176001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.29s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_146.json --start_index 146000 --end_index 147001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.52s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_199.json --start_index 199000 --end_index 200001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.48s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_10.json --start_index 10000 --end_index 11001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.41s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_133.json --start_index 133000 --end_index 134001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.55s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_47.json --start_index 47000 --end_index 48001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.82s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_188.json --start_index 188000 --end_index 189001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.03s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_156.json --start_index 156000 --end_index 157001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.84s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_79.json --start_index 79000 --end_index 80001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.21s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_22.json --start_index 22000 --end_index 23001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.62s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_52.json --start_index 52000 --end_index 53001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.97s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_5.json --start_index 5000 --end_index 6001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.86s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_45.json --start_index 45000 --end_index 46001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.82s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_132.json --start_index 132000 --end_index 133001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.05s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_29.json --start_index 29000 --end_index 30001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.21s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_100.json --start_index 100000 --end_index 101001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.73s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_173.json --start_index 173000 --end_index 174001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.57s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_185.json --start_index 185000 --end_index 186001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.95s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_61.json --start_index 61000 --end_index 62001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.17s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_48.json --start_index 48000 --end_index 49001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.27s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_192.json --start_index 192000 --end_index 193001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.19s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_139.json --start_index 139000 --end_index 140001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.33s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_137.json --start_index 137000 --end_index 138001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.94s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_93.json --start_index 93000 --end_index 94001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.19s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_73.json --start_index 73000 --end_index 74001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.17s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_95.json --start_index 95000 --end_index 96001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 51.34s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_46.json --start_index 46000 --end_index 47001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.79s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_153.json --start_index 153000 --end_index 154001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 52.14s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_144.json --start_index 144000 --end_index 145001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 50.97s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_1.json --start_index 1000 --end_index 2001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 53.39s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_36.json --start_index 36000 --end_index 37001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 35.10s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_149.json --start_index 149000 --end_index 150001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 35.29s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_180.json --start_index 180000 --end_index 181001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 37.32s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_56.json --start_index 56000 --end_index 57001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 37.86s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_51.json --start_index 51000 --end_index 52001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 39.63s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_4.json --start_index 4000 --end_index 5001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 35.87s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_186.json --start_index 186000 --end_index 187001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 37.73s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_74.json --start_index 74000 --end_index 75001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 36.00s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_64.json --start_index 64000 --end_index 65001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 39.58s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_128.json --start_index 128000 --end_index 129001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 37.19s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_26.json --start_index 26000 --end_index 27001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 34.92s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_43.json --start_index 43000 --end_index 44001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 35.27s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_187.json --start_index 187000 --end_index 188001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 35.19s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_127.json --start_index 127000 --end_index 128001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 36.35s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_184.json --start_index 184000 --end_index 185001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 39.33s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_96.json --start_index 96000 --end_index 97001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 35.64s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_86.json --start_index 86000 --end_index 87001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 37.40s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_166.json --start_index 166000 --end_index 167001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 39.76s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_183.json --start_index 183000 --end_index 184001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 35.11s.\n", + "\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_110.json --start_index 110000 --end_index 111001\n", + "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Number of addresses in the Merkle tree: 1001\n", + "Done in 34.17s.\n", + "\n" + ] + } + ], + "source": [ + "NUMBER_OF_THREADS = 15\n", + "BASH_SIZE = 1000\n", + "\n", + "tasks = set(\n", + " (\n", + " (ROOT_SOURCE_FILE_NAME,\n", + " f'temp/proofs_{i}.json',\n", + " i * BASH_SIZE,\n", + " min(NUMBER_OF_PARTICIPANTS * 2 + 1, (i + 1) * BASH_SIZE + 1))\n", + " for i in range(ceil(2 * NUMBER_OF_PARTICIPANTS/BASH_SIZE))\n", + " )\n", + ")\n", + "if CALCULATE_PROOFS:\n", + " print(f'Number of addresses: {2 * NUMBER_OF_PARTICIPANTS}\\nNumber of threads: {NUMBER_OF_THREADS}\\nBash size: {BASH_SIZE}\\nNumber of tasks: {tasks}')\n", + " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(get_proofs, tqdm(tasks, total=len(tasks)))\n", + " assert res == [True] * len(res)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [ + { + "data": { + "text/plain": " amount nickname avatar \\\n0 30000 john16514110440 QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE7 \n1 30000 john16514110440 QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE7 \n2 30000 john16514110441 QmVWURubuV33SKYXtyLtT4MtN1pfPrukzT9tjR4vmBRVBd \n3 30000 john16514110442 QmXudghn9jWWjzzgizpTtzZ1kJLeCK7bdgRe5ANgS9dsLt \n4 30000 john16514110443 QmUCtjvizRdrdoF6e5VQRN5pgUB4D1wafwFzTsTjt2zPoY \n\n ethereum_address \\\n0 0x3756069ce10d18b5d23db3295ec59f62909b4032 \n1 0x3756069ce10d18b5d23db3295ec59f62909b4032 \n2 0xc70b2e789b42a6b3add29f8949b4ec8ebeb78aa9 \n3 0x22d6a3a23a348a5055caf5e9459b6b81a849c3d9 \n4 0xa88f6812e62e6dbae520c8cc9bf2fbe68418f7cf \n\n ethereum_private_key \\\n0 0xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3... \n1 0xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3... \n2 0xbf851509658dd955365c2b62848a55842cd28937b792... \n3 0x989e2221d4dc219182aeb5d5f9ff124406759747db73... \n4 0xcd8696cdafd3388c6ca8a8062d3cf038dfca1129d559... \n\n bostrom_address \\\n0 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 \n1 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 \n2 bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l \n3 bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a \n4 bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y \n\n cosmos_address \\\n0 cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lquj \n1 cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lquj \n2 terra1mvuczu56l9c3rsj889ysykumpg4s9v3xd6wfxc \n3 cosmos1yyx6wvgvr3deg70dvgsfwulgzurnz8kcdr8we6 \n4 cosmos1yhrmy9l027gsa342wwxmua0pfel2c24etgmzqr \n\n cosmos_seed \\\n0 domain jacket harsh toast list evil champion s... \n1 domain jacket harsh toast list evil champion s... \n2 net coin wealth creek lumber reduce catalog sl... \n3 shock pipe begin detect economy finger great u... \n4 air video reflect suggest own skate spray mapl... \n\n message \\\n0 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4... \n1 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4... \n2 bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l... \n3 bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a... \n4 bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y... \n\n ethereum_message_signature \\\n0 0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9... \n1 0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9... \n2 0x97b409a700e4d11d7b5cadd764c67cc6399b868d93e2... \n3 0xcad3e647570e7f168aee49bbda543824c6dc6f47a06e... \n4 0x58b5e9de07036ab4e5f2f4b185d3f0a684aca66e4678... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4... \n1 {'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4... \n2 {'pub_key': 'A3nBxjlMaPLs6FP7eSIMG9ztk7w/EJABw... \n3 {'pub_key': 'A1VGj0IPB2PAI0ZW25CScr//U/jJkxlDA... \n4 {'pub_key': 'AlWQq+xr7W2FW77LivQdpCQ/G8zmRucoE... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC... \n1 eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC... \n2 eyJwdWJfa2V5IjoiQTNuQnhqbE1hUExzNkZQN2VTSU1HOX... \n3 eyJwdWJfa2V5IjoiQTFWR2owSVBCMlBBSTBaVzI1Q1Njci... \n4 eyJwdWJfa2V5IjoiQWxXUXEreHI3VzJGVzc3TGl2UWRwQ1... \n\n ethereum_proof \\\n0 [aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7... \n1 [aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7... \n2 [e6510615b06bed677416e4eaf2766262a0c0ea6b5f69a... \n3 [eacf9cccca46c86697ff8c414e227c0289cd2596bbfe6... \n4 [e312e24f6ba1900bf48ad582159c77ff88a8048d00434... \n\n cosmos_proof \n0 [423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c... \n1 [423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c... \n2 [e7a25331b0a1a98a5bb2d516932e6ca104cc0e8d22643... \n3 [3fd71696db46abd392c10bd55ed9641d5819920f7cb5e... \n4 [2389fa1c8f9edc9c945c480bd244203a383cee8908b52... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
030000john16514110440QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE70x3756069ce10d18b5d23db3295ec59f62909b40320xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lqujdomain jacket harsh toast list evil champion s...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4...0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9...{'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4...eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC...[aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7...[423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c...
130000john16514110440QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE70x3756069ce10d18b5d23db3295ec59f62909b40320xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lqujdomain jacket harsh toast list evil champion s...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4...0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9...{'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4...eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC...[aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7...[423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c...
230000john16514110441QmVWURubuV33SKYXtyLtT4MtN1pfPrukzT9tjR4vmBRVBd0xc70b2e789b42a6b3add29f8949b4ec8ebeb78aa90xbf851509658dd955365c2b62848a55842cd28937b792...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66lterra1mvuczu56l9c3rsj889ysykumpg4s9v3xd6wfxcnet coin wealth creek lumber reduce catalog sl...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l...0x97b409a700e4d11d7b5cadd764c67cc6399b868d93e2...{'pub_key': 'A3nBxjlMaPLs6FP7eSIMG9ztk7w/EJABw...eyJwdWJfa2V5IjoiQTNuQnhqbE1hUExzNkZQN2VTSU1HOX...[e6510615b06bed677416e4eaf2766262a0c0ea6b5f69a...[e7a25331b0a1a98a5bb2d516932e6ca104cc0e8d22643...
330000john16514110442QmXudghn9jWWjzzgizpTtzZ1kJLeCK7bdgRe5ANgS9dsLt0x22d6a3a23a348a5055caf5e9459b6b81a849c3d90x989e2221d4dc219182aeb5d5f9ff124406759747db73...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8acosmos1yyx6wvgvr3deg70dvgsfwulgzurnz8kcdr8we6shock pipe begin detect economy finger great u...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a...0xcad3e647570e7f168aee49bbda543824c6dc6f47a06e...{'pub_key': 'A1VGj0IPB2PAI0ZW25CScr//U/jJkxlDA...eyJwdWJfa2V5IjoiQTFWR2owSVBCMlBBSTBaVzI1Q1Njci...[eacf9cccca46c86697ff8c414e227c0289cd2596bbfe6...[3fd71696db46abd392c10bd55ed9641d5819920f7cb5e...
430000john16514110443QmUCtjvizRdrdoF6e5VQRN5pgUB4D1wafwFzTsTjt2zPoY0xa88f6812e62e6dbae520c8cc9bf2fbe68418f7cf0xcd8696cdafd3388c6ca8a8062d3cf038dfca1129d559...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037ycosmos1yhrmy9l027gsa342wwxmua0pfel2c24etgmzqrair video reflect suggest own skate spray mapl...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y...0x58b5e9de07036ab4e5f2f4b185d3f0a684aca66e4678...{'pub_key': 'AlWQq+xr7W2FW77LivQdpCQ/G8zmRucoE...eyJwdWJfa2V5IjoiQWxXUXEreHI3VzJGVzc3TGl2UWRwQ1...[e312e24f6ba1900bf48ad582159c77ff88a8048d00434...[2389fa1c8f9edc9c945c480bd244203a383cee8908b52...
\n
" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if CALCULATE_PROOFS:\n", + " roots = []\n", + " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + " for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", + " assert roots == [roots[0]] * len(roots)\n", + " root = roots[0]\n", + "\n", + " cosmos_proofs_df = proofs_df[~proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + "\n", + " claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='left',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='left',\n", + " on='cosmos_address')\n", + "\n", + " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", + "else:\n", + " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", + " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " with open('temp/proofs_1.json', 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " root = root_and_proof_json['merkle_root']\n", + "claims_with_proofs_df.head()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [ + "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", + " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", + "Avatar subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n", + "Proof subgraph contract address: bostrom1qwlgtx52gsdu7dtp0cekka5zehdl0uj3fhp9acg325fvgs8jdzksa7wx60\n" + ] + } + ], + "source": [ + "if INIT_SUBGRAPH_CONTRACTS:\n", + " name_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test name subgraph')\n", + " avatar_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test avatar subgraph',\n", + " from_address=WALLET_ADDRESS)\n", + " proof_subgraph_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", + " contract_code_id=SUBGRAPH_CODE_ID,\n", + " contract_label='test proof subgraph',\n", + " from_address=WALLET_ADDRESS)\n", + "else:\n", + " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", + " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", + " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", + "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", + " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", + " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Passport Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passport contract address: bostrom18v47nqmhvejx3vc498pantg8vr435xa0rt6x0m6kzhp6yuqmcp8syatwkd\n" + ] + } + ], + "source": [ + "if INIT_PASSPORT_CONTRACT:\n", + " passport_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", + " contract_code_id=PASSPORT_CODE_ID,\n", + " contract_label='test passport',\n", + " from_address=WALLET_ADDRESS)\n", + "else:\n", + " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", + "print(f'Passport contract address: {passport_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set executor in the Subgraph Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 9, + "outputs": [], + "source": [ + "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", + " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", + " contract_address=subgraph_contract_address,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", + " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", + " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Treasury Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Treasury contract address: bostrom1xsmqvl8lqr2uwl50aetu0572rss9hrza5kddpfj9ky3jq80fv2tssevu8p\n" + ] + } + ], + "source": [ + "if INIT_TREASURY_CONTRACT:\n", + " treasury_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"admins\": [\"{WALLET_ADDRESS}\"], \"mutable\": true}}''',\n", + " contract_code_id=TREASURY_CODE_ID,\n", + " amount=INITIAL_BALANCE,\n", + " contract_label='test treasury',\n", + " from_address=WALLET_ADDRESS,\n", + " display_data=False)\n", + "else:\n", + " treasury_contract_address = TREASURY_CONTRACT_ADDRESS\n", + "print(f'Treasury contract address: {treasury_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Instantiate Gift Contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gift contract address: bostrom14rse3e7rkc3qt7drmlulwlkrlzqvh7hv277zv05kyfuwl74udx5sugs6cp\n" + ] + } + ], + "source": [ + "if INIT_GIFT_CONTRACT:\n", + " gift_contract_address = \\\n", + " instantiate_contract(\n", + " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"treasury\":\"{treasury_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", + " contract_code_id=GIFT_CODE_ID,\n", + " contract_label='test gift',\n", + " from_address=WALLET_ADDRESS,\n", + " display_data=False)\n", + "else:\n", + " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", + "print(f'Gift contract address: {gift_contract_address}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Initiate Class of Output Parsing" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 12, + "outputs": [], + "source": [ + "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", + " address_dict= {\n", + " gift_contract_address: 'Gift Contract',\n", + " passport_contract_address: 'Passport Contract',\n", + " treasury_contract_address: 'Treasury Contract',\n", + " WALLET_ADDRESS: 'Passport Owner Address',\n", + " name_subgraph_contract_address: 'Name Subgraph Contract',\n", + " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", + " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Set Allowance in Treasury contract" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "coin received\n", + "\treceiver: Treasury Contract\n", + "\tamount: 18000000000boot\n", + "\n", + "coin spent\n", + "\tspender: Passport Owner Address\n", + "\tamount: 18000000000boot\n", + "\n", + "message from bank bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0 /cosmos.bank.v1beta1.MsgMultiSend\n", + "\n", + "transfer\n", + "\trecipient: Treasury Contract\n", + "\tamount: 18000000000boot\n", + "Gas used: 62,845\n", + "Tx hash: F1CFA2CD18343F891971826C2CD4A702C7C8CFD1B5E7B4FFF3B5B017A7F7A2F0\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(\n", + " contract_utils.send_coins(\n", + " from_seed=WALLET_SEED,\n", + " to_addresses=[treasury_contract_address],\n", + " amounts=[INITIAL_BALANCE],\n", + " gas=min(100_000 + 25_000, int(20e6)),\n", + " display_data=DISPLAY_TX_EXECUTION))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 14, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Treasury Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Treasury Contract\n", + "\taction: increase_allowance\n", + "\towner: Passport Owner Address\n", + "\tspender: Gift Contract\n", + "\tdenomination: boot\n", + "\tamount: 18,000,000,000\n", + "Gas used: 125,559\n", + "Tx hash: 9E75ECAB2CE7C193A95EE7802C722F0B058A6AC1152E9D36E5020FD50264D5C6\n" + ] + } + ], + "source": [ + "def set_allowance(amount: str = INITIAL_BALANCE, display_data: bool = False):\n", + " return contract_utils.execute_contract(\n", + " execute_msg={\"increase_allowance\": {\"spender\": gift_contract_address, \"amount\": {\"amount\": amount, \"denom\": 'boot'}}},\n", + " contract_address=treasury_contract_address,\n", + " mnemonic=WALLET_SEED,\n", + " gas=600000,\n", + " display_data=display_data)\n", + "\n", + "contract_utils.parse_contract_execution_json(\n", + " set_allowance(display_data=False))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Register Merkle Root" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 15, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\n", + "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: register_merkle_root\n", + "\tmerkle_root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", + "Gas used: 121,440\n", + "Tx hash: DF923569FD8ADB67237A9171F7C83DDDB54FCC0A463CC8FBD4230AC65B713E70\n" + ] + } + ], + "source": [ + "root_register_output = contract_utils.execute_contract(\n", + " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", + " mnemonic=WALLET_SEED,\n", + " contract_address=gift_contract_address)\n", + "contract_utils.parse_contract_execution_json(root_register_output)" ], "metadata": { "collapsed": false, @@ -1414,8 +2017,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom1kwdranvwf6vl2grh99layugwdnph6um2x0c0l8qyvrcgsjcykuhsjvtnl3\n", - "{'data': {'merkle_root': 'a29db2dd9b82645fec8fe623533e7c1ede6c8a9cd549ff3d27d986d77c7358b4'}}\n" + "Gift contract bostrom14rse3e7rkc3qt7drmlulwlkrlzqvh7hv277zv05kyfuwl74udx5sugs6cp\n", + "{'data': {'merkle_root': '41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c'}}\n" ] } ], @@ -1459,11 +2062,11 @@ "outputs": [ { "data": { - "text/plain": " 0%| | 0/101 [00:00 str:\n", @@ -2885,7 +5888,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 30, "outputs": [ { "data": { @@ -2893,7 +5896,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "9e804af05307467faa2bce52e0ebcecd" + "model_id": "0922ab6700ad45e6b5c7bcdbb7c796aa" } }, "metadata": {}, @@ -2911,7 +5914,7 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Name Subgraph Contract\n", @@ -2920,11 +5923,11 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom12al99ea87hnxq52jc577ulzmkn63vhzhtglj70\n", + "\tsender: bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 448\n", - "Gas used: 306,534\n", - "Tx hash: D8A57F98E6CBF87802C8DEBFB0F9F7A5CFADF987E92EF84A99360F3C88E3BE03\n" + "\ttoken_id: 61\n", + "Gas used: 306,332\n", + "Tx hash: 3F84A09B27A7A98A389EED1D231C575DEF8B64DED26FFC6B03852177363E36A6\n" ] } ], @@ -2963,7 +5966,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 31, "outputs": [ { "data": { @@ -2971,7 +5974,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "a704092cbf3341088d6f6d803b7781ed" + "model_id": "0e29f67d923846149becbe50157a183b" } }, "metadata": {}, @@ -2989,7 +5992,7 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Name Subgraph Contract\n", @@ -2998,10 +6001,10 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom1en9pu3xckqu8cj6qenw9x0xs02zfe8h9eah03s\n", - "\ttoken_id: 419\n", - "Gas used: 275,576\n", - "Tx hash: F972C65EFB8E00FBCD3AEEE6FC62FCD49CE398EC362A0B573A5989FC0C3F639A\n" + "\tsender: bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l\n", + "\ttoken_id: 76\n", + "Gas used: 275,513\n", + "Tx hash: F5248DF2DCF529A59B67C3533ECBBDA32F19AD473ECB97CE8AA4DB27BBF723A9\n" ] } ], From ee09c55898c7bd04f5201f8fa504330aff5cf7a4 Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Fri, 6 May 2022 16:55:07 +0800 Subject: [PATCH 45/69] - Update load test after testnet restart --- .../create_passport_and_claim_job.py | 2 +- ..._and_passport_contracts_load_testing.ipynb | 5286 ++++------------- 2 files changed, 1142 insertions(+), 4146 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py index 37d5c0f..f384d5b 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -53,7 +53,7 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False log_file = f'temp/contract_release_execution_log_{index_number}.txt' \ if release_bool else f'temp/contract_participation_execution_log_{index_number}.txt' address_dict = {gift_contract_address: 'Gift Contract', - 'bostrom18v47nqmhvejx3vc498pantg8vr435xa0rt6x0m6kzhp6yuqmcp8syatwkd': 'Passport Contract'} + 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf': 'Passport Contract'} row = pd.read_csv(source_file_name).iloc[int(index_number) % 10_000] row['ethereum_proof'] = row['ethereum_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index 4fc6c5a..a190092 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -31,7 +31,6 @@ "from eth_account.messages import encode_defunct\n", "import json\n", "import random\n", - "from pprint import pprint\n", "from time import time\n", "import ipfshttpclient\n", "from tqdm.notebook import tqdm\n", @@ -39,27 +38,26 @@ "from multiprocess import Pool\n", "from math import ceil\n", "from dotenv import dotenv_values\n", - "from IPython.display import display, HTML\n", "\n", "from contract_utils import execute_bash, instantiate_contract, execute_contract_bash, query_contract, get_ipfs_cid_from_str, get_proofs, ContractUtils\n", "\n", "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 100_000\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 50_000\n", + "NUMBER_OF_PARTICIPANTS = 200_000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 100_000\n", + "INITIAL_BALANCE = str(55_000_000_000)\n", + "COEF_UP = str(13)\n", + "COEF_DOWN = str(7)\n", + "TARGET_CLAIM = str(20_000)\n", + "\n", "NUMBER_OF_THREADS = 100\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [30_000] * NUMBER_OF_PARTICIPANTS\n", + "CLAIM_AMOUNT_LIST = [int(round(20_000 * random.random(), -3)) + 20_000 for _ in range(NUMBER_OF_PARTICIPANTS)]\n", "PREFIXES = ['cosmos', 'osmo', 'terra']\n", "\n", - "INITIAL_BALANCE = str(18_000_000_000)\n", - "COEF_UP = str(13)\n", - "COEF_DOWN = str(7)\n", - "TARGET_CLAIM = str(20_000)\n", - "\n", "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", "WALLET_SEED = dotenv_values('.env')['WALLET_SEED']\n", "PYTHON_PATH = dotenv_values('.env')['PYTHON_PATH']\n", @@ -71,17 +69,17 @@ "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", "SUBGRAPH_CODE_ID = str(3)\n", - "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf'\n", - "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp'\n", - "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1qwlgtx52gsdu7dtp0cekka5zehdl0uj3fhp9acg325fvgs8jdzksa7wx60'\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", "PASSPORT_CODE_ID = str(2)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom18v47nqmhvejx3vc498pantg8vr435xa0rt6x0m6kzhp6yuqmcp8syatwkd'\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf'\n", "\n", "INIT_TREASURY_CONTRACT = True\n", "TREASURY_CODE_ID = str(4)\n", - "TREASURY_CONTRACT_ADDRESS = 'bostrom1wkwy0xh89ksdgj9hr347dyd2dw7zesmtrue6kfzyml4vdtz6e5ws8fj6nu'\n", + "TREASURY_CONTRACT_ADDRESS = 'bostrom18cszlvm6pze0x9sz32qnjq4vtd45xehqs8dq7cwy8yhq35wfnn3q9u647v'\n", "\n", "INIT_GIFT_CONTRACT = True\n", "GIFT_CODE_ID = str(1)\n", @@ -116,17 +114,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 100000\n", + "Number of tasks: 200000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/100000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
030000john16514110440QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE70x3756069ce10d18b5d23db3295ec59f62909b40320xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lqujdomain jacket harsh toast list evil champion s...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4...0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9...{'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4...eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC...
130000john16514110441QmVWURubuV33SKYXtyLtT4MtN1pfPrukzT9tjR4vmBRVBd0xc70b2e789b42a6b3add29f8949b4ec8ebeb78aa90xbf851509658dd955365c2b62848a55842cd28937b792...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66lterra1mvuczu56l9c3rsj889ysykumpg4s9v3xd6wfxcnet coin wealth creek lumber reduce catalog sl...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l...0x97b409a700e4d11d7b5cadd764c67cc6399b868d93e2...{'pub_key': 'A3nBxjlMaPLs6FP7eSIMG9ztk7w/EJABw...eyJwdWJfa2V5IjoiQTNuQnhqbE1hUExzNkZQN2VTSU1HOX...
230000john16514110442QmXudghn9jWWjzzgizpTtzZ1kJLeCK7bdgRe5ANgS9dsLt0x22d6a3a23a348a5055caf5e9459b6b81a849c3d90x989e2221d4dc219182aeb5d5f9ff124406759747db73...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8acosmos1yyx6wvgvr3deg70dvgsfwulgzurnz8kcdr8we6shock pipe begin detect economy finger great u...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a...0xcad3e647570e7f168aee49bbda543824c6dc6f47a06e...{'pub_key': 'A1VGj0IPB2PAI0ZW25CScr//U/jJkxlDA...eyJwdWJfa2V5IjoiQTFWR2owSVBCMlBBSTBaVzI1Q1Njci...
330000john16514110443QmUCtjvizRdrdoF6e5VQRN5pgUB4D1wafwFzTsTjt2zPoY0xa88f6812e62e6dbae520c8cc9bf2fbe68418f7cf0xcd8696cdafd3388c6ca8a8062d3cf038dfca1129d559...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037ycosmos1yhrmy9l027gsa342wwxmua0pfel2c24etgmzqrair video reflect suggest own skate spray mapl...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y...0x58b5e9de07036ab4e5f2f4b185d3f0a684aca66e4678...{'pub_key': 'AlWQq+xr7W2FW77LivQdpCQ/G8zmRucoE...eyJwdWJfa2V5IjoiQWxXUXEreHI3VzJGVzc3TGl2UWRwQ1...
430000john16514110444QmddRuhgqujtgojjegXtZ37QA1KgH8PhqCmVPJxSfVSfPX0x923fda130f266134410a244b826d72433822777d0x83c14ac2ea6dd1fccec8ef74092bc9d20d1f018c115a...bostrom178hq4ur7ywrvlsd4lmgaldp7d27dqj5h3u7fmzosmo178hq4ur7ywrvlsd4lmgaldp7d27dqj5h65e2nhchase melt spread boss outdoor convince hundre...bostrom178hq4ur7ywrvlsd4lmgaldp7d27dqj5h3u7fmz...0xfacbb78d8c1be2246538fa7832c98eee6113ecd17655...{'pub_key': 'AhVQjlyo7QhMi20ije0+S84RykSj76TG3...eyJwdWJfa2V5IjoiQWhWUWpseW83UWhNaTIwaWplMCtTOD...
\n" + "text/plain": " amount nickname avatar \\\n0 33000 john16517597490 Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF \n1 36000 john16517597491 QmPwSc85Jmiw4mTS4esQNnPRwHgiXDFSVqPX7Dquv67L61 \n2 26000 john16517597492 QmWdMd8DxpakrEidFnKqFgZwSNcBuVYVYMzvKNE82C7ZQw \n3 31000 john16517597493 QmaEcQYeQ6TzsoFmF54MU6p3RmUv22zfzv5jNhdRPDcV3g \n4 35000 john16517597494 QmUbL8BAoJokFQsZg8iycc6rGnAvjNhP5JMaDHjaTzm4bb \n\n ethereum_address \\\n0 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb \n1 0xd4401c790797baff16eb3d65502dd8cb6758ddb5 \n2 0xc834f631039eba3e7fede0b3bee5f7b3aabcdc1f \n3 0x9a2fcf7df51f24a72631694ba64745cbc511d4d3 \n4 0xa5528df7d1b90814092ce474869d37cd60a5fdd3 \n\n ethereum_private_key \\\n0 0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530... \n1 0x7271c13a0847eecb082b5efc35987ff972b944d084b1... \n2 0xf3a8658346c3888bdc236ccdd07532996eebbd299fa5... \n3 0x683ab3cc400219f889b0ff07a8157d8065f856df6019... \n4 0xdcfb6e6b6e394536eb037666d5f67a1b10274d620f6a... \n\n bostrom_address \\\n0 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z \n1 bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5 \n2 bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9 \n3 bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6 \n4 bostrom1463yk59gkwksn574mrye5v26qrqrqvk7mpsumm \n\n cosmos_address \\\n0 terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9 \n1 osmo1uxa2sxtv7npaj6863fez5ccv2qfwszf29kft4p \n2 terra12rwwttemkn7w3xanpqtu05euzn2nsjzfn3rj9z \n3 terra15xdumxh2xyx5trteh689pkjkf3vkc0eqhxq4ra \n4 osmo1463yk59gkwksn574mrye5v26qrqrqvk7sfhlnw \n\n cosmos_seed \\\n0 wheel saddle egg habit ribbon chase pilot focu... \n1 math escape slow grab honey ginger cage canoe ... \n2 kangaroo sport welcome kangaroo digital retrea... \n3 poverty glass bid buyer pass morning vanish ri... \n4 inhale sugar segment ethics number blouse dune... \n\n message \\\n0 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z... \n1 bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5... \n2 bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9... \n3 bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6... \n4 bostrom1463yk59gkwksn574mrye5v26qrqrqvk7mpsumm... \n\n ethereum_message_signature \\\n0 0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50... \n1 0x98f805ceef6fbc3e185beb0bc25e03070da3997aad9f... \n2 0xc611b87310ee2d1a2cf66626afeb0c05cd9361db397f... \n3 0x64b80d0ae3e755e5ff94ac37f3d04c6254a104a6c178... \n4 0x18201d2d41ebf13ed6ec661468db58e1f008945cc79e... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028... \n1 {'pub_key': 'AlgnuX3+tvoZEEbXKTuGpW/mQbSNBmoxB... \n2 {'pub_key': 'AkSMmBe8/3Z/x3FQDHdA0HmPC6gSS/VqI... \n3 {'pub_key': 'Aqn4lUPTAD2ZiH2ncmLQBvUhxlnaxOmj+... \n4 {'pub_key': 'Ap41abfiY1qCYZSA+XKU2KhiPW322p0jj... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX... \n1 eyJwdWJfa2V5IjoiQWxnbnVYMyt0dm9aRUViWEtUdUdwVy... \n2 eyJwdWJfa2V5IjoiQWtTTW1CZTgvM1oveDNGUURIZEEwSG... \n3 eyJwdWJfa2V5IjoiQXFuNGxVUFRBRDJaaUgybmNtTFFCdl... \n4 eyJwdWJfa2V5IjoiQXA0MWFiZmlZMXFDWVpTQStYS1UyS2... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
033000john16517597490Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF0xb13349fc01611fb3d5eaa220ce20d7935503bfdb0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59zterra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9wheel saddle egg habit ribbon chase pilot focu...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z...0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50...{'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028...eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX...
136000john16517597491QmPwSc85Jmiw4mTS4esQNnPRwHgiXDFSVqPX7Dquv67L610xd4401c790797baff16eb3d65502dd8cb6758ddb50x7271c13a0847eecb082b5efc35987ff972b944d084b1...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5osmo1uxa2sxtv7npaj6863fez5ccv2qfwszf29kft4pmath escape slow grab honey ginger cage canoe ...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5...0x98f805ceef6fbc3e185beb0bc25e03070da3997aad9f...{'pub_key': 'AlgnuX3+tvoZEEbXKTuGpW/mQbSNBmoxB...eyJwdWJfa2V5IjoiQWxnbnVYMyt0dm9aRUViWEtUdUdwVy...
226000john16517597492QmWdMd8DxpakrEidFnKqFgZwSNcBuVYVYMzvKNE82C7ZQw0xc834f631039eba3e7fede0b3bee5f7b3aabcdc1f0xf3a8658346c3888bdc236ccdd07532996eebbd299fa5...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9terra12rwwttemkn7w3xanpqtu05euzn2nsjzfn3rj9zkangaroo sport welcome kangaroo digital retrea...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9...0xc611b87310ee2d1a2cf66626afeb0c05cd9361db397f...{'pub_key': 'AkSMmBe8/3Z/x3FQDHdA0HmPC6gSS/VqI...eyJwdWJfa2V5IjoiQWtTTW1CZTgvM1oveDNGUURIZEEwSG...
331000john16517597493QmaEcQYeQ6TzsoFmF54MU6p3RmUv22zfzv5jNhdRPDcV3g0x9a2fcf7df51f24a72631694ba64745cbc511d4d30x683ab3cc400219f889b0ff07a8157d8065f856df6019...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6terra15xdumxh2xyx5trteh689pkjkf3vkc0eqhxq4rapoverty glass bid buyer pass morning vanish ri...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6...0x64b80d0ae3e755e5ff94ac37f3d04c6254a104a6c178...{'pub_key': 'Aqn4lUPTAD2ZiH2ncmLQBvUhxlnaxOmj+...eyJwdWJfa2V5IjoiQXFuNGxVUFRBRDJaaUgybmNtTFFCdl...
435000john16517597494QmUbL8BAoJokFQsZg8iycc6rGnAvjNhP5JMaDHjaTzm4bb0xa5528df7d1b90814092ce474869d37cd60a5fdd30xdcfb6e6b6e394536eb037666d5f67a1b10274d620f6a...bostrom1463yk59gkwksn574mrye5v26qrqrqvk7mpsummosmo1463yk59gkwksn574mrye5v26qrqrqvk7sfhlnwinhale sugar segment ethics number blouse dune...bostrom1463yk59gkwksn574mrye5v26qrqrqvk7mpsumm...0x18201d2d41ebf13ed6ec661468db58e1f008945cc79e...{'pub_key': 'Ap41abfiY1qCYZSA+XKU2KhiPW322p0jj...eyJwdWJfa2V5IjoiQXA0MWFiZmlZMXFDWVpTQStYS1UyS2...
\n
" }, "execution_count": 2, "metadata": {}, @@ -241,16 +239,16 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of addresses: 200000\n", - "Number of threads: 15\n", - "Bash size: 1000\n", - "Number of tasks: {('root_testing_source_100000_addresses.json', 'temp/proofs_13.json', 13000, 14001), ('root_testing_source_100000_addresses.json', 'temp/proofs_24.json', 24000, 25001), ('root_testing_source_100000_addresses.json', 'temp/proofs_101.json', 101000, 102001), ('root_testing_source_100000_addresses.json', 'temp/proofs_191.json', 191000, 192001), ('root_testing_source_100000_addresses.json', 'temp/proofs_23.json', 23000, 24001), ('root_testing_source_100000_addresses.json', 'temp/proofs_103.json', 103000, 104001), ('root_testing_source_100000_addresses.json', 'temp/proofs_162.json', 162000, 163001), ('root_testing_source_100000_addresses.json', 'temp/proofs_42.json', 42000, 43001), ('root_testing_source_100000_addresses.json', 'temp/proofs_189.json', 189000, 190001), ('root_testing_source_100000_addresses.json', 'temp/proofs_67.json', 67000, 68001), ('root_testing_source_100000_addresses.json', 'temp/proofs_11.json', 11000, 12001), ('root_testing_source_100000_addresses.json', 'temp/proofs_14.json', 14000, 15001), ('root_testing_source_100000_addresses.json', 'temp/proofs_198.json', 198000, 199001), ('root_testing_source_100000_addresses.json', 'temp/proofs_62.json', 62000, 63001), ('root_testing_source_100000_addresses.json', 'temp/proofs_25.json', 25000, 26001), ('root_testing_source_100000_addresses.json', 'temp/proofs_88.json', 88000, 89001), ('root_testing_source_100000_addresses.json', 'temp/proofs_2.json', 2000, 3001), ('root_testing_source_100000_addresses.json', 'temp/proofs_105.json', 105000, 106001), ('root_testing_source_100000_addresses.json', 'temp/proofs_116.json', 116000, 117001), ('root_testing_source_100000_addresses.json', 'temp/proofs_134.json', 134000, 135001), ('root_testing_source_100000_addresses.json', 'temp/proofs_117.json', 117000, 118001), ('root_testing_source_100000_addresses.json', 'temp/proofs_71.json', 71000, 72001), ('root_testing_source_100000_addresses.json', 'temp/proofs_160.json', 160000, 161001), ('root_testing_source_100000_addresses.json', 'temp/proofs_176.json', 176000, 177001), ('root_testing_source_100000_addresses.json', 'temp/proofs_54.json', 54000, 55001), ('root_testing_source_100000_addresses.json', 'temp/proofs_181.json', 181000, 182001), ('root_testing_source_100000_addresses.json', 'temp/proofs_16.json', 16000, 17001), ('root_testing_source_100000_addresses.json', 'temp/proofs_35.json', 35000, 36001), ('root_testing_source_100000_addresses.json', 'temp/proofs_19.json', 19000, 20001), ('root_testing_source_100000_addresses.json', 'temp/proofs_77.json', 77000, 78001), ('root_testing_source_100000_addresses.json', 'temp/proofs_126.json', 126000, 127001), ('root_testing_source_100000_addresses.json', 'temp/proofs_104.json', 104000, 105001), ('root_testing_source_100000_addresses.json', 'temp/proofs_158.json', 158000, 159001), ('root_testing_source_100000_addresses.json', 'temp/proofs_174.json', 174000, 175001), ('root_testing_source_100000_addresses.json', 'temp/proofs_120.json', 120000, 121001), ('root_testing_source_100000_addresses.json', 'temp/proofs_63.json', 63000, 64001), ('root_testing_source_100000_addresses.json', 'temp/proofs_49.json', 49000, 50001), ('root_testing_source_100000_addresses.json', 'temp/proofs_37.json', 37000, 38001), ('root_testing_source_100000_addresses.json', 'temp/proofs_136.json', 136000, 137001), ('root_testing_source_100000_addresses.json', 'temp/proofs_82.json', 82000, 83001), ('root_testing_source_100000_addresses.json', 'temp/proofs_157.json', 157000, 158001), ('root_testing_source_100000_addresses.json', 'temp/proofs_190.json', 190000, 191001), ('root_testing_source_100000_addresses.json', 'temp/proofs_177.json', 177000, 178001), ('root_testing_source_100000_addresses.json', 'temp/proofs_135.json', 135000, 136001), ('root_testing_source_100000_addresses.json', 'temp/proofs_27.json', 27000, 28001), ('root_testing_source_100000_addresses.json', 'temp/proofs_28.json', 28000, 29001), ('root_testing_source_100000_addresses.json', 'temp/proofs_141.json', 141000, 142001), ('root_testing_source_100000_addresses.json', 'temp/proofs_118.json', 118000, 119001), ('root_testing_source_100000_addresses.json', 'temp/proofs_65.json', 65000, 66001), ('root_testing_source_100000_addresses.json', 'temp/proofs_81.json', 81000, 82001), ('root_testing_source_100000_addresses.json', 'temp/proofs_112.json', 112000, 113001), ('root_testing_source_100000_addresses.json', 'temp/proofs_68.json', 68000, 69001), ('root_testing_source_100000_addresses.json', 'temp/proofs_90.json', 90000, 91001), ('root_testing_source_100000_addresses.json', 'temp/proofs_129.json', 129000, 130001), ('root_testing_source_100000_addresses.json', 'temp/proofs_108.json', 108000, 109001), ('root_testing_source_100000_addresses.json', 'temp/proofs_111.json', 111000, 112001), ('root_testing_source_100000_addresses.json', 'temp/proofs_12.json', 12000, 13001), ('root_testing_source_100000_addresses.json', 'temp/proofs_57.json', 57000, 58001), ('root_testing_source_100000_addresses.json', 'temp/proofs_83.json', 83000, 84001), ('root_testing_source_100000_addresses.json', 'temp/proofs_125.json', 125000, 126001), ('root_testing_source_100000_addresses.json', 'temp/proofs_138.json', 138000, 139001), ('root_testing_source_100000_addresses.json', 'temp/proofs_115.json', 115000, 116001), ('root_testing_source_100000_addresses.json', 'temp/proofs_102.json', 102000, 103001), ('root_testing_source_100000_addresses.json', 'temp/proofs_53.json', 53000, 54001), ('root_testing_source_100000_addresses.json', 'temp/proofs_91.json', 91000, 92001), ('root_testing_source_100000_addresses.json', 'temp/proofs_196.json', 196000, 197001), ('root_testing_source_100000_addresses.json', 'temp/proofs_94.json', 94000, 95001), ('root_testing_source_100000_addresses.json', 'temp/proofs_194.json', 194000, 195001), ('root_testing_source_100000_addresses.json', 'temp/proofs_89.json', 89000, 90001), ('root_testing_source_100000_addresses.json', 'temp/proofs_121.json', 121000, 122001), ('root_testing_source_100000_addresses.json', 'temp/proofs_151.json', 151000, 152001), ('root_testing_source_100000_addresses.json', 'temp/proofs_20.json', 20000, 21001), ('root_testing_source_100000_addresses.json', 'temp/proofs_130.json', 130000, 131001), ('root_testing_source_100000_addresses.json', 'temp/proofs_163.json', 163000, 164001), ('root_testing_source_100000_addresses.json', 'temp/proofs_169.json', 169000, 170001), ('root_testing_source_100000_addresses.json', 'temp/proofs_92.json', 92000, 93001), ('root_testing_source_100000_addresses.json', 'temp/proofs_168.json', 168000, 169001), ('root_testing_source_100000_addresses.json', 'temp/proofs_33.json', 33000, 34001), ('root_testing_source_100000_addresses.json', 'temp/proofs_78.json', 78000, 79001), ('root_testing_source_100000_addresses.json', 'temp/proofs_131.json', 131000, 132001), ('root_testing_source_100000_addresses.json', 'temp/proofs_122.json', 122000, 123001), ('root_testing_source_100000_addresses.json', 'temp/proofs_98.json', 98000, 99001), ('root_testing_source_100000_addresses.json', 'temp/proofs_113.json', 113000, 114001), ('root_testing_source_100000_addresses.json', 'temp/proofs_30.json', 30000, 31001), ('root_testing_source_100000_addresses.json', 'temp/proofs_21.json', 21000, 22001), ('root_testing_source_100000_addresses.json', 'temp/proofs_0.json', 0, 1001), ('root_testing_source_100000_addresses.json', 'temp/proofs_152.json', 152000, 153001), ('root_testing_source_100000_addresses.json', 'temp/proofs_8.json', 8000, 9001), ('root_testing_source_100000_addresses.json', 'temp/proofs_142.json', 142000, 143001), ('root_testing_source_100000_addresses.json', 'temp/proofs_34.json', 34000, 35001), ('root_testing_source_100000_addresses.json', 'temp/proofs_85.json', 85000, 86001), ('root_testing_source_100000_addresses.json', 'temp/proofs_84.json', 84000, 85001), ('root_testing_source_100000_addresses.json', 'temp/proofs_172.json', 172000, 173001), ('root_testing_source_100000_addresses.json', 'temp/proofs_80.json', 80000, 81001), ('root_testing_source_100000_addresses.json', 'temp/proofs_178.json', 178000, 179001), ('root_testing_source_100000_addresses.json', 'temp/proofs_164.json', 164000, 165001), ('root_testing_source_100000_addresses.json', 'temp/proofs_140.json', 140000, 141001), ('root_testing_source_100000_addresses.json', 'temp/proofs_114.json', 114000, 115001), ('root_testing_source_100000_addresses.json', 'temp/proofs_50.json', 50000, 51001), ('root_testing_source_100000_addresses.json', 'temp/proofs_182.json', 182000, 183001), ('root_testing_source_100000_addresses.json', 'temp/proofs_32.json', 32000, 33001), ('root_testing_source_100000_addresses.json', 'temp/proofs_76.json', 76000, 77001), ('root_testing_source_100000_addresses.json', 'temp/proofs_99.json', 99000, 100001), ('root_testing_source_100000_addresses.json', 'temp/proofs_171.json', 171000, 172001), ('root_testing_source_100000_addresses.json', 'temp/proofs_124.json', 124000, 125001), ('root_testing_source_100000_addresses.json', 'temp/proofs_167.json', 167000, 168001), ('root_testing_source_100000_addresses.json', 'temp/proofs_195.json', 195000, 196001), ('root_testing_source_100000_addresses.json', 'temp/proofs_31.json', 31000, 32001), ('root_testing_source_100000_addresses.json', 'temp/proofs_38.json', 38000, 39001), ('root_testing_source_100000_addresses.json', 'temp/proofs_55.json', 55000, 56001), ('root_testing_source_100000_addresses.json', 'temp/proofs_18.json', 18000, 19001), ('root_testing_source_100000_addresses.json', 'temp/proofs_69.json', 69000, 70001), ('root_testing_source_100000_addresses.json', 'temp/proofs_40.json', 40000, 41001), ('root_testing_source_100000_addresses.json', 'temp/proofs_87.json', 87000, 88001), ('root_testing_source_100000_addresses.json', 'temp/proofs_6.json', 6000, 7001), ('root_testing_source_100000_addresses.json', 'temp/proofs_17.json', 17000, 18001), ('root_testing_source_100000_addresses.json', 'temp/proofs_179.json', 179000, 180001), ('root_testing_source_100000_addresses.json', 'temp/proofs_15.json', 15000, 16001), ('root_testing_source_100000_addresses.json', 'temp/proofs_39.json', 39000, 40001), ('root_testing_source_100000_addresses.json', 'temp/proofs_66.json', 66000, 67001), ('root_testing_source_100000_addresses.json', 'temp/proofs_161.json', 161000, 162001), ('root_testing_source_100000_addresses.json', 'temp/proofs_75.json', 75000, 76001), ('root_testing_source_100000_addresses.json', 'temp/proofs_132.json', 132000, 133001), ('root_testing_source_100000_addresses.json', 'temp/proofs_95.json', 95000, 96001), ('root_testing_source_100000_addresses.json', 'temp/proofs_41.json', 41000, 42001), ('root_testing_source_100000_addresses.json', 'temp/proofs_58.json', 58000, 59001), ('root_testing_source_100000_addresses.json', 'temp/proofs_146.json', 146000, 147001), ('root_testing_source_100000_addresses.json', 'temp/proofs_185.json', 185000, 186001), ('root_testing_source_100000_addresses.json', 'temp/proofs_59.json', 59000, 60001), ('root_testing_source_100000_addresses.json', 'temp/proofs_154.json', 154000, 155001), ('root_testing_source_100000_addresses.json', 'temp/proofs_5.json', 5000, 6001), ('root_testing_source_100000_addresses.json', 'temp/proofs_137.json', 137000, 138001), ('root_testing_source_100000_addresses.json', 'temp/proofs_9.json', 9000, 10001), ('root_testing_source_100000_addresses.json', 'temp/proofs_123.json', 123000, 124001), ('root_testing_source_100000_addresses.json', 'temp/proofs_175.json', 175000, 176001), ('root_testing_source_100000_addresses.json', 'temp/proofs_173.json', 173000, 174001), ('root_testing_source_100000_addresses.json', 'temp/proofs_106.json', 106000, 107001), ('root_testing_source_100000_addresses.json', 'temp/proofs_119.json', 119000, 120001), ('root_testing_source_100000_addresses.json', 'temp/proofs_133.json', 133000, 134001), ('root_testing_source_100000_addresses.json', 'temp/proofs_48.json', 48000, 49001), ('root_testing_source_100000_addresses.json', 'temp/proofs_170.json', 170000, 171001), ('root_testing_source_100000_addresses.json', 'temp/proofs_150.json', 150000, 151001), ('root_testing_source_100000_addresses.json', 'temp/proofs_10.json', 10000, 11001), ('root_testing_source_100000_addresses.json', 'temp/proofs_100.json', 100000, 101001), ('root_testing_source_100000_addresses.json', 'temp/proofs_165.json', 165000, 166001), ('root_testing_source_100000_addresses.json', 'temp/proofs_60.json', 60000, 61001), ('root_testing_source_100000_addresses.json', 'temp/proofs_47.json', 47000, 48001), ('root_testing_source_100000_addresses.json', 'temp/proofs_46.json', 46000, 47001), ('root_testing_source_100000_addresses.json', 'temp/proofs_72.json', 72000, 73001), ('root_testing_source_100000_addresses.json', 'temp/proofs_197.json', 197000, 198001), ('root_testing_source_100000_addresses.json', 'temp/proofs_22.json', 22000, 23001), ('root_testing_source_100000_addresses.json', 'temp/proofs_153.json', 153000, 154001), ('root_testing_source_100000_addresses.json', 'temp/proofs_159.json', 159000, 160001), ('root_testing_source_100000_addresses.json', 'temp/proofs_107.json', 107000, 108001), ('root_testing_source_100000_addresses.json', 'temp/proofs_199.json', 199000, 200001), ('root_testing_source_100000_addresses.json', 'temp/proofs_61.json', 61000, 62001), ('root_testing_source_100000_addresses.json', 'temp/proofs_147.json', 147000, 148001), ('root_testing_source_100000_addresses.json', 'temp/proofs_3.json', 3000, 4001), ('root_testing_source_100000_addresses.json', 'temp/proofs_156.json', 156000, 157001), ('root_testing_source_100000_addresses.json', 'temp/proofs_192.json', 192000, 193001), ('root_testing_source_100000_addresses.json', 'temp/proofs_193.json', 193000, 194001), ('root_testing_source_100000_addresses.json', 'temp/proofs_97.json', 97000, 98001), ('root_testing_source_100000_addresses.json', 'temp/proofs_79.json', 79000, 80001), ('root_testing_source_100000_addresses.json', 'temp/proofs_139.json', 139000, 140001), ('root_testing_source_100000_addresses.json', 'temp/proofs_70.json', 70000, 71001), ('root_testing_source_100000_addresses.json', 'temp/proofs_145.json', 145000, 146001), ('root_testing_source_100000_addresses.json', 'temp/proofs_45.json', 45000, 46001), ('root_testing_source_100000_addresses.json', 'temp/proofs_73.json', 73000, 74001), ('root_testing_source_100000_addresses.json', 'temp/proofs_148.json', 148000, 149001), ('root_testing_source_100000_addresses.json', 'temp/proofs_7.json', 7000, 8001), ('root_testing_source_100000_addresses.json', 'temp/proofs_52.json', 52000, 53001), ('root_testing_source_100000_addresses.json', 'temp/proofs_93.json', 93000, 94001), ('root_testing_source_100000_addresses.json', 'temp/proofs_109.json', 109000, 110001), ('root_testing_source_100000_addresses.json', 'temp/proofs_143.json', 143000, 144001), ('root_testing_source_100000_addresses.json', 'temp/proofs_29.json', 29000, 30001), ('root_testing_source_100000_addresses.json', 'temp/proofs_144.json', 144000, 145001), ('root_testing_source_100000_addresses.json', 'temp/proofs_44.json', 44000, 45001), ('root_testing_source_100000_addresses.json', 'temp/proofs_155.json', 155000, 156001), ('root_testing_source_100000_addresses.json', 'temp/proofs_188.json', 188000, 189001), ('root_testing_source_100000_addresses.json', 'temp/proofs_1.json', 1000, 2001), ('root_testing_source_100000_addresses.json', 'temp/proofs_56.json', 56000, 57001), ('root_testing_source_100000_addresses.json', 'temp/proofs_64.json', 64000, 65001), ('root_testing_source_100000_addresses.json', 'temp/proofs_127.json', 127000, 128001), ('root_testing_source_100000_addresses.json', 'temp/proofs_183.json', 183000, 184001), ('root_testing_source_100000_addresses.json', 'temp/proofs_36.json', 36000, 37001), ('root_testing_source_100000_addresses.json', 'temp/proofs_186.json', 186000, 187001), ('root_testing_source_100000_addresses.json', 'temp/proofs_43.json', 43000, 44001), ('root_testing_source_100000_addresses.json', 'temp/proofs_166.json', 166000, 167001), ('root_testing_source_100000_addresses.json', 'temp/proofs_180.json', 180000, 181001), ('root_testing_source_100000_addresses.json', 'temp/proofs_74.json', 74000, 75001), ('root_testing_source_100000_addresses.json', 'temp/proofs_187.json', 187000, 188001), ('root_testing_source_100000_addresses.json', 'temp/proofs_86.json', 86000, 87001), ('root_testing_source_100000_addresses.json', 'temp/proofs_149.json', 149000, 150001), ('root_testing_source_100000_addresses.json', 'temp/proofs_4.json', 4000, 5001), ('root_testing_source_100000_addresses.json', 'temp/proofs_26.json', 26000, 27001), ('root_testing_source_100000_addresses.json', 'temp/proofs_96.json', 96000, 97001), ('root_testing_source_100000_addresses.json', 'temp/proofs_51.json', 51000, 52001), ('root_testing_source_100000_addresses.json', 'temp/proofs_128.json', 128000, 129001), ('root_testing_source_100000_addresses.json', 'temp/proofs_184.json', 184000, 185001), ('root_testing_source_100000_addresses.json', 'temp/proofs_110.json', 110000, 111001)}\n" + "Number of addresses: 400000\n", + "Number of threads: 30\n", + "Bash size: 2000\n", + "Number of tasks: 200\n" ] }, { @@ -259,7 +257,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "eced229c3e1542459c27bda7be2ced0e" + "model_id": "d44a0dd4bbd74b9b9a6a97fc2874a679" } }, "metadata": {}, @@ -270,1211 +268,1211 @@ "output_type": "stream", "text": [ "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_12.json --start_index 12000 --end_index 13001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.90s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_61.json --start_index 122000 --end_index 124001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.34s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_65.json --start_index 65000 --end_index 66001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.00s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_101.json --start_index 202000 --end_index 204001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.03s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_117.json --start_index 117000 --end_index 118001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.06s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_97.json --start_index 194000 --end_index 196001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.20s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_13.json --start_index 13000 --end_index 14001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.13s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_168.json --start_index 336000 --end_index 338001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.13s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_158.json --start_index 158000 --end_index 159001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.26s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_76.json --start_index 152000 --end_index 154001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.81s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_27.json --start_index 27000 --end_index 28001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.29s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_40.json --start_index 80000 --end_index 82001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.20s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_189.json --start_index 189000 --end_index 190001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.63s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_119.json --start_index 238000 --end_index 240001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.41s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_23.json --start_index 23000 --end_index 24001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.62s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_163.json --start_index 326000 --end_index 328001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_157.json --start_index 157000 --end_index 158001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.90s.\n", - "\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_25.json --start_index 50000 --end_index 52001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.60s.\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_198.json --start_index 198000 --end_index 199001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.92s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_96.json --start_index 192000 --end_index 194001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.61s.\n", "\n", - "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_2.json --start_index 2000 --end_index 3001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.92s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_54.json --start_index 54000 --end_index 55001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.95s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_67.json --start_index 134000 --end_index 136001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.74s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_19.json --start_index 19000 --end_index 20001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.96s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_194.json --start_index 388000 --end_index 390001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.94s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_90.json --start_index 90000 --end_index 91001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.14s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_120.json --start_index 240000 --end_index 242001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.01s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_49.json --start_index 49000 --end_index 50001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.42s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_68.json --start_index 136000 --end_index 138001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.31s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_28.json --start_index 28000 --end_index 29001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.48s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_116.json --start_index 232000 --end_index 234001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.32s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_71.json --start_index 71000 --end_index 72001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.25s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_71.json --start_index 142000 --end_index 144001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.39s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_57.json --start_index 57000 --end_index 58001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.39s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_111.json --start_index 222000 --end_index 224001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.39s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_105.json --start_index 105000 --end_index 106001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.68s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_188.json --start_index 376000 --end_index 378001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.63s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_77.json --start_index 77000 --end_index 78001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.79s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_152.json --start_index 304000 --end_index 306001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.72s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_190.json --start_index 190000 --end_index 191001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.95s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_32.json --start_index 64000 --end_index 66001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 323.34s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_81.json --start_index 81000 --end_index 82001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.91s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_38.json --start_index 76000 --end_index 78001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 323.44s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_67.json --start_index 67000 --end_index 68001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.47s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_198.json --start_index 396000 --end_index 398001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 323.83s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_174.json --start_index 174000 --end_index 175001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.92s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_99.json --start_index 198000 --end_index 200001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 323.83s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_181.json --start_index 181000 --end_index 182001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.23s.\n", - "\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_72.json --start_index 144000 --end_index 146001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 324.03s.\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_103.json --start_index 103000 --end_index 104001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.56s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_125.json --start_index 250000 --end_index 252001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 323.96s.\n", "\n", - "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_62.json --start_index 62000 --end_index 63001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.74s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_129.json --start_index 129000 --end_index 130001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.52s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_55.json --start_index 110000 --end_index 112001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 325.45s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_37.json --start_index 37000 --end_index 38001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.43s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_7.json --start_index 14000 --end_index 16001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 327.60s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_24.json --start_index 24000 --end_index 25001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 53.02s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_178.json --start_index 356000 --end_index 358001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 328.49s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_141.json --start_index 141000 --end_index 142001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.92s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_127.json --start_index 254000 --end_index 256001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 330.69s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_116.json --start_index 116000 --end_index 117001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.17s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_130.json --start_index 260000 --end_index 262001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 334.13s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_160.json --start_index 160000 --end_index 161001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.50s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_63.json --start_index 126000 --end_index 128001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 314.50s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_112.json --start_index 112000 --end_index 113001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.11s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_160.json --start_index 320000 --end_index 322001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.74s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_16.json --start_index 16000 --end_index 17001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.87s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_9.json --start_index 18000 --end_index 20001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.35s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_126.json --start_index 126000 --end_index 127001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.56s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_141.json --start_index 282000 --end_index 284001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.97s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_120.json --start_index 120000 --end_index 121001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.32s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_73.json --start_index 146000 --end_index 148001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.43s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_11.json --start_index 11000 --end_index 12001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.50s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_12.json --start_index 24000 --end_index 26001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.54s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_108.json --start_index 108000 --end_index 109001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.98s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_27.json --start_index 54000 --end_index 56001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.79s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_162.json --start_index 162000 --end_index 163001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.98s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_6.json --start_index 12000 --end_index 14001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.33s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_101.json --start_index 101000 --end_index 102001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.14s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_95.json --start_index 190000 --end_index 192001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.44s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_83.json --start_index 83000 --end_index 84001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 53.16s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_175.json --start_index 350000 --end_index 352001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.14s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_177.json --start_index 177000 --end_index 178001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.62s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_35.json --start_index 70000 --end_index 72001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.00s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_25.json --start_index 25000 --end_index 26001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.10s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_24.json --start_index 48000 --end_index 50001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.54s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_136.json --start_index 136000 --end_index 137001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.48s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_100.json --start_index 200000 --end_index 202001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.22s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_118.json --start_index 118000 --end_index 119001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.41s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_78.json --start_index 156000 --end_index 158001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.88s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_68.json --start_index 68000 --end_index 69001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.32s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_136.json --start_index 272000 --end_index 274001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.17s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_134.json --start_index 134000 --end_index 135001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.83s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_104.json --start_index 208000 --end_index 210001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.24s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_111.json --start_index 111000 --end_index 112001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.93s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_85.json --start_index 170000 --end_index 172001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.25s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_176.json --start_index 176000 --end_index 177001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.99s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_56.json --start_index 112000 --end_index 114001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.82s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_42.json --start_index 42000 --end_index 43001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.60s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_129.json --start_index 258000 --end_index 260001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.49s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_35.json --start_index 35000 --end_index 36001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.05s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_30.json --start_index 60000 --end_index 62001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.24s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_63.json --start_index 63000 --end_index 64001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.73s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_58.json --start_index 116000 --end_index 118001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.45s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_104.json --start_index 104000 --end_index 105001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.27s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_166.json --start_index 332000 --end_index 334001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.46s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_135.json --start_index 135000 --end_index 136001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.38s.\n", - "\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_131.json --start_index 262000 --end_index 264001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.20s.\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_88.json --start_index 88000 --end_index 89001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.08s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_47.json --start_index 94000 --end_index 96001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.19s.\n", "\n", - "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_82.json --start_index 82000 --end_index 83001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.84s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_125.json --start_index 125000 --end_index 126001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.81s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_158.json --start_index 316000 --end_index 318001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 324.16s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_191.json --start_index 191000 --end_index 192001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.95s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_37.json --start_index 74000 --end_index 76001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.50s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_14.json --start_index 14000 --end_index 15001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 53.11s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_43.json --start_index 86000 --end_index 88001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 324.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_138.json --start_index 138000 --end_index 139001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.48s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_181.json --start_index 362000 --end_index 364001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 324.56s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_89.json --start_index 89000 --end_index 90001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.39s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_20.json --start_index 40000 --end_index 42001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.79s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_142.json --start_index 142000 --end_index 143001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.98s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_74.json --start_index 148000 --end_index 150001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 314.80s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_91.json --start_index 91000 --end_index 92001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.83s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_44.json --start_index 88000 --end_index 90001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.04s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_38.json --start_index 38000 --end_index 39001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.34s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_79.json --start_index 158000 --end_index 160001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.42s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_124.json --start_index 124000 --end_index 125001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.46s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_126.json --start_index 252000 --end_index 254001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.88s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_130.json --start_index 130000 --end_index 131001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.20s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_86.json --start_index 172000 --end_index 174001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.61s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_172.json --start_index 172000 --end_index 173001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.13s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_59.json --start_index 118000 --end_index 120001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.28s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_168.json --start_index 168000 --end_index 169001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.15s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_195.json --start_index 390000 --end_index 392001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.75s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_21.json --start_index 21000 --end_index 22001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.84s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_92.json --start_index 184000 --end_index 186001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.02s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_122.json --start_index 122000 --end_index 123001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.14s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_64.json --start_index 128000 --end_index 130001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.39s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_140.json --start_index 140000 --end_index 141001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.45s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_34.json --start_index 68000 --end_index 70001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.58s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_40.json --start_index 40000 --end_index 41001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.06s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_155.json --start_index 310000 --end_index 312001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_32.json --start_index 32000 --end_index 33001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.32s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_161.json --start_index 322000 --end_index 324001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.01s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_179.json --start_index 179000 --end_index 180001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.29s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_39.json --start_index 78000 --end_index 80001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.37s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_121.json --start_index 121000 --end_index 122001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.16s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_118.json --start_index 236000 --end_index 238001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.95s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_33.json --start_index 33000 --end_index 34001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.59s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_2.json --start_index 4000 --end_index 6001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.59s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_163.json --start_index 163000 --end_index 164001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.92s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_89.json --start_index 178000 --end_index 180001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.92s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_98.json --start_index 98000 --end_index 99001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.84s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_148.json --start_index 296000 --end_index 298001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 1001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.01s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_84.json --start_index 168000 --end_index 170001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 323.30s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_115.json --start_index 115000 --end_index 116001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.59s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_19.json --start_index 38000 --end_index 40001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.30s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_34.json --start_index 34000 --end_index 35001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.21s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_146.json --start_index 292000 --end_index 294001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.54s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_114.json --start_index 114000 --end_index 115001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.94s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_48.json --start_index 96000 --end_index 98001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.73s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_167.json --start_index 167000 --end_index 168001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.75s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_117.json --start_index 234000 --end_index 236001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_87.json --start_index 87000 --end_index 88001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.08s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_139.json --start_index 278000 --end_index 280001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.78s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_55.json --start_index 55000 --end_index 56001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.00s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_16.json --start_index 32000 --end_index 34001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.70s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_80.json --start_index 80000 --end_index 81001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.99s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_172.json --start_index 344000 --end_index 346001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_76.json --start_index 76000 --end_index 77001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.88s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_184.json --start_index 368000 --end_index 370001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.71s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_196.json --start_index 196000 --end_index 197001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 53.37s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_31.json --start_index 62000 --end_index 64001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_15.json --start_index 15000 --end_index 16001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.64s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_133.json --start_index 266000 --end_index 268001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.37s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_169.json --start_index 169000 --end_index 170001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.28s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_93.json --start_index 186000 --end_index 188001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.83s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_151.json --start_index 151000 --end_index 152001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.02s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_36.json --start_index 72000 --end_index 74001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 324.16s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_6.json --start_index 6000 --end_index 7001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.71s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_150.json --start_index 300000 --end_index 302001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.72s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_78.json --start_index 78000 --end_index 79001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.09s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_75.json --start_index 150000 --end_index 152001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.88s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_18.json --start_index 18000 --end_index 19001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.96s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_105.json --start_index 210000 --end_index 212001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.90s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_102.json --start_index 102000 --end_index 103001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.63s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_28.json --start_index 56000 --end_index 58001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.27s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_50.json --start_index 50000 --end_index 51001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.27s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_197.json --start_index 394000 --end_index 396001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.45s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_152.json --start_index 152000 --end_index 153001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.95s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_140.json --start_index 280000 --end_index 282001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.96s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_113.json --start_index 113000 --end_index 114001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.24s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_115.json --start_index 230000 --end_index 232001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_85.json --start_index 85000 --end_index 86001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.64s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_54.json --start_index 108000 --end_index 110001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.93s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_39.json --start_index 39000 --end_index 40001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.01s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_149.json --start_index 298000 --end_index 300001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.01s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_178.json --start_index 178000 --end_index 179001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.98s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_138.json --start_index 276000 --end_index 278001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.42s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_94.json --start_index 94000 --end_index 95001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.31s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_77.json --start_index 154000 --end_index 156001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.11s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_99.json --start_index 99000 --end_index 100001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.67s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_102.json --start_index 204000 --end_index 206001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_195.json --start_index 195000 --end_index 196001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.77s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_3.json --start_index 6000 --end_index 8001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.45s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_92.json --start_index 92000 --end_index 93001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.15s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_124.json --start_index 248000 --end_index 250001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.90s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_69.json --start_index 69000 --end_index 70001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.58s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_45.json --start_index 90000 --end_index 92001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.96s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_17.json --start_index 17000 --end_index 18001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.95s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_91.json --start_index 182000 --end_index 184001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.28s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_182.json --start_index 182000 --end_index 183001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.81s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_196.json --start_index 392000 --end_index 394001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.58s.\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_123.json --start_index 246000 --end_index 248001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.90s.\n", + "\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_8.json --start_index 8000 --end_index 9001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.78s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_57.json --start_index 114000 --end_index 116001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_20.json --start_index 20000 --end_index 21001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.62s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_170.json --start_index 340000 --end_index 342001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.31s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_194.json --start_index 194000 --end_index 195001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.03s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_5.json --start_index 10000 --end_index 12001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.15s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_53.json --start_index 53000 --end_index 54001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.60s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_113.json --start_index 226000 --end_index 228001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.38s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_164.json --start_index 164000 --end_index 165001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.47s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_22.json --start_index 44000 --end_index 46001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.42s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_66.json --start_index 66000 --end_index 67001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.72s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_83.json --start_index 166000 --end_index 168001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.10s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_84.json --start_index 84000 --end_index 85001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.76s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_191.json --start_index 382000 --end_index 384001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.38s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_131.json --start_index 131000 --end_index 132001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.23s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_114.json --start_index 228000 --end_index 230001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.15s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_171.json --start_index 171000 --end_index 172001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.83s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_42.json --start_index 84000 --end_index 86001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.89s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_30.json --start_index 30000 --end_index 31001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.96s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_14.json --start_index 28000 --end_index 30001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.46s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_31.json --start_index 31000 --end_index 32001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.91s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_180.json --start_index 360000 --end_index 362001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 327.28s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_41.json --start_index 41000 --end_index 42001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.93s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_108.json --start_index 216000 --end_index 218001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.73s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_170.json --start_index 170000 --end_index 171001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.13s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_189.json --start_index 378000 --end_index 380001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.61s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_9.json --start_index 9000 --end_index 10001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.37s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_192.json --start_index 384000 --end_index 386001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.82s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_165.json --start_index 165000 --end_index 166001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.16s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_190.json --start_index 380000 --end_index 382001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.28s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_72.json --start_index 72000 --end_index 73001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.94s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_162.json --start_index 324000 --end_index 326001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.02s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_106.json --start_index 106000 --end_index 107001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.64s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_169.json --start_index 338000 --end_index 340001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.24s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_59.json --start_index 59000 --end_index 60001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.14s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_50.json --start_index 100000 --end_index 102001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_147.json --start_index 147000 --end_index 148001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.13s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_153.json --start_index 306000 --end_index 308001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 312.60s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_193.json --start_index 193000 --end_index 194001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.98s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_107.json --start_index 214000 --end_index 216001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.43s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_159.json --start_index 159000 --end_index 160001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.51s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_143.json --start_index 286000 --end_index 288001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 312.39s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_44.json --start_index 44000 --end_index 45001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.83s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_142.json --start_index 284000 --end_index 286001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.83s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_70.json --start_index 70000 --end_index 71001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.45s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_157.json --start_index 314000 --end_index 316001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 314.06s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_148.json --start_index 148000 --end_index 149001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.63s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_147.json --start_index 294000 --end_index 296001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.58s.\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_90.json --start_index 180000 --end_index 182001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.51s.\n", + "\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_161.json --start_index 161000 --end_index 162001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 53.63s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_186.json --start_index 372000 --end_index 374001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.75s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_109.json --start_index 109000 --end_index 110001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 53.28s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_193.json --start_index 386000 --end_index 388001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.20s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_58.json --start_index 58000 --end_index 59001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.26s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_66.json --start_index 132000 --end_index 134001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_123.json --start_index 123000 --end_index 124001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.05s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_110.json --start_index 220000 --end_index 222001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.40s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_97.json --start_index 97000 --end_index 98001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.57s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_53.json --start_index 106000 --end_index 108001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 311.87s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_107.json --start_index 107000 --end_index 108001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.42s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_82.json --start_index 164000 --end_index 166001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.58s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_60.json --start_index 60000 --end_index 61001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.30s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_87.json --start_index 174000 --end_index 176001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.61s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_150.json --start_index 150000 --end_index 151001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.78s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_156.json --start_index 312000 --end_index 314001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 321.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_119.json --start_index 119000 --end_index 120001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.47s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_174.json --start_index 348000 --end_index 350001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.24s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_7.json --start_index 7000 --end_index 8001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.79s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_62.json --start_index 124000 --end_index 126001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.66s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_197.json --start_index 197000 --end_index 198001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.13s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_51.json --start_index 102000 --end_index 104001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.10s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_155.json --start_index 155000 --end_index 156001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.34s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_151.json --start_index 302000 --end_index 304001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.50s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_154.json --start_index 154000 --end_index 155001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.03s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_15.json --start_index 30000 --end_index 32001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.95s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_3.json --start_index 3000 --end_index 4001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.86s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_70.json --start_index 140000 --end_index 142001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.00s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_145.json --start_index 145000 --end_index 146001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.28s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_8.json --start_index 16000 --end_index 18001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 323.01s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_75.json --start_index 75000 --end_index 76001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.61s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_80.json --start_index 160000 --end_index 162001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.68s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_143.json --start_index 143000 --end_index 144001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.14s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_106.json --start_index 212000 --end_index 214001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.06s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_175.json --start_index 175000 --end_index 176001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.29s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_94.json --start_index 188000 --end_index 190001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 322.84s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_146.json --start_index 146000 --end_index 147001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.52s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_10.json --start_index 20000 --end_index 22001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 314.36s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_199.json --start_index 199000 --end_index 200001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.48s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_122.json --start_index 244000 --end_index 246001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.51s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_10.json --start_index 10000 --end_index 11001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.41s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_132.json --start_index 264000 --end_index 266001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.90s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_133.json --start_index 133000 --end_index 134001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.55s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_81.json --start_index 162000 --end_index 164001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.07s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_47.json --start_index 47000 --end_index 48001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.82s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_171.json --start_index 342000 --end_index 344001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 314.38s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_188.json --start_index 188000 --end_index 189001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.03s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_185.json --start_index 370000 --end_index 372001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.20s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_156.json --start_index 156000 --end_index 157001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.84s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_121.json --start_index 242000 --end_index 244001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 311.97s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_79.json --start_index 79000 --end_index 80001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.21s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_103.json --start_index 206000 --end_index 208001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 312.05s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_22.json --start_index 22000 --end_index 23001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.62s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_17.json --start_index 34000 --end_index 36001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 306.10s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_52.json --start_index 52000 --end_index 53001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.97s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 2001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 312.23s.\n", + "yarn run v1.22.18\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_128.json --start_index 256000 --end_index 258001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 308.34s.\n", + "\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_5.json --start_index 5000 --end_index 6001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.86s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_33.json --start_index 66000 --end_index 68001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.34s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_45.json --start_index 45000 --end_index 46001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.82s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_179.json --start_index 358000 --end_index 360001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.99s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_132.json --start_index 132000 --end_index 133001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.05s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_135.json --start_index 270000 --end_index 272001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.41s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_29.json --start_index 29000 --end_index 30001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.21s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_145.json --start_index 290000 --end_index 292001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.78s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_100.json --start_index 100000 --end_index 101001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.73s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_29.json --start_index 58000 --end_index 60001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.16s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_173.json --start_index 173000 --end_index 174001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.57s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_52.json --start_index 104000 --end_index 106001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.25s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_185.json --start_index 185000 --end_index 186001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.95s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_65.json --start_index 130000 --end_index 132001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.83s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_61.json --start_index 61000 --end_index 62001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.17s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_4.json --start_index 8000 --end_index 10001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 320.19s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_48.json --start_index 48000 --end_index 49001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.27s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_177.json --start_index 354000 --end_index 356001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.75s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_192.json --start_index 192000 --end_index 193001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.19s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_18.json --start_index 36000 --end_index 38001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.82s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_139.json --start_index 139000 --end_index 140001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.33s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_187.json --start_index 374000 --end_index 376001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.64s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_137.json --start_index 137000 --end_index 138001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.94s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_159.json --start_index 318000 --end_index 320001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 315.54s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_93.json --start_index 93000 --end_index 94001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.19s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_21.json --start_index 42000 --end_index 44001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.10s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_73.json --start_index 73000 --end_index 74001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.17s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_164.json --start_index 328000 --end_index 330001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.54s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_95.json --start_index 95000 --end_index 96001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 51.34s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_26.json --start_index 52000 --end_index 54001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 319.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_46.json --start_index 46000 --end_index 47001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.79s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_1.json --start_index 2000 --end_index 4001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 316.51s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_153.json --start_index 153000 --end_index 154001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 52.14s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_41.json --start_index 82000 --end_index 84001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 317.45s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_144.json --start_index 144000 --end_index 145001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 50.97s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_23.json --start_index 46000 --end_index 48001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 318.99s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_1.json --start_index 1000 --end_index 2001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 53.39s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_98.json --start_index 196000 --end_index 198001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 313.07s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_36.json --start_index 36000 --end_index 37001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 35.10s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_137.json --start_index 274000 --end_index 276001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 217.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_149.json --start_index 149000 --end_index 150001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 35.29s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_112.json --start_index 224000 --end_index 226001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 214.41s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_180.json --start_index 180000 --end_index 181001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 37.32s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_165.json --start_index 330000 --end_index 332001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 218.41s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_56.json --start_index 56000 --end_index 57001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 37.86s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_134.json --start_index 268000 --end_index 270001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 215.45s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_51.json --start_index 51000 --end_index 52001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 39.63s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_154.json --start_index 308000 --end_index 310001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 216.35s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_4.json --start_index 4000 --end_index 5001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 35.87s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_199.json --start_index 398000 --end_index 400001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 217.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_186.json --start_index 186000 --end_index 187001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 37.73s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_88.json --start_index 176000 --end_index 178001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 222.19s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_74.json --start_index 74000 --end_index 75001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 36.00s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_167.json --start_index 334000 --end_index 336001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 226.29s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_64.json --start_index 64000 --end_index 65001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 39.58s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_13.json --start_index 26000 --end_index 28001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 229.04s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_128.json --start_index 128000 --end_index 129001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 37.19s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_109.json --start_index 218000 --end_index 220001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 229.42s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_26.json --start_index 26000 --end_index 27001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 34.92s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_144.json --start_index 288000 --end_index 290001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 211.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_43.json --start_index 43000 --end_index 44001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 35.27s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_183.json --start_index 366000 --end_index 368001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 215.04s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_187.json --start_index 187000 --end_index 188001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 35.19s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_46.json --start_index 92000 --end_index 94001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 217.06s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_127.json --start_index 127000 --end_index 128001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 36.35s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_69.json --start_index 138000 --end_index 140001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 216.79s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_184.json --start_index 184000 --end_index 185001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 39.33s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_173.json --start_index 346000 --end_index 348001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 214.72s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_96.json --start_index 96000 --end_index 97001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 35.64s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_176.json --start_index 352000 --end_index 354001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 222.78s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_86.json --start_index 86000 --end_index 87001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 37.40s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_49.json --start_index 98000 --end_index 100001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 208.71s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_166.json --start_index 166000 --end_index 167001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 39.76s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_11.json --start_index 22000 --end_index 24001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 219.62s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_183.json --start_index 183000 --end_index 184001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 35.11s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_60.json --start_index 120000 --end_index 122001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 221.95s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100000_addresses.json --output temp/proofs_110.json --start_index 110000 --end_index 111001\n", - "Merkle root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Number of addresses in the Merkle tree: 1001\n", - "Done in 34.17s.\n", + "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_182.json --start_index 364000 --end_index 366001\n", + "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Number of addresses in the Merkle tree: 2001\n", + "Done in 218.41s.\n", "\n" ] } ], "source": [ - "NUMBER_OF_THREADS = 15\n", - "BASH_SIZE = 1000\n", + "NUMBER_OF_THREADS = 30\n", + "BASH_SIZE = 2000\n", "\n", "tasks = set(\n", " (\n", @@ -1486,7 +1484,7 @@ " )\n", ")\n", "if CALCULATE_PROOFS:\n", - " print(f'Number of addresses: {2 * NUMBER_OF_PARTICIPANTS}\\nNumber of threads: {NUMBER_OF_THREADS}\\nBash size: {BASH_SIZE}\\nNumber of tasks: {tasks}')\n", + " print(f'Number of addresses: {2 * NUMBER_OF_PARTICIPANTS}\\nNumber of threads: {NUMBER_OF_THREADS}\\nBash size: {BASH_SIZE}\\nNumber of tasks: {len(tasks)}')\n", " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", " res = pool.starmap(get_proofs, tqdm(tasks, total=len(tasks)))\n", " assert res == [True] * len(res)" @@ -1500,14 +1498,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 30000 john16514110440 QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE7 \n1 30000 john16514110440 QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE7 \n2 30000 john16514110441 QmVWURubuV33SKYXtyLtT4MtN1pfPrukzT9tjR4vmBRVBd \n3 30000 john16514110442 QmXudghn9jWWjzzgizpTtzZ1kJLeCK7bdgRe5ANgS9dsLt \n4 30000 john16514110443 QmUCtjvizRdrdoF6e5VQRN5pgUB4D1wafwFzTsTjt2zPoY \n\n ethereum_address \\\n0 0x3756069ce10d18b5d23db3295ec59f62909b4032 \n1 0x3756069ce10d18b5d23db3295ec59f62909b4032 \n2 0xc70b2e789b42a6b3add29f8949b4ec8ebeb78aa9 \n3 0x22d6a3a23a348a5055caf5e9459b6b81a849c3d9 \n4 0xa88f6812e62e6dbae520c8cc9bf2fbe68418f7cf \n\n ethereum_private_key \\\n0 0xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3... \n1 0xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3... \n2 0xbf851509658dd955365c2b62848a55842cd28937b792... \n3 0x989e2221d4dc219182aeb5d5f9ff124406759747db73... \n4 0xcd8696cdafd3388c6ca8a8062d3cf038dfca1129d559... \n\n bostrom_address \\\n0 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 \n1 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 \n2 bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l \n3 bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a \n4 bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y \n\n cosmos_address \\\n0 cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lquj \n1 cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lquj \n2 terra1mvuczu56l9c3rsj889ysykumpg4s9v3xd6wfxc \n3 cosmos1yyx6wvgvr3deg70dvgsfwulgzurnz8kcdr8we6 \n4 cosmos1yhrmy9l027gsa342wwxmua0pfel2c24etgmzqr \n\n cosmos_seed \\\n0 domain jacket harsh toast list evil champion s... \n1 domain jacket harsh toast list evil champion s... \n2 net coin wealth creek lumber reduce catalog sl... \n3 shock pipe begin detect economy finger great u... \n4 air video reflect suggest own skate spray mapl... \n\n message \\\n0 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4... \n1 bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4... \n2 bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l... \n3 bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a... \n4 bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y... \n\n ethereum_message_signature \\\n0 0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9... \n1 0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9... \n2 0x97b409a700e4d11d7b5cadd764c67cc6399b868d93e2... \n3 0xcad3e647570e7f168aee49bbda543824c6dc6f47a06e... \n4 0x58b5e9de07036ab4e5f2f4b185d3f0a684aca66e4678... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4... \n1 {'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4... \n2 {'pub_key': 'A3nBxjlMaPLs6FP7eSIMG9ztk7w/EJABw... \n3 {'pub_key': 'A1VGj0IPB2PAI0ZW25CScr//U/jJkxlDA... \n4 {'pub_key': 'AlWQq+xr7W2FW77LivQdpCQ/G8zmRucoE... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC... \n1 eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC... \n2 eyJwdWJfa2V5IjoiQTNuQnhqbE1hUExzNkZQN2VTSU1HOX... \n3 eyJwdWJfa2V5IjoiQTFWR2owSVBCMlBBSTBaVzI1Q1Njci... \n4 eyJwdWJfa2V5IjoiQWxXUXEreHI3VzJGVzc3TGl2UWRwQ1... \n\n ethereum_proof \\\n0 [aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7... \n1 [aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7... \n2 [e6510615b06bed677416e4eaf2766262a0c0ea6b5f69a... \n3 [eacf9cccca46c86697ff8c414e227c0289cd2596bbfe6... \n4 [e312e24f6ba1900bf48ad582159c77ff88a8048d00434... \n\n cosmos_proof \n0 [423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c... \n1 [423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c... \n2 [e7a25331b0a1a98a5bb2d516932e6ca104cc0e8d22643... \n3 [3fd71696db46abd392c10bd55ed9641d5819920f7cb5e... \n4 [2389fa1c8f9edc9c945c480bd244203a383cee8908b52... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
030000john16514110440QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE70x3756069ce10d18b5d23db3295ec59f62909b40320xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lqujdomain jacket harsh toast list evil champion s...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4...0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9...{'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4...eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC...[aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7...[423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c...
130000john16514110440QmVgtMwsrumhGovy8fz7eahPgdk4ehCXTR82tTufLQNeE70x3756069ce10d18b5d23db3295ec59f62909b40320xabeaa8b4a26ca6c28acc61979b5516f58cca5a93c2f3...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lqujdomain jacket harsh toast list evil champion s...bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4...0x9f38deff0690e29df1fe865ec1ac5af4d20b764fbde9...{'pub_key': 'A1w2Dz/7uX7iNzNjygPpiT+/vOl7orPY4...eyJwdWJfa2V5IjoiQTF3MkR6Lzd1WDdpTnpOanlnUHBpVC...[aa1a98efd431fdd62c8065eb5a9c514ce162b6281caf7...[423ba75dd8f55bafd9b29f4cd232ccbb4828c5904750c...
230000john16514110441QmVWURubuV33SKYXtyLtT4MtN1pfPrukzT9tjR4vmBRVBd0xc70b2e789b42a6b3add29f8949b4ec8ebeb78aa90xbf851509658dd955365c2b62848a55842cd28937b792...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66lterra1mvuczu56l9c3rsj889ysykumpg4s9v3xd6wfxcnet coin wealth creek lumber reduce catalog sl...bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l...0x97b409a700e4d11d7b5cadd764c67cc6399b868d93e2...{'pub_key': 'A3nBxjlMaPLs6FP7eSIMG9ztk7w/EJABw...eyJwdWJfa2V5IjoiQTNuQnhqbE1hUExzNkZQN2VTSU1HOX...[e6510615b06bed677416e4eaf2766262a0c0ea6b5f69a...[e7a25331b0a1a98a5bb2d516932e6ca104cc0e8d22643...
330000john16514110442QmXudghn9jWWjzzgizpTtzZ1kJLeCK7bdgRe5ANgS9dsLt0x22d6a3a23a348a5055caf5e9459b6b81a849c3d90x989e2221d4dc219182aeb5d5f9ff124406759747db73...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8acosmos1yyx6wvgvr3deg70dvgsfwulgzurnz8kcdr8we6shock pipe begin detect economy finger great u...bostrom1yyx6wvgvr3deg70dvgsfwulgzurnz8kcwsna8a...0xcad3e647570e7f168aee49bbda543824c6dc6f47a06e...{'pub_key': 'A1VGj0IPB2PAI0ZW25CScr//U/jJkxlDA...eyJwdWJfa2V5IjoiQTFWR2owSVBCMlBBSTBaVzI1Q1Njci...[eacf9cccca46c86697ff8c414e227c0289cd2596bbfe6...[3fd71696db46abd392c10bd55ed9641d5819920f7cb5e...
430000john16514110443QmUCtjvizRdrdoF6e5VQRN5pgUB4D1wafwFzTsTjt2zPoY0xa88f6812e62e6dbae520c8cc9bf2fbe68418f7cf0xcd8696cdafd3388c6ca8a8062d3cf038dfca1129d559...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037ycosmos1yhrmy9l027gsa342wwxmua0pfel2c24etgmzqrair video reflect suggest own skate spray mapl...bostrom1yhrmy9l027gsa342wwxmua0pfel2c24egm037y...0x58b5e9de07036ab4e5f2f4b185d3f0a684aca66e4678...{'pub_key': 'AlWQq+xr7W2FW77LivQdpCQ/G8zmRucoE...eyJwdWJfa2V5IjoiQWxXUXEreHI3VzJGVzc3TGl2UWRwQ1...[e312e24f6ba1900bf48ad582159c77ff88a8048d00434...[2389fa1c8f9edc9c945c480bd244203a383cee8908b52...
\n
" + "text/plain": " amount nickname avatar \\\n0 33000 john16517597490 Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF \n1 33000 john16517597490 Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF \n2 36000 john16517597491 QmPwSc85Jmiw4mTS4esQNnPRwHgiXDFSVqPX7Dquv67L61 \n3 26000 john16517597492 QmWdMd8DxpakrEidFnKqFgZwSNcBuVYVYMzvKNE82C7ZQw \n4 31000 john16517597493 QmaEcQYeQ6TzsoFmF54MU6p3RmUv22zfzv5jNhdRPDcV3g \n\n ethereum_address \\\n0 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb \n1 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb \n2 0xd4401c790797baff16eb3d65502dd8cb6758ddb5 \n3 0xc834f631039eba3e7fede0b3bee5f7b3aabcdc1f \n4 0x9a2fcf7df51f24a72631694ba64745cbc511d4d3 \n\n ethereum_private_key \\\n0 0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530... \n1 0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530... \n2 0x7271c13a0847eecb082b5efc35987ff972b944d084b1... \n3 0xf3a8658346c3888bdc236ccdd07532996eebbd299fa5... \n4 0x683ab3cc400219f889b0ff07a8157d8065f856df6019... \n\n bostrom_address \\\n0 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z \n1 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z \n2 bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5 \n3 bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9 \n4 bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6 \n\n cosmos_address \\\n0 terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9 \n1 terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9 \n2 osmo1uxa2sxtv7npaj6863fez5ccv2qfwszf29kft4p \n3 terra12rwwttemkn7w3xanpqtu05euzn2nsjzfn3rj9z \n4 terra15xdumxh2xyx5trteh689pkjkf3vkc0eqhxq4ra \n\n cosmos_seed \\\n0 wheel saddle egg habit ribbon chase pilot focu... \n1 wheel saddle egg habit ribbon chase pilot focu... \n2 math escape slow grab honey ginger cage canoe ... \n3 kangaroo sport welcome kangaroo digital retrea... \n4 poverty glass bid buyer pass morning vanish ri... \n\n message \\\n0 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z... \n1 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z... \n2 bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5... \n3 bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9... \n4 bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6... \n\n ethereum_message_signature \\\n0 0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50... \n1 0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50... \n2 0x98f805ceef6fbc3e185beb0bc25e03070da3997aad9f... \n3 0xc611b87310ee2d1a2cf66626afeb0c05cd9361db397f... \n4 0x64b80d0ae3e755e5ff94ac37f3d04c6254a104a6c178... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028... \n1 {'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028... \n2 {'pub_key': 'AlgnuX3+tvoZEEbXKTuGpW/mQbSNBmoxB... \n3 {'pub_key': 'AkSMmBe8/3Z/x3FQDHdA0HmPC6gSS/VqI... \n4 {'pub_key': 'Aqn4lUPTAD2ZiH2ncmLQBvUhxlnaxOmj+... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX... \n1 eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX... \n2 eyJwdWJfa2V5IjoiQWxnbnVYMyt0dm9aRUViWEtUdUdwVy... \n3 eyJwdWJfa2V5IjoiQWtTTW1CZTgvM1oveDNGUURIZEEwSG... \n4 eyJwdWJfa2V5IjoiQXFuNGxVUFRBRDJaaUgybmNtTFFCdl... \n\n ethereum_proof \\\n0 [7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349... \n1 [7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349... \n2 [da1f10a4786db051f14e7036d366179ea44979e4e434b... \n3 [2aa552a7021fc58abe81a3ecb586a774280bc8fd5ec45... \n4 [5b762b4b88c7e19883546c11d83858cc7462925fdbb5f... \n\n cosmos_proof \n0 [337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12... \n1 [337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12... \n2 [ecce50b48369ad2087983352a8338d81fd15aaa78a3c3... \n3 [eebba466aa32657b543e235662293878a16080b4268d9... \n4 [7350ba83595c6019a8df9d828592fa842ed525e36e5c3... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
033000john16517597490Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF0xb13349fc01611fb3d5eaa220ce20d7935503bfdb0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59zterra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9wheel saddle egg habit ribbon chase pilot focu...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z...0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50...{'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028...eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX...[7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349...[337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12...
133000john16517597490Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF0xb13349fc01611fb3d5eaa220ce20d7935503bfdb0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59zterra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9wheel saddle egg habit ribbon chase pilot focu...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z...0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50...{'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028...eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX...[7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349...[337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12...
236000john16517597491QmPwSc85Jmiw4mTS4esQNnPRwHgiXDFSVqPX7Dquv67L610xd4401c790797baff16eb3d65502dd8cb6758ddb50x7271c13a0847eecb082b5efc35987ff972b944d084b1...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5osmo1uxa2sxtv7npaj6863fez5ccv2qfwszf29kft4pmath escape slow grab honey ginger cage canoe ...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5...0x98f805ceef6fbc3e185beb0bc25e03070da3997aad9f...{'pub_key': 'AlgnuX3+tvoZEEbXKTuGpW/mQbSNBmoxB...eyJwdWJfa2V5IjoiQWxnbnVYMyt0dm9aRUViWEtUdUdwVy...[da1f10a4786db051f14e7036d366179ea44979e4e434b...[ecce50b48369ad2087983352a8338d81fd15aaa78a3c3...
326000john16517597492QmWdMd8DxpakrEidFnKqFgZwSNcBuVYVYMzvKNE82C7ZQw0xc834f631039eba3e7fede0b3bee5f7b3aabcdc1f0xf3a8658346c3888bdc236ccdd07532996eebbd299fa5...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9terra12rwwttemkn7w3xanpqtu05euzn2nsjzfn3rj9zkangaroo sport welcome kangaroo digital retrea...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9...0xc611b87310ee2d1a2cf66626afeb0c05cd9361db397f...{'pub_key': 'AkSMmBe8/3Z/x3FQDHdA0HmPC6gSS/VqI...eyJwdWJfa2V5IjoiQWtTTW1CZTgvM1oveDNGUURIZEEwSG...[2aa552a7021fc58abe81a3ecb586a774280bc8fd5ec45...[eebba466aa32657b543e235662293878a16080b4268d9...
431000john16517597493QmaEcQYeQ6TzsoFmF54MU6p3RmUv22zfzv5jNhdRPDcV3g0x9a2fcf7df51f24a72631694ba64745cbc511d4d30x683ab3cc400219f889b0ff07a8157d8065f856df6019...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6terra15xdumxh2xyx5trteh689pkjkf3vkc0eqhxq4rapoverty glass bid buyer pass morning vanish ri...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6...0x64b80d0ae3e755e5ff94ac37f3d04c6254a104a6c178...{'pub_key': 'Aqn4lUPTAD2ZiH2ncmLQBvUhxlnaxOmj+...eyJwdWJfa2V5IjoiQXFuNGxVUFRBRDJaaUgybmNtTFFCdl...[5b762b4b88c7e19883546c11d83858cc7462925fdbb5f...[7350ba83595c6019a8df9d828592fa842ed525e36e5c3...
\n
" }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -1556,7 +1554,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "outputs": [], "source": [ "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", @@ -1584,15 +1582,15 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Name subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", - "Avatar subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n", - "Proof subgraph contract address: bostrom1qwlgtx52gsdu7dtp0cekka5zehdl0uj3fhp9acg325fvgs8jdzksa7wx60\n" + "Name subgraph contract address: bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza\n", + "Avatar subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", + "Proof subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n" ] } ], @@ -1644,13 +1642,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Passport contract address: bostrom18v47nqmhvejx3vc498pantg8vr435xa0rt6x0m6kzhp6yuqmcp8syatwkd\n" + "Passport contract address: bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf\n" ] } ], @@ -1687,7 +1685,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "outputs": [], "source": [ "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", @@ -1722,13 +1720,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Treasury contract address: bostrom1xsmqvl8lqr2uwl50aetu0572rss9hrza5kddpfj9ky3jq80fv2tssevu8p\n" + "Treasury contract address: bostrom1nwp0ynjv84wxysf2f5ctvysl6dpm8ngm70hss6jeqt8q7e7u345s7fdeev\n" ] } ], @@ -1767,13 +1765,13 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom14rse3e7rkc3qt7drmlulwlkrlzqvh7hv277zv05kyfuwl74udx5sugs6cp\n" + "Gift contract address: bostrom18a0pvw326fydfdat5tzyf4t8lhz0v6fyfaujpeg07fwqkygcxejs7l7gtg\n" ] } ], @@ -1811,7 +1809,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "outputs": [], "source": [ "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", @@ -1845,7 +1843,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "outputs": [ { "name": "stdout", @@ -1856,19 +1854,19 @@ "\n", "coin received\n", "\treceiver: Treasury Contract\n", - "\tamount: 18000000000boot\n", + "\tamount: 55000000000boot\n", "\n", "coin spent\n", "\tspender: Passport Owner Address\n", - "\tamount: 18000000000boot\n", + "\tamount: 55000000000boot\n", "\n", "message from bank bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0 /cosmos.bank.v1beta1.MsgMultiSend\n", "\n", "transfer\n", "\trecipient: Treasury Contract\n", - "\tamount: 18000000000boot\n", - "Gas used: 62,845\n", - "Tx hash: F1CFA2CD18343F891971826C2CD4A702C7C8CFD1B5E7B4FFF3B5B017A7F7A2F0\n" + "\tamount: 55000000000boot\n", + "Gas used: 73,258\n", + "Tx hash: 86B2B41DBDF0F0F7E3D8F73F92F443B5BCF550BC72DD7E7394066459427FD553\n" ] } ], @@ -1890,7 +1888,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "outputs": [ { "name": "stdout", @@ -1910,9 +1908,9 @@ "\towner: Passport Owner Address\n", "\tspender: Gift Contract\n", "\tdenomination: boot\n", - "\tamount: 18,000,000,000\n", - "Gas used: 125,559\n", - "Tx hash: 9E75ECAB2CE7C193A95EE7802C722F0B058A6AC1152E9D36E5020FD50264D5C6\n" + "\tamount: 55,000,000,000\n", + "Gas used: 135,324\n", + "Tx hash: 3A738CC9C42A96E5DFC59919ACA7FD50B8F7027B7C016CD3C49390F51A7576E4\n" ] } ], @@ -1959,7 +1957,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "outputs": [ { "name": "stdout", @@ -1976,9 +1974,9 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: 41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c\n", - "Gas used: 121,440\n", - "Tx hash: DF923569FD8ADB67237A9171F7C83DDDB54FCC0A463CC8FBD4230AC65B713E70\n" + "\tmerkle_root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "Gas used: 131,205\n", + "Tx hash: AEA967908317DCFD2756C39E6389D672FF0019F29FB0A26F45001CA77154121C\n" ] } ], @@ -2011,14 +2009,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom14rse3e7rkc3qt7drmlulwlkrlzqvh7hv277zv05kyfuwl74udx5sugs6cp\n", - "{'data': {'merkle_root': '41aaa12edbc734004495fd8995040aa2526f4cd0c40b58d7304e5f12258a767c'}}\n" + "Gift contract bostrom18a0pvw326fydfdat5tzyf4t8lhz0v6fyfaujpeg07fwqkygcxejs7l7gtg\n", + "{'data': {'merkle_root': 'c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d'}}\n" ] } ], @@ -2058,15 +2056,15 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "outputs": [ { "data": { - "text/plain": " 0%| | 0/134 [00:00 Nickname\n", + "\tNickname -> Passport Owner Address\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tNickname -> Avatar\n", + "\tAvatar -> Nickname\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Name Subgraph Contract\n", - "\treply contract: Avatar Subgraph Contract\n", + "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\towner: bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4\n", - "\ttoken_id: 61\n", - "Gas used: 304,372\n", - "Tx hash: 479D19A1B8A50B1DE60F7F080544708DB4CFB3B69D3955A2BA24DD4854FEB647\n" + "\towner: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", + "\ttoken_id: 17\n", + "Gas used: 440,955\n", + "Tx hash: 62328D0646F7ED41BA9F6EFA2C816B9DD28EA97FFE5EEFC57290F3DA416AE6F6\n" ] } ], @@ -5537,7 +2544,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "outputs": [ { "name": "stdout", @@ -5546,22 +2553,25 @@ "\n", "Events\n", "\n", + "cyberlinks\n", + "\tNickname -> Ethereum Address\n", + "\tEthereum Address -> Nickname\n", + "\tneuron: Proof Subgraph Contract\n", + "\n", + "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Proof Subgraph Contract\n", + "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16514110440\n", - "\taddress: 0x3756069ce10d18b5d23db3295ec59f62909b4032\n", - "Gas used: 218,524\n", - "Tx hash: E346D4F7149646CD741DC5A23E5416AC26FDF110BB1ECBD48ECCF908C2F9C0C5\n" + "\tnickname: john16517597490\n", + "\taddress: 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb\n", + "Gas used: 281,816\n", + "Tx hash: 07B96B6A84ABEE4F26F9F2B9A2223BF589FA22F6E5E2DAB2A8EE514B3744ABB4\n" ] } ], @@ -5577,7 +2587,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "outputs": [ { "name": "stdout", @@ -5586,22 +2596,25 @@ "\n", "Events\n", "\n", + "cyberlinks\n", + "\tNickname -> Cosmos Address\n", + "\tCosmos Address -> Nickname\n", + "\tneuron: Proof Subgraph Contract\n", + "\n", + "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Proof Subgraph Contract\n", + "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16514110440\n", - "\taddress: cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lquj\n", - "Gas used: 221,956\n", - "Tx hash: FC9B1C79E36B1975184F1ECDD5616DD9BFA7B84D1AAD77F58EC3FFE795ADA3FF\n" + "\tnickname: john16517597490\n", + "\taddress: terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9\n", + "Gas used: 285,198\n", + "Tx hash: 6F48F5C93D32EF5C3F0CA1A494D34198BF55E9CA6BE5957EAC32071325591BFA\n" ] } ], @@ -5617,7 +2630,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "outputs": [ { "name": "stdout", @@ -5625,37 +2638,9 @@ "text": [ "\n", "Events\n", - "\n", - "coin received\n", - "\treceiver: bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: Treasury Contract\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\texecute contract: Treasury Contract\n", - "\n", - "message from bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4\n", - "\tsender: Treasury Contract\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: claim\n", - "\toriginal: cosmos16uzvcpnw63wl8g5a5x5q9p2p0l7klgqwa4lquj\n", - "\ttarget: bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4\n", - "\tamount: 389,403\n", - "\t_contract_address: Treasury Contract\n", - "\taction: execute\n", - "\towner: Gift Contract\n", - "Gas used: 396,095\n", - "Tx hash: C8D1C15232ABDAC3B51FD0BE14572D9784C66530BA34C13CFF8A3B7C8FA22A91\n" + "account sequence mismatch, expected 5, got 4: incorrect account sequence\n", + "Gas used: 67,733\n", + "Tx hash: 6EB9BA76D0C7C235D2D249C8347E6603449ABE65E657C2FA1506EA1EFBE06F4A\n" ] } ], @@ -5683,23 +2668,23 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 50000\n", + "Number of tasks: 100000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/50000 [00:00 str:\n", @@ -5888,7 +2873,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "outputs": [ { "data": { @@ -5896,7 +2881,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "0922ab6700ad45e6b5c7bcdbb7c796aa" + "model_id": "f89bd54752e44881bbb742bac1cb2b09" } }, "metadata": {}, @@ -5909,25 +2894,30 @@ "\n", "Events\n", "\n", + "cyberlinks\n", + "\tQmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji -> Nickname\n", + "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", - "\treply contract: Name Subgraph Contract\n", "\treply contract: Avatar Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom16uzvcpnw63wl8g5a5x5q9p2p0l7klgqw7xtnz4\n", + "\tsender: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 61\n", - "Gas used: 306,332\n", - "Tx hash: 3F84A09B27A7A98A389EED1D231C575DEF8B64DED26FFC6B03852177363E36A6\n" + "\ttoken_id: 17\n", + "Gas used: 387,001\n", + "Tx hash: D7FA27D76C9FB6DF503623AD064BEC9E1F79B83036CB56053F855922E12D36B8\n" ] } ], @@ -5966,7 +2956,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "outputs": [ { "data": { @@ -5974,7 +2964,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "0e29f67d923846149becbe50157a183b" + "model_id": "3b9ed9d0b552433c858904b63901ffa2" } }, "metadata": {}, @@ -5987,24 +2977,30 @@ "\n", "Events\n", "\n", + "cyberlinks\n", + "\tcyberhole -> Nickname\n", + "\tNickname -> cyberhole\n", + "\tneuron: Name Subgraph Contract\n", + "\n", + "\tcyberhole -> Avatar\n", + "\tAvatar -> cyberhole\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Name Subgraph Contract\n", - "\treply contract: Avatar Subgraph Contract\n", + "message from bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom1mvuczu56l9c3rsj889ysykumpg4s9v3xgdq66l\n", - "\ttoken_id: 76\n", - "Gas used: 275,513\n", - "Tx hash: F5248DF2DCF529A59B67C3533ECBBDA32F19AD473ECB97CE8AA4DB27BBF723A9\n" + "\tsender: bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5\n", + "\ttoken_id: 101\n", + "Gas used: 392,366\n", + "Tx hash: FB209489737B8CDBB7E642C6ACC55EE894053A2A799F3C5C247050E73267AEEA\n" ] } ], From 58c0b7fa3f0372ba0b46f2f0f8529a6cc42c9cbc Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Thu, 12 May 2022 12:05:52 +0800 Subject: [PATCH 46/69] - Optimize the load test for a large number of addresses --- .../generate_test_data/contract_utils.py | 2 +- ..._and_passport_contracts_load_testing.ipynb | 7391 ++++++++++++++--- 2 files changed, 6334 insertions(+), 1059 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 955594e..5a7cf6b 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -209,7 +209,7 @@ def claim(self, claim_row: pd.Series, network: str = 'ethereum', display_data: b "gift_amount": str(claim_row['amount']), "proof": claim_row[network + "_proof"]}}, contract_address=self.name_dict['Gift Contract'], mnemonic=claim_row['cosmos_seed'], - gas=400000, + gas=500000, display_data=display_data) def release(self, claim_row: pd.Series, network: str = 'ethereum', display_data: bool = False): diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index a190092..92cb183 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -38,24 +38,25 @@ "from multiprocess import Pool\n", "from math import ceil\n", "from dotenv import dotenv_values\n", + "from itertools import chain\n", "\n", "from contract_utils import execute_bash, instantiate_contract, execute_contract_bash, query_contract, get_ipfs_cid_from_str, get_proofs, ContractUtils\n", "\n", "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 200_000\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 100_000\n", - "INITIAL_BALANCE = str(55_000_000_000)\n", + "NUMBER_OF_PARTICIPANTS = 2_000_000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 200_000\n", + "INITIAL_BALANCE = str(110_000_000_000)\n", "COEF_UP = str(13)\n", "COEF_DOWN = str(7)\n", - "TARGET_CLAIM = str(20_000)\n", + "TARGET_CLAIM = str(100_000)\n", + "CLAIM_AMOUNT_LIST = [int(round(20_000 * random.random(), -3)) + 20_000 for _ in range(NUMBER_OF_PARTICIPANTS)]\n", "\n", "NUMBER_OF_THREADS = 100\n", "KEY_PHRASE = 'KEY PHRASE'\n", "NICKNAME_LIST = [f'john{round(time())}{number}' for number in range(NUMBER_OF_PARTICIPANTS)]\n", "AVATAR_CID_LIST = [get_ipfs_cid_from_str(_nickname + '_avatar') for _nickname in NICKNAME_LIST]\n", - "CLAIM_AMOUNT_LIST = [int(round(20_000 * random.random(), -3)) + 20_000 for _ in range(NUMBER_OF_PARTICIPANTS)]\n", "PREFIXES = ['cosmos', 'osmo', 'terra']\n", "\n", "WALLET_ADDRESS = dotenv_values('.env')['WALLET_ADDRESS']\n", @@ -114,17 +115,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 200000\n", + "Number of tasks: 2000000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/200000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
033000john16517597490Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF0xb13349fc01611fb3d5eaa220ce20d7935503bfdb0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59zterra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9wheel saddle egg habit ribbon chase pilot focu...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z...0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50...{'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028...eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX...
136000john16517597491QmPwSc85Jmiw4mTS4esQNnPRwHgiXDFSVqPX7Dquv67L610xd4401c790797baff16eb3d65502dd8cb6758ddb50x7271c13a0847eecb082b5efc35987ff972b944d084b1...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5osmo1uxa2sxtv7npaj6863fez5ccv2qfwszf29kft4pmath escape slow grab honey ginger cage canoe ...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5...0x98f805ceef6fbc3e185beb0bc25e03070da3997aad9f...{'pub_key': 'AlgnuX3+tvoZEEbXKTuGpW/mQbSNBmoxB...eyJwdWJfa2V5IjoiQWxnbnVYMyt0dm9aRUViWEtUdUdwVy...
226000john16517597492QmWdMd8DxpakrEidFnKqFgZwSNcBuVYVYMzvKNE82C7ZQw0xc834f631039eba3e7fede0b3bee5f7b3aabcdc1f0xf3a8658346c3888bdc236ccdd07532996eebbd299fa5...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9terra12rwwttemkn7w3xanpqtu05euzn2nsjzfn3rj9zkangaroo sport welcome kangaroo digital retrea...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9...0xc611b87310ee2d1a2cf66626afeb0c05cd9361db397f...{'pub_key': 'AkSMmBe8/3Z/x3FQDHdA0HmPC6gSS/VqI...eyJwdWJfa2V5IjoiQWtTTW1CZTgvM1oveDNGUURIZEEwSG...
331000john16517597493QmaEcQYeQ6TzsoFmF54MU6p3RmUv22zfzv5jNhdRPDcV3g0x9a2fcf7df51f24a72631694ba64745cbc511d4d30x683ab3cc400219f889b0ff07a8157d8065f856df6019...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6terra15xdumxh2xyx5trteh689pkjkf3vkc0eqhxq4rapoverty glass bid buyer pass morning vanish ri...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6...0x64b80d0ae3e755e5ff94ac37f3d04c6254a104a6c178...{'pub_key': 'Aqn4lUPTAD2ZiH2ncmLQBvUhxlnaxOmj+...eyJwdWJfa2V5IjoiQXFuNGxVUFRBRDJaaUgybmNtTFFCdl...
435000john16517597494QmUbL8BAoJokFQsZg8iycc6rGnAvjNhP5JMaDHjaTzm4bb0xa5528df7d1b90814092ce474869d37cd60a5fdd30xdcfb6e6b6e394536eb037666d5f67a1b10274d620f6a...bostrom1463yk59gkwksn574mrye5v26qrqrqvk7mpsummosmo1463yk59gkwksn574mrye5v26qrqrqvk7sfhlnwinhale sugar segment ethics number blouse dune...bostrom1463yk59gkwksn574mrye5v26qrqrqvk7mpsumm...0x18201d2d41ebf13ed6ec661468db58e1f008945cc79e...{'pub_key': 'Ap41abfiY1qCYZSA+XKU2KhiPW322p0jj...eyJwdWJfa2V5IjoiQXA0MWFiZmlZMXFDWVpTQStYS1UyS2...
\n" + "text/plain": " amount nickname avatar \\\n0 28000 john16521126150 QmZ6SJnBFk2b53Gt2ektwsp7ECWP6km2i27UoKybR1q4GX \n1 25000 john16521126151 QmYmXFtpG48H5E12zTVs1Le979cQgB6QT8KBdx6t1Wf7ms \n2 31000 john16521126152 QmZDhn45Tup8GnUd4LQHfCtF2Hf9frxXHJ5k7Gm4XK6R2J \n3 40000 john16521126153 QmaauStuBTuHUKDveQ5dHsBC4Fo7SZFsgGecXsbwXcoyAh \n4 33000 john16521126154 QmSAUL7hfidipezWxBG9RqCwZaCxmrkQQyHzeqnGQ6zRJv \n\n ethereum_address \\\n0 0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d \n1 0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da \n2 0x802e5043a53b8833353bd97e9be85359d05fa5a1 \n3 0x3b1cf67d050e257a1a05eb17f3c346e131cf3895 \n4 0x107481469e6faf29cafc4f7a13265962b83e4667 \n\n ethereum_private_key \\\n0 0xd7190e045f87b1287efa6ef1198ebbeecf2e9ba95d63... \n1 0xbf32cafd205fde13b5add27e899e6c36e75a85473b6c... \n2 0x5afaa05bffed2385e03a80dd25dd84215c8ee846cbb0... \n3 0x28876dc39babed2bbf212786b3f8adc08195ac967f92... \n4 0x2cf4bf87498e6591a96e2e47fc9035ffba8c86179db6... \n\n bostrom_address \\\n0 bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l \n1 bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z \n2 bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7 \n3 bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev \n4 bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5 \n\n cosmos_address \\\n0 cosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0c \n1 cosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409 \n2 osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2t \n3 cosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8t \n4 osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27p \n\n cosmos_seed \\\n0 head maximum daring merit shoulder toast bone ... \n1 title oval ten able delay target tag orphan go... \n2 peanut thing retreat tool pattern limb pet tub... \n3 raise cruise fancy text enrich tower anxiety s... \n4 seed rebuild sick drive conduct junior soap ca... \n\n message \\\n0 bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l... \n1 bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z... \n2 bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7... \n3 bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev... \n4 bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5... \n\n ethereum_message_signature \\\n0 0x55a59e770124f8a240a6dfe4199167093f32f8c06c93... \n1 0xb13e85182b680b7c10a21eac40f6d17a5eb50835b7b0... \n2 0x3e97255fd5e618a226fbfbd1eb4720447a24e036f054... \n3 0x0cf6b34983d62ad2a3443da27515c232da5c4ed19c41... \n4 0x9c4ee685f2c1a0acfd1c758eee4397492d69037a5642... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A3DPjRBjtIHuj+EleMfBftzEf+Uotgj6s... \n1 {'pub_key': 'A1lHzZScCEr+Hi1QGv/M0qxxjl4B/YEP8... \n2 {'pub_key': 'A8bfcVcw0FBGkuWqFiLv8GzPnohSt2zPT... \n3 {'pub_key': 'AsglEaBaS1Y7UAel9r7T0jPhrEeXfAdI/... \n4 {'pub_key': 'A9BSJkUEagjdxipS01BCl00tCidT4yJWA... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQTNEUGpSQmp0SUh1aitFbGVNZkJmdH... \n1 eyJwdWJfa2V5IjoiQTFsSHpaU2NDRXIrSGkxUUd2L00wcX... \n2 eyJwdWJfa2V5IjoiQThiZmNWY3cwRkJHa3VXcUZpTHY4R3... \n3 eyJwdWJfa2V5IjoiQXNnbEVhQmFTMVk3VUFlbDlyN1Qwal... \n4 eyJwdWJfa2V5IjoiQTlCU0prVUVhZ2pkeGlwUzAxQkNsMD... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
028000john16521126150QmZ6SJnBFk2b53Gt2ektwsp7ECWP6km2i27UoKybR1q4GX0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d0xd7190e045f87b1287efa6ef1198ebbeecf2e9ba95d63...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3lcosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0chead maximum daring merit shoulder toast bone ...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l...0x55a59e770124f8a240a6dfe4199167093f32f8c06c93...{'pub_key': 'A3DPjRBjtIHuj+EleMfBftzEf+Uotgj6s...eyJwdWJfa2V5IjoiQTNEUGpSQmp0SUh1aitFbGVNZkJmdH...
125000john16521126151QmYmXFtpG48H5E12zTVs1Le979cQgB6QT8KBdx6t1Wf7ms0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da0xbf32cafd205fde13b5add27e899e6c36e75a85473b6c...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3zcosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409title oval ten able delay target tag orphan go...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z...0xb13e85182b680b7c10a21eac40f6d17a5eb50835b7b0...{'pub_key': 'A1lHzZScCEr+Hi1QGv/M0qxxjl4B/YEP8...eyJwdWJfa2V5IjoiQTFsSHpaU2NDRXIrSGkxUUd2L00wcX...
231000john16521126152QmZDhn45Tup8GnUd4LQHfCtF2Hf9frxXHJ5k7Gm4XK6R2J0x802e5043a53b8833353bd97e9be85359d05fa5a10x5afaa05bffed2385e03a80dd25dd84215c8ee846cbb0...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2tpeanut thing retreat tool pattern limb pet tub...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7...0x3e97255fd5e618a226fbfbd1eb4720447a24e036f054...{'pub_key': 'A8bfcVcw0FBGkuWqFiLv8GzPnohSt2zPT...eyJwdWJfa2V5IjoiQThiZmNWY3cwRkJHa3VXcUZpTHY4R3...
340000john16521126153QmaauStuBTuHUKDveQ5dHsBC4Fo7SZFsgGecXsbwXcoyAh0x3b1cf67d050e257a1a05eb17f3c346e131cf38950x28876dc39babed2bbf212786b3f8adc08195ac967f92...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyevcosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8traise cruise fancy text enrich tower anxiety s...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev...0x0cf6b34983d62ad2a3443da27515c232da5c4ed19c41...{'pub_key': 'AsglEaBaS1Y7UAel9r7T0jPhrEeXfAdI/...eyJwdWJfa2V5IjoiQXNnbEVhQmFTMVk3VUFlbDlyN1Qwal...
433000john16521126154QmSAUL7hfidipezWxBG9RqCwZaCxmrkQQyHzeqnGQ6zRJv0x107481469e6faf29cafc4f7a13265962b83e46670x2cf4bf87498e6591a96e2e47fc9035ffba8c86179db6...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27pseed rebuild sick drive conduct junior soap ca...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5...0x9c4ee685f2c1a0acfd1c758eee4397492d69037a5642...{'pub_key': 'A9BSJkUEagjdxipS01BCl00tCidT4yJWA...eyJwdWJfa2V5IjoiQTlCU0prVUVhZ2pkeGlwUzAxQkNsMD...
\n
" }, "execution_count": 2, "metadata": {}, @@ -222,11 +223,16 @@ "execution_count": 3, "outputs": [], "source": [ - "root_source_list = [{'address': _item[0],\n", - " 'amount': str(_item[1])} for _item in claims_df[['ethereum_address', 'amount']].values.tolist()]+ \\\n", - " [{'address': _item[0],\n", - " 'amount': str(_item[1])} for _item in claims_df[['cosmos_address', 'amount']].values.tolist()]\n", - "root_source_list.append({'address': '0xF2749114FeaAD68854E01C8eE762C7170532FdfD'.lower(), 'amount': '10000000'})\n", + "root_source_list_ethereum = \\\n", + " [{'address': _item[0],\n", + " 'amount': str(_item[1])}\n", + " for _item in claims_df.loc[:, ['ethereum_address', 'amount']].values.tolist()]\n", + "root_source_list_cosmos = \\\n", + " [{'address': _item[0],\n", + " 'amount': str(_item[1])}\n", + " for _item in claims_df.loc[:, ['cosmos_address', 'amount']].values.tolist()]\n", + "root_source_list = list(chain.from_iterable(zip(root_source_list_ethereum, root_source_list_cosmos)))\n", + "\n", "with open(ROOT_SOURCE_FILE_NAME, 'w') as outfile:\n", " outfile.write(str(root_source_list).replace(\"'\", '\"'))" ], @@ -237,6 +243,29 @@ } } }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "data": { + "text/plain": "[{'address': '0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d', 'amount': '28000'},\n {'address': 'cosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0c',\n 'amount': '28000'},\n {'address': '0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da', 'amount': '25000'},\n {'address': 'cosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409',\n 'amount': '25000'},\n {'address': '0x802e5043a53b8833353bd97e9be85359d05fa5a1', 'amount': '31000'},\n {'address': 'osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2t', 'amount': '31000'},\n {'address': '0x3b1cf67d050e257a1a05eb17f3c346e131cf3895', 'amount': '40000'},\n {'address': 'cosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8t',\n 'amount': '40000'},\n {'address': '0x107481469e6faf29cafc4f7a13265962b83e4667', 'amount': '33000'},\n {'address': 'osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27p', 'amount': '33000'},\n {'address': '0x02de46973caa7617965aed6a94dd105d5d2143b8', 'amount': '37000'},\n {'address': 'osmo108l2v6y2cqhtezff5fnytrkuuf2wyhxr3pg7kv', 'amount': '37000'},\n {'address': '0x723e0d8428401fd69df8d083798c127b3f2b6bfd', 'amount': '31000'},\n {'address': 'terra1jg7raggv8lmmg5f3z9s8jnwarz36t4e7nzs55y',\n 'amount': '31000'},\n {'address': '0x2bf22ce7dd4ae60055e6bfd83a040676dd9449e7', 'amount': '34000'},\n {'address': 'terra12cqstlmdtmcs8xt9fpzk5z0y2wpe69kr5ztx99',\n 'amount': '34000'},\n {'address': '0xaf7357a9b622d7c988a8ebd60642205593484dea', 'amount': '33000'},\n {'address': 'terra1ers3rza08vpkpe0c2alzfsla24qqe4egxdwq88',\n 'amount': '33000'},\n {'address': '0x1ce9aab78a4d15eac9d4264fe116ce31bfb4b6e8', 'amount': '35000'},\n {'address': 'cosmos1urllwdtekqk497hslza5ss2a8uefay8j2xc6mt',\n 'amount': '35000'},\n {'address': '0xcb78ba5aa86f0b79b34be9008c8515a3c24e28ed', 'amount': '39000'},\n {'address': 'cosmos1rwssvf6x9dk399gu8na9xx6wz4t0h9ezjk8al0',\n 'amount': '39000'},\n {'address': '0xea7e3753cfc2ac98d952dbc494fecc1c2b94138b', 'amount': '31000'},\n {'address': 'cosmos1ym0rlf63p4sjy8qwv6ypnc6apw4stnnl5ncnx5',\n 'amount': '31000'},\n {'address': '0x299698eac24d058e469580043d641721e1626bc8', 'amount': '37000'},\n {'address': 'osmo1eajyse3nhlv8g5hutdz8qz3v8ef6m7kskp97nf', 'amount': '37000'},\n {'address': '0xb8ba42056f46f3d2f57fd112124eab3bf3ed6c9f', 'amount': '25000'},\n {'address': 'cosmos1tw4zara55m3t9f0jfmeldh83m6f90px2c0hdyj',\n 'amount': '25000'},\n {'address': '0xb6dd0f00c58c41010ccecebf7e85be8ade316b84', 'amount': '39000'},\n {'address': 'terra1ml0zry8k84w7fujs2gr9kaxhw24sflgkwzkqfs',\n 'amount': '39000'},\n {'address': '0x8e4955d181428e8049cdfb51ef6619520952e4a9', 'amount': '40000'},\n {'address': 'osmo1w9ppmfffrl3ywra6m22nez20843my7e7xkmygm', 'amount': '40000'},\n {'address': '0xd386d402803b3d30a1fe91ab12bf4ecf36fafada', 'amount': '38000'},\n {'address': 'osmo1f6m06mxg6z8pkjwy4m55l7q22a8hu3m5420h4l', 'amount': '38000'},\n {'address': '0x2bac0e44f0b304afd7559f47a76ba7e507e5cb72', 'amount': '29000'},\n {'address': 'terra155u8hrc9x7hfqx8tp7qfyavnw8z2uj2acz8x69',\n 'amount': '29000'},\n {'address': '0x861ea6f9ab29ce0624ae6cee3c4d58793676f8e4', 'amount': '32000'},\n {'address': 'terra1wgudpmkpa4ptevxp7mdnz46ngvtj547sll69zk',\n 'amount': '32000'},\n {'address': '0xcba7f88b74d6495932e7009809d35033ef34abaa', 'amount': '39000'},\n {'address': 'osmo19w6805p95y75zztsuhndtful6shzm5f8qe6vd5', 'amount': '39000'},\n {'address': '0x4594e1719f51353415b71c144b082e67d2de4619', 'amount': '36000'},\n {'address': 'osmo1lr3h5wq0d50t35nweyw0c9cezz502e9pw365a3', 'amount': '36000'},\n {'address': '0x060f8da021c1258c66fc4883760360dbf9331100', 'amount': '38000'},\n {'address': 'osmo1efwnvr73gj46al5d623l3vjewwj33sjhxrasus', 'amount': '38000'},\n {'address': '0x0660bd6701348029b9d9aec04dd19817809e71a2', 'amount': '39000'},\n {'address': 'terra1q8pw9tw50ac2teugutjpsaxtgkzyha3qv325xp',\n 'amount': '39000'},\n {'address': '0x4db4d263d9f4f9a13a1f8898fa192f5103fe47be', 'amount': '39000'},\n {'address': 'osmo1lpkuy0ycz7hcsyqsf6uyz63veenzgqglmqcuky', 'amount': '39000'},\n {'address': '0xe02147f2179be1e84875f7ec373ff46cfc150a3a', 'amount': '31000'},\n {'address': 'osmo14rzpmcyqgyssn3zpqpn23a6alqz7phxjc2lhjs', 'amount': '31000'},\n {'address': '0x4207c0165a56f01c19424ec9197cc8cf4c564854', 'amount': '23000'},\n {'address': 'terra1m8tswj7jekj69m4e3m2axv2q6sq6fp6xyacyk2',\n 'amount': '23000'},\n {'address': '0xb9ea27bb2418d9d55316d6074c322aa4a578d117', 'amount': '22000'},\n {'address': 'cosmos16sm0lwpvc7z3kuu4tzy2nxl29dy7jhet2lt0hl',\n 'amount': '22000'},\n {'address': '0xa61df7d7f1278ee1c43613bd5296479782241860', 'amount': '25000'},\n {'address': 'terra13jzajd0xr9r3wp7q06cf6j30nrlyy9pjtmp5du',\n 'amount': '25000'},\n {'address': '0x5288ec5c18d1b5ebd3cf1826a405f2c8103ec43f', 'amount': '23000'},\n {'address': 'cosmos1phjvdeyl3vk6ep3nstel42sps23zn8e5sfvpvn',\n 'amount': '23000'},\n {'address': '0x6e81adf77129c32255a9ea4073feebe5ea5e53bc', 'amount': '27000'},\n {'address': 'osmo1f6g4cg0wsvtkmx9q72f666300cvr9yrcr55ggu', 'amount': '27000'},\n {'address': '0x826354e61e6b81ba8d7fead90bf5608c0a440c7f', 'amount': '32000'},\n {'address': 'osmo13449jard8dccu0vgr48gy0dpzl8mdxrpfg9rva', 'amount': '32000'},\n {'address': '0x9ec5ce6aec17213caf2ecd0f876c77ff67e3fdf4', 'amount': '25000'},\n {'address': 'cosmos1mqgd7je05jwgqece6p36z6l3x9ueyjhu8dmrdr',\n 'amount': '25000'},\n {'address': '0xd646b7d45873cdfd65660f72e161ecb8f1a6d325', 'amount': '21000'},\n {'address': 'osmo1kdxlnp5fn84cqsesewtajsta59w79qs4ws4xec', 'amount': '21000'},\n {'address': '0x0318c1306c896ad94fb6d81a44dcfbe757d94691', 'amount': '21000'},\n {'address': 'terra1jpjj3z6d3fvjc43pup4y8ta68tsv6z9v2uqzyc',\n 'amount': '21000'},\n {'address': '0x913df70bb70ca640b01df5da2d33c1275a293df5', 'amount': '26000'},\n {'address': 'cosmos10ecp706266r4tcrpslc28kjvy53ks5hts5fq3p',\n 'amount': '26000'},\n {'address': '0x461907bdcd9d5c0749b66c35f8ed134aa56740e7', 'amount': '25000'},\n {'address': 'terra18ejzpukf6wlapd6zyqdk6yzukxg7j2adu57tgk',\n 'amount': '25000'},\n {'address': '0xc46644ab656e4069d45bdf67198de42ec29556dc', 'amount': '32000'},\n {'address': 'terra1ymrzvsznuj4r62q500l76egccx92r8s2egwdrl',\n 'amount': '32000'},\n {'address': '0xc6114fe87db2a809f066d3c1da855da15d7c56a6', 'amount': '22000'},\n {'address': 'terra1mzfzk677truyz0j928dyqecjappdp877prj64d',\n 'amount': '22000'},\n {'address': '0x583d63453534ef07cc38659e6e9a63cad9f06f6c', 'amount': '32000'},\n {'address': 'osmo1mhptlcm09lgxj3t66u0lp8p20srqp2pcgtm79q', 'amount': '32000'},\n {'address': '0x0fc3877e4c37f3d8de189e250fb42b76ea2303ca', 'amount': '21000'},\n {'address': 'osmo1accapdtrjuym4exud32lr8p4nlggjwjtksuud4', 'amount': '21000'},\n {'address': '0xf4db998b81891051e7c619001a74b3391dde636f', 'amount': '29000'},\n {'address': 'osmo1ra7h6pu6mg9vhnkuc7e26ypn84z568trkq8zaw', 'amount': '29000'},\n {'address': '0x2ea4faf3c867a64813cf050eb2cdce47fce31b32', 'amount': '29000'},\n {'address': 'cosmos1f7pydzlswt9uu0yykcckm3m29pcdzgfneqt2fh',\n 'amount': '29000'},\n {'address': '0x1e849a9ee445820b228f5c393fe6bd5dc93a33f1', 'amount': '33000'},\n {'address': 'terra16p8qw5eanjdwuszvw3t7f5ka27s0qffm7fdh5f',\n 'amount': '33000'},\n {'address': '0x183047d621e4028eba3138d719bf16b71fb754b1', 'amount': '22000'},\n {'address': 'osmo1wg5qm2u5nemqqd4j3rtrprxes9a0u4nln3h9hv', 'amount': '22000'},\n {'address': '0x009d88c5e7dd480c2e4e1555b1ab121bae0c8475', 'amount': '32000'},\n {'address': 'cosmos1sfz8gzam2nc80ua543s3lec29pl8atlzx382mw',\n 'amount': '32000'},\n {'address': '0x14c765516efb896384c952e6c8700d34688c4bdb', 'amount': '39000'},\n {'address': 'osmo1ynen3ajmfc26dt0k9evsmrpv6rshj7c734hk7w', 'amount': '39000'},\n {'address': '0x8a523afceb4d0707fdba84d216d8f5762ae329a0', 'amount': '39000'},\n {'address': 'terra1m8v83glefkac9fzpxtkprs3ul6pm36j7cjdea2',\n 'amount': '39000'},\n {'address': '0x807c060b667cba58b0a5c6cb8590a1aaf6a9aada', 'amount': '40000'},\n {'address': 'osmo1t49ufdja5dvglcszkryev7z0t4urplrjdpfpwl', 'amount': '40000'},\n {'address': '0xa876890d6c3e060dbc694253de698c1cae44757b', 'amount': '29000'},\n {'address': 'osmo196jfz7njjztrpzelcqyy6gl08ewwqs36rlu6wv', 'amount': '29000'},\n {'address': '0xdf05dd6371f5f1af733043df0bffdd0dd10abaaa', 'amount': '20000'},\n {'address': 'cosmos1mhhfpd6lszxl5aevl7lulv5rcd20cv4hyg4sk2',\n 'amount': '20000'},\n {'address': '0x96c93551a50c3a5684adf09db51666a91a5f1773', 'amount': '21000'},\n {'address': 'cosmos1s2pxnh2wj3cauh28rvhusfnpdluwqplj498dkg',\n 'amount': '21000'},\n {'address': '0xb68d531585c4838697032bfca490ad1978903d21', 'amount': '21000'},\n {'address': 'terra1hjrcqtpudf0r4dvq0vclcdkmdkwammmjxethuh',\n 'amount': '21000'},\n {'address': '0x1d56199fc52c909c64318ee8c5a2701e2af150ca', 'amount': '21000'},\n {'address': 'osmo16rd58u8fj38wuhk7v6kmedafgn2qveqzxa0axk', 'amount': '21000'},\n {'address': '0xc8db653585c6e5ff1dfdf6f3691f215ebf15757c', 'amount': '36000'},\n {'address': 'terra1hx7h822fe6nlc259gqdc3hzqq3m0xmhe0cuzp6',\n 'amount': '36000'},\n {'address': '0x51324f08fc23df9748f76484af1f8055e68a0566', 'amount': '40000'},\n {'address': 'osmo14awfd9hyg8e0nvfx9s8jz28y7styf0qc295f7q', 'amount': '40000'},\n {'address': '0x92869cfe944bbf40d082d68e7a1020a622bffb71', 'amount': '38000'},\n {'address': 'terra1xq64gtq6wrpswq7gg6twdn0qfpnwsmunvuc6lx',\n 'amount': '38000'},\n {'address': '0x035da7feb32372989943e0f7ae83ac6a8552f924', 'amount': '37000'},\n {'address': 'terra1crgk46ncqvdafe9ht8tm9zkhpwex7yfmfl45t7',\n 'amount': '37000'},\n {'address': '0xc351cd1cee9ef1f8f4d9da2fb713b75da1a88d0a', 'amount': '22000'},\n {'address': 'osmo1akyjl3mzuta4n2r47pqtvnanvlr9l6rpyqvnjw', 'amount': '22000'},\n {'address': '0x088423e67a1704fd1cf0362e2b92dbcd12bf8c1d', 'amount': '27000'},\n {'address': 'osmo1yku4y6tu4a0fly4wmuzkxmkctdya5p70c9xgrc', 'amount': '27000'},\n {'address': '0x008e36a4e1c3056650ca7a82b6a713e60e409863', 'amount': '36000'},\n {'address': 'cosmos1w2w7xp2w5f2zflh5zmpkqnsnfvfcfw6ecuepfu',\n 'amount': '36000'},\n {'address': '0xd4cebeef617f26092f49f7e7392ded0005729aaa', 'amount': '34000'},\n {'address': 'terra1jtnfh9ed5uhrxfjzmr6ml3mhaqtm6hlysdcvgf',\n 'amount': '34000'},\n {'address': '0x073656c3734a3cc801ab0969e0630e7240320fc9', 'amount': '35000'},\n {'address': 'cosmos1rxtaaa6r8nuztarr5nwmytn7e2gg87j05ll2w9',\n 'amount': '35000'},\n {'address': '0x2e74412753298a53d43bf881e17731c673ebf9cb', 'amount': '33000'},\n {'address': 'osmo1l5qnqyfc0qyrlaf28j4jfwtam2g5jfeqesjx36', 'amount': '33000'},\n {'address': '0xb6707a64751916d91d96b4ec098979fb6b5bcc6c', 'amount': '29000'},\n {'address': 'cosmos1qp6mm2s62m5c9llm3f6x6w8dye6mewl6dq92ws',\n 'amount': '29000'},\n {'address': '0xcbb0303017b9d9442d1fed074f9c6540fbb43824', 'amount': '34000'},\n {'address': 'osmo1vw09vpk07d84r0yjzt4qf690y0943lfaf0qdt6', 'amount': '34000'},\n {'address': '0xf4e1361d8c05d4a6e448458806096a0828973c5a', 'amount': '32000'},\n {'address': 'cosmos14hngfqt07adjpu7gw7j028h2shhz4cgs7vwsq7',\n 'amount': '32000'},\n {'address': '0x724925e51f46231bf4a1a7bdc4d1121a6578003f', 'amount': '30000'},\n {'address': 'osmo1jhvuhc6ug25m47asv0wjlf5v5tch47kakyttpy', 'amount': '30000'},\n {'address': '0x87187fab6df7a0c7e7986c9a25635aa3cb36bef8', 'amount': '34000'},\n {'address': 'terra1na78h02r9s8jf9ewfgc74c55ll55d24n3plqdr',\n 'amount': '34000'},\n {'address': '0xb7aaefae6924d82a779bb339e7355b9de253e0e6', 'amount': '32000'},\n {'address': 'osmo1m4thcdpptdrgzt96vgpwlz9rr08rfn7lm32kyl', 'amount': '32000'},\n {'address': '0x3483a906d8cfd7a71166426cbb96e7ea35cc8e69', 'amount': '33000'},\n {'address': 'osmo1e7ugdx2zdnjr723ewcnlatzp3aj4903ukk5cv7', 'amount': '33000'},\n {'address': '0xd33f604250031e5b9b71551f48999dda220b6d48', 'amount': '25000'},\n {'address': 'terra1trlwh7zxc9x9wegygmltjfdc7kaw3pdh4js9t5',\n 'amount': '25000'},\n {'address': '0x508b2e0d20cdf5f2e4f61b5b4a14801ee191dbf7', 'amount': '27000'},\n {'address': 'cosmos1up7ahr8e503yd68v7dcz3tdms26lfmyfc6v42s',\n 'amount': '27000'},\n {'address': '0xe49d4fa0409c03b1339ec8d2459ba31ed4687b77', 'amount': '35000'},\n {'address': 'cosmos1qc9l02jzgzenwg22jvp2p8eq8axq3mnx6nl3ky',\n 'amount': '35000'},\n {'address': '0xee567f635de45ea5d83664fc6b5b60f608eb3f2e', 'amount': '28000'},\n {'address': 'terra1rnlucrw7uepqn8752msrgpl9fnt09376n64dc3',\n 'amount': '28000'},\n {'address': '0x3487920ac36ff29e0b1b2c36ac5265a2174a301f', 'amount': '38000'},\n {'address': 'osmo1jhvqpcrv9nkphgn9vefeg8j2sxx3ur2exfd827', 'amount': '38000'},\n {'address': '0x0580996a28583980b50c325672caae99bf24d6dc', 'amount': '31000'},\n {'address': 'osmo15vz5pyfmkxqpr6ef3kqfgfafmdzxl5g270dukt', 'amount': '31000'},\n {'address': '0xc1b9cdd80229d5cafb4fd655d05cdc3e320ec21e', 'amount': '27000'},\n {'address': 'osmo1288t7tczyq5dfsxxhw00j5vdyat6rp6mh9qqp6', 'amount': '27000'},\n {'address': '0x4c1b5c42e5b37d3c5e1263a7ab55601cfff39c41', 'amount': '24000'},\n {'address': 'cosmos1ftktn7ylny42f60xtw7q0ynm7czjggq7lh39e6',\n 'amount': '24000'},\n {'address': '0xaaad99aeaad4f347753178bad6374dfbf78aefe4', 'amount': '25000'},\n {'address': 'terra1jqgdejrgw3gyjhge6h7v7xke0jktacluh3sga3',\n 'amount': '25000'},\n {'address': '0x428a3ec1c520d80efb7fb562a6da70d19e027aed', 'amount': '31000'},\n {'address': 'osmo10pjg3pmgwxxqnrs8sgmy4sfjsuxsnt5nhppn3z', 'amount': '31000'},\n {'address': '0x7010c46022fd28bc49a96f9a77b3ded62f292fb5', 'amount': '40000'},\n {'address': 'osmo1aecs2jxyfcg658wlmm00fkd6hg6l3700y04l5l', 'amount': '40000'},\n {'address': '0x10eaa79156699bb908c5203779e37e3f1a40dd11', 'amount': '40000'},\n {'address': 'cosmos19v0ypdujdw5emtzvsxv0qm6g4xqylyy8knuy0v',\n 'amount': '40000'},\n {'address': '0xdf3757c171b51fb8aa87fa40403d2afb66b006c8', 'amount': '26000'},\n {'address': 'osmo1hpzups62mjh6x3a5fmy0r4wq8y9pas52df3ds2', 'amount': '26000'},\n {'address': '0x132a0c4878443a77fa35e0f84aa701e4619d0404', 'amount': '23000'},\n {'address': 'osmo1udlkck6kc83v5c6ps4f7n982tzs8ph2jh73cvc', 'amount': '23000'},\n {'address': '0x9898f6dc70e11699338c8f814d3cc181c04f2707', 'amount': '21000'},\n {'address': 'osmo1f80d6l2a9xcwhpeylm6pjwem0zjkg7spzx8ax6', 'amount': '21000'},\n {'address': '0x69edb4780f65181c6eada7603cb6255fd3d50b4f', 'amount': '40000'},\n {'address': 'cosmos1m278une08hts7qjf9j53ahx9t4qne8zrw8ucu4',\n 'amount': '40000'},\n {'address': '0x9f1b95c221da536557999c1bf8eaccf7333bee0b', 'amount': '36000'},\n {'address': 'cosmos1rygdyvvxmwfyc8jvyzmggqaamwugvh2krva95t',\n 'amount': '36000'},\n {'address': '0x04566914271daf804a1ba1866f2f6e3b54838675', 'amount': '36000'},\n {'address': 'osmo1j5hqfgfanaqnwfwk6sxk5z9s5nun7e7275vsjf', 'amount': '36000'},\n {'address': '0xc45d0a9e1e335e8f3534291c87492d96f0ad0b9b', 'amount': '37000'},\n {'address': 'cosmos187l8ul0tyfc059z9j9nuj3cukr79e7fa0g3v7x',\n 'amount': '37000'},\n {'address': '0xdec00c9f0a116900a1c210e384b2915ee6f53777', 'amount': '30000'},\n {'address': 'cosmos18n5lhtsazn6x2wqys3nkujg3euw0njf690mv9a',\n 'amount': '30000'},\n {'address': '0x8dd2f48e85e5fae44c0a6f5d156bdae5fe059013', 'amount': '30000'},\n {'address': 'cosmos189zahp2ktjf8htt6qnslcy684fjghdqruhpp7f',\n 'amount': '30000'},\n {'address': '0xc713aa7ab2baab85f42c80827e6d0599eead59d9', 'amount': '30000'},\n {'address': 'cosmos1wdgqtyh5cpy3jqxvdluaczftuq7xezfdeydjgl',\n 'amount': '30000'},\n {'address': '0xd9e6c99697e00744bfacf190a3fcb44a17228cd9', 'amount': '31000'},\n {'address': 'osmo1m9xfgdhgxfvkg7q0y8hmnm6mmhckj5fas6ladg', 'amount': '31000'},\n {'address': '0x980e0c6bd6e1708ff2bc1d36208d9370240e28c1', 'amount': '21000'},\n {'address': 'cosmos1l7uj00glk54pv0ngc0t86dxqxwj9crtkgpzqce',\n 'amount': '21000'},\n {'address': '0x6492ce63a99579bcfe5f210515767d9e8af6aa3e', 'amount': '37000'},\n {'address': 'osmo1d6fqdemud2qve4vt8x2hp5g2qw82y2s2s0fu6j', 'amount': '37000'},\n {'address': '0x3402020a6f9f7551bb8b52cd870f06485acae0f3', 'amount': '26000'},\n {'address': 'terra1sl28hvuumlamktjy7sdumunq4j8hws6teavask',\n 'amount': '26000'},\n {'address': '0xa382e05fc89e5f895601310b2afea35d7d6ddbc2', 'amount': '34000'},\n {'address': 'osmo13d2yfggwuwaxc04qx7s4kzs2ctqn84pzg0yj85', 'amount': '34000'},\n {'address': '0x003991a846776b5572bbbf89999fbddcd782b26a', 'amount': '29000'},\n {'address': 'cosmos1mwthp3gncsmusltt7d9a5zfhdkv0xzjcsay7py',\n 'amount': '29000'},\n {'address': '0x14b83f9aac2163e28191cdba5ac648cd902d6631', 'amount': '31000'},\n {'address': 'osmo1e243ynzknwegnval4ypk4hwht9ekqs6dtc0fhk', 'amount': '31000'},\n {'address': '0xfbe484fea817eb22afdb803a10ae94906fb42c62', 'amount': '20000'},\n {'address': 'terra1nr9z2ed40taz0228khecwkyh2te88gqduhnwcw',\n 'amount': '20000'},\n {'address': '0x97f3586233de7b54b2a1dcd67aa0dcf8c165b2f2', 'amount': '24000'},\n {'address': 'osmo1fq2zxuuj2wep2fnpjelnfk9ltemaekwl8xjdkg', 'amount': '24000'},\n {'address': '0x0a7e603bbe6655693685ee13a2cc74cbc67c9b02', 'amount': '30000'},\n {'address': 'cosmos1c97vq005m89zr5ptrz6w5vdnuj5sguymqwq0lj',\n 'amount': '30000'},\n {'address': '0xb658089b9e8feab4dce7bf189321618f712f023b', 'amount': '31000'},\n {'address': 'cosmos1hxlt46h4vkcz96899n756tur34c0w09cegc7z2',\n 'amount': '31000'},\n {'address': '0x1610993d1bfaf89cd85d2006d3514db4877cbbe2', 'amount': '33000'},\n {'address': 'terra1v7jfz80hr5kpalnqq4as7zqmyen9f0d67066dh',\n 'amount': '33000'},\n {'address': '0x2b6151c5371d0c08bd0ea0027bc37df44ff2f257', 'amount': '27000'},\n {'address': 'cosmos162l0jxk73jhev4cy0ep559xashvuxw4vn6cg38',\n 'amount': '27000'},\n {'address': '0x1c148e183262144f73a23e3494511978aede03c0', 'amount': '34000'},\n {'address': 'terra1ykky5wz550krthh4h79rwgx6v77rtjckzmzyys',\n 'amount': '34000'},\n {'address': '0x395044cfbd3aa745095066f1906d4cb11180bcd4', 'amount': '22000'},\n {'address': 'terra1uvd8ue7vg7xztrss8dflewc2krsvggsfuftg23',\n 'amount': '22000'},\n {'address': '0x83acd9a1b8b2f0942987d0adbd78ce8834919684', 'amount': '25000'},\n {'address': 'osmo1usut02lwdkuj9kl7prdc8d05jmvy4xuxetd6ev', 'amount': '25000'},\n {'address': '0xed40bf445495739297a348defe6b22032eddc457', 'amount': '32000'},\n {'address': 'osmo1gsnukdyt6q2qcqqegmrgfylgskv2q2m0zgrrq3', 'amount': '32000'},\n {'address': '0x44a30d81f9342563e387c2db81f529b10045f3c1', 'amount': '23000'},\n {'address': 'cosmos1kt6ss4uxgjjt92meq6vgcfpdj8yg3m9v330chx',\n 'amount': '23000'},\n {'address': '0x73092f77250de97adb136c6733501694f29897b3', 'amount': '37000'},\n {'address': 'cosmos1hnguypk6ys72mxtvzq20pvln9yd70w7383s6mn',\n 'amount': '37000'},\n {'address': '0x94c13e21282ac6acc1c716f72a3d80849c53b19d', 'amount': '36000'},\n {'address': 'osmo1l59usmxnwdk054acstjx9ruk6hufeh7uucp2y4', 'amount': '36000'},\n {'address': '0x3a62723e1bb71edd0d441f7fbbdd545b6d4ea8ab', 'amount': '30000'},\n {'address': 'osmo1ppc948mmdm8zs0wgfl6p8dkc7u79x8s8694fq9', 'amount': '30000'},\n {'address': '0x79963c5441ddbcdb4748217e1c3fbf51c2ed4cbb', 'amount': '27000'},\n {'address': 'osmo1wh42zsj6pss3at8tvs9ygc99rwzc2pet6x5e02', 'amount': '27000'},\n {'address': '0x8c62602e00e751962be51802b69fe1c47506b65d', 'amount': '22000'},\n {'address': 'terra18qw4xvadrguszsrs4skk0urgrjns8ezc4cusdd',\n 'amount': '22000'},\n {'address': '0xb2c3360e69ae04b99be67e9bcaad9d98f144eb62', 'amount': '36000'},\n {'address': 'osmo19z64tjmv730hsstzy8dv39wncngfwyhmr47mu8', 'amount': '36000'},\n {'address': '0x4417a9b1d206073d8bb2ca6a43326cc93ea3aa8b', 'amount': '35000'},\n {'address': 'osmo10ftwmrzdudgf90rllqf6y4vfur7hyu3c8q93x4', 'amount': '35000'},\n {'address': '0xe513549dd02ade9e9a76ed1a38c54330aba41acd', 'amount': '33000'},\n {'address': 'cosmos1xtl6fhavh7qe84g5mfukplz8czja5xj73jpyzl',\n 'amount': '33000'},\n {'address': '0x0ef02d3e28907ec642b202478ccbb7848c581365', 'amount': '24000'},\n {'address': 'cosmos1zqdrl7646p2hg5uawr0uft2hp2zy9cl5320ett',\n 'amount': '24000'},\n {'address': '0x1ff65c704d5feaf5de0a856c80d9124ff086d12f', 'amount': '30000'},\n {'address': 'osmo1rj2ku0g3g48njlvxnf7r02kvr2394jk6xgyaw5', 'amount': '30000'},\n {'address': '0x4ff19450a88912e5f51791ef49b8342f520b6e43', 'amount': '36000'},\n {'address': 'osmo1jh4exx454mqlxfrs9uemfmf9fpgs6p6pagwg3s', 'amount': '36000'},\n {'address': '0x3dee5e00149c236ca7979dd40b1a0c8bebb207f0', 'amount': '26000'},\n {'address': 'osmo15yg95cuf2c2w5pkmca8ftne3x834f37n0tyxms', 'amount': '26000'},\n {'address': '0x3c2e0815ea5b6cc9de4756c5cf680010f109ac9b', 'amount': '21000'},\n {'address': 'cosmos1n38s345xgkvfuhr47fju2kypv4stzcq5rjpynp',\n 'amount': '21000'},\n {'address': '0x3d2d0b5035983bc0a8dbf97b2ed1a1c8c974b664', 'amount': '20000'},\n {'address': 'osmo1ns4kl5u0qeyalsyuft3aypyt2qq4vnautascuw', 'amount': '20000'},\n {'address': '0xf5a77bf95fd3b56c29c3c70d9589a5d8943b7959', 'amount': '20000'},\n {'address': 'terra13h4ruzqejps9jhjxt9aynnq504l85xwyjc3kfq',\n 'amount': '20000'},\n {'address': '0x536ae2be2780e0dddf3537710208d3d231fdefd4', 'amount': '28000'},\n {'address': 'terra1xfpnjk9sq2pt6xg9w249qh7yh0zjasr37d32dn',\n 'amount': '28000'},\n {'address': '0x7e7e007c949f088a85216cb9aaeb569f5615fed1', 'amount': '38000'},\n {'address': 'terra16yqj7eyyn8r5nf7wk8kc3q47e9nvxtldjl6saq',\n 'amount': '38000'},\n {'address': '0xf4fb233e6ef17052e23e65d5a80d317a31fe60fc', 'amount': '25000'},\n {'address': 'cosmos1uuxvqzhufsq7ktyywczl3fphcgllgntpeuxuw2',\n 'amount': '25000'},\n {'address': '0x33646fb77b651d82f7ab04652d9a5f1d767e718f', 'amount': '23000'},\n {'address': 'osmo1kpvetsy8alhww0x7mmm72e5zh5jk7xcrke8hak', 'amount': '23000'},\n {'address': '0x36042189fe3a7615e791af1072bdcda71d27f25f', 'amount': '30000'},\n {'address': 'osmo10wexnytw09vaftdns4u7cs5l7hw5v0cdg8yuyg', 'amount': '30000'},\n {'address': '0x4648ed2f8a801f964d12df1f4991a7a6e508b7a1', 'amount': '32000'},\n {'address': 'terra1qr6r5lm8qlekccfpvzdqnfayp52jwx8gn685um',\n 'amount': '32000'},\n {'address': '0xb15f9481cdfca32bf895743daf6a9d02d700884e', 'amount': '35000'},\n {'address': 'terra13e3tcvgqzkq0qrq99uyv4rdap9yd0hmttesard',\n 'amount': '35000'},\n {'address': '0x5da7fdc49c0cb8709a36f10c17edd86ca93b6eb6', 'amount': '28000'},\n {'address': 'terra1dzpvg6p938hq3pdqdxh8qw7dk5a9hqmrjv3aa5',\n 'amount': '28000'},\n {'address': '0xe9e807cf4634508c4996c5fb10fadc172d1b4c59', 'amount': '40000'},\n {'address': 'osmo1zp2753v25w8272xx7eekduvxdyzhjxjmla9uyc', 'amount': '40000'},\n {'address': '0xa87f2c41b21d2683ed58c592c787bf19ac454f9c', 'amount': '31000'},\n {'address': 'osmo1ktscr5yquz92pfj4cep3ex9n2raa7vxvd94462', 'amount': '31000'},\n {'address': '0x8f75953e6fcfa99ab21ec386e7b3d16eeda0b1cd', 'amount': '22000'},\n {'address': 'osmo1yt0gv02hctpfxnjs9nzujs7y54ww7sd94t0hn6', 'amount': '22000'},\n {'address': '0xef84ff27f222ec162a786bd00962f05c89b6676c', 'amount': '39000'},\n {'address': 'terra143thgevdns4vwtvwpg2sxmrn04lsdjrqednwz5',\n 'amount': '39000'},\n {'address': '0x17942b1fc43147f88e6be3aa9f7b43aba2cddaa6', 'amount': '23000'},\n {'address': 'terra19hvu420ntm95u6gww4untuvhfcldm9g0k844sm',\n 'amount': '23000'},\n {'address': '0xb5914f3630584913f0b70a5dec36a2f61132634c', 'amount': '33000'},\n {'address': 'cosmos1myta6p6fq0apemvqttcva38e8ls2pj9mdwnup0',\n 'amount': '33000'},\n {'address': '0x991dd6d7e10fa495397033a39341d7ba6820442e', 'amount': '26000'},\n {'address': 'osmo147qdprqrf764pgjr7e8yzvh78clv5lc7mf6x3u', 'amount': '26000'},\n {'address': '0x09ed0cb8f8d6d4df95da6d804e338540b9c099aa', 'amount': '34000'},\n {'address': 'cosmos1hhwhz4v23a7xl7429l9g45ce583l8me6ly5aju',\n 'amount': '34000'},\n {'address': '0x914049b92b4f259cfc1f964c06dd467788c49f50', 'amount': '23000'},\n {'address': 'cosmos19pqzn5nv6g8ktjvschpsh8e2fj55wf3g5k3der',\n 'amount': '23000'},\n {'address': '0x1e9ebe4e55660407c3ae8fa1f614dbb5e480e3d2', 'amount': '37000'},\n {'address': 'terra1sdqwewn2je8lgy46rfh37vgvh4j7tnkklz6uu2',\n 'amount': '37000'},\n {'address': '0xe332bb4e705df867e25ad9a2c7f40fb8d9bcfa1d', 'amount': '31000'},\n {'address': 'cosmos1syw9tduy9ydafctacp6ysv8x4xuqhc7pduwgp4',\n 'amount': '31000'},\n {'address': '0x3e2045caa651e202a27626efc42c72d2775223cb', 'amount': '34000'},\n {'address': 'osmo1se79jq4pz9r6w86wggwd3add9745wk8347tpld', 'amount': '34000'},\n {'address': '0x7f78ed283b30bcd2ae2ace55e4227b2597919019', 'amount': '24000'},\n {'address': 'cosmos1meupy9yqm9ufpkyjhr6t6zg4c2wsql53ua8l2d',\n 'amount': '24000'},\n {'address': '0xc25ef688ed9a7ba2f96c1bbb725fe3698d173729', 'amount': '31000'},\n {'address': 'osmo1t7w52lshmwnwrlq0c80cyhtqeydscqnhnygpht', 'amount': '31000'},\n {'address': '0x91bb9e2ef7afeae55ea02c9e8e0caf1f3384d8c5', 'amount': '26000'},\n {'address': 'terra1xvlrfnja8gzwym9dddldxn2zdfvunanrcga2ma',\n 'amount': '26000'},\n {'address': '0x6d51e2d88326f9d331d9bfe9816a99cb14fb53ae', 'amount': '31000'},\n {'address': 'terra186mrlf2fxz69967w8hgvytuuuetr4ede5dp980',\n 'amount': '31000'},\n {'address': '0x4e7d3d873374e899ce922f12cb8e55bf86133eaa', 'amount': '25000'},\n {'address': 'cosmos10ewhsav9u5hy7knpph89g82ltw354lmnp7algn',\n 'amount': '25000'},\n {'address': '0xa686d9ca158867b7dad72f62d2b5174c266fed00', 'amount': '26000'},\n {'address': 'cosmos1utztzpemglp5tg9scccy30t9j7h0lt6pmu0vpl',\n 'amount': '26000'},\n {'address': '0x3cf3e1101ab7b46b55cdbd414a0e585e70cfb7d5', 'amount': '31000'},\n {'address': 'cosmos17tf3t3zp5h8vzuma7ztxs0czf9vawsp2l6acy3',\n 'amount': '31000'},\n {'address': '0x0d0a300db4d2eb225b5206fdea3d4f7a57203d91', 'amount': '34000'},\n {'address': 'cosmos1f7vamk7tfl97l3laypz0hpd4arvue09wssew7y',\n 'amount': '34000'},\n {'address': '0x57e3578a754d53493ff2fa619a6314221ed1e7f5', 'amount': '39000'},\n {'address': 'terra185slspflpmmjahglq2p4war9cjmamu782kxwdx',\n 'amount': '39000'},\n {'address': '0xc568ca05d68ea60022e8fb238f13de6b0e50f643', 'amount': '35000'},\n {'address': 'cosmos1djrktdqjpl686fcv6l3kh3kx93hk6nhuvdwjwq',\n 'amount': '35000'},\n {'address': '0xcf684b6d1ab5bbaf789fe1736e00dde141440fac', 'amount': '27000'},\n {'address': 'terra1yr7pu6xy6md0jckmdyy0u8shn43smxhjhy72nf',\n 'amount': '27000'},\n {'address': '0xbee307bcc69f69c19ceb5c0b624ca0963335f77c', 'amount': '39000'},\n {'address': 'cosmos1ar4dw6yu4w23t6sw35k6m60ny3vqpha58hwtvy',\n 'amount': '39000'},\n {'address': '0x0886ca6486d0ef60a8da5e46ad0f9be26fa39c0f', 'amount': '36000'},\n {'address': 'osmo1tes57e782vurv7lc35nk5exepkr5dmgewm6esk', 'amount': '36000'},\n {'address': '0xbd791203e6d89c8c1c9010f3cc105875340f69b7', 'amount': '33000'},\n {'address': 'cosmos1vuh4q00xv7kf8660cw5m9fjsnjn32xvd5qrvm5',\n 'amount': '33000'},\n {'address': '0xd30b198fbf3cdfdb46dce343b36cb83d511b55ab', 'amount': '39000'},\n {'address': 'terra1tqylvnk48gxpc9qxa27xdppv43j5e0d8acuepw',\n 'amount': '39000'},\n {'address': '0x89f3d13705304cb8689ea1240c66799ef181f87b', 'amount': '33000'},\n {'address': 'terra1dwzsl2ra9dzdn3ycqnzafarztjlwhpj9tnhjhc',\n 'amount': '33000'},\n {'address': '0x314e94e76a60ab473eb20f189205be9bfaacb06a', 'amount': '37000'},\n {'address': 'terra1gugt3yrelgxz4re7ah0rg7un8rk0ktrz0ds0ma',\n 'amount': '37000'},\n {'address': '0x55740f3d9aeca4551853c8c8480bb083430a8b47', 'amount': '35000'},\n {'address': 'cosmos1l6gfwelufm8e5ydehn848ufymjap8lk7exzt3n',\n 'amount': '35000'},\n {'address': '0xb238ab2a960d998ac5ed2d195e3e4b16d5694038', 'amount': '35000'},\n {'address': 'terra1vnlncl8cw829redpx3xudt68atxf2nquk029ux',\n 'amount': '35000'},\n {'address': '0xf4a40d61abbece8a98a4898ef42fd3b1cf27aa61', 'amount': '24000'},\n {'address': 'osmo1777p23vm3l89q43h08pzwl80j6rjncnhenrvqt', 'amount': '24000'},\n {'address': '0xfbd9c0dcb96a505ba56db15370f160a444178735', 'amount': '31000'},\n {'address': 'cosmos1py9x0ku93sg0vkwv3f0wggflumpywy3sxl5qgr',\n 'amount': '31000'},\n {'address': '0x2115bbd6e87411718863fc324f82c35c142d7f91', 'amount': '22000'},\n {'address': 'osmo1mpjy2zcecndetvrk3a539jgcdj5nvw7s4l2nhm', 'amount': '22000'},\n {'address': '0xd846dcbf90d54e63be1354345e01db7cadb8ce61', 'amount': '24000'},\n {'address': 'cosmos1jue6we229cte2vtyly43gr43ghf622926mp4d2',\n 'amount': '24000'},\n {'address': '0x8a21040096a73672ca1dfbb871c2f0f4280f0867', 'amount': '35000'},\n {'address': 'cosmos1cc2phnghnf2v46zt2zwx50046aupq0t2d45tl9',\n 'amount': '35000'},\n {'address': '0xb36527a081cffcf8fc626229a9b3afa0b0438ba3', 'amount': '35000'},\n {'address': 'osmo15yknccqnjy5nfesx2y6n2tm47sgvcagdp99f04', 'amount': '35000'},\n {'address': '0xeb30a8561ab280ba6360e4fa4dc935113e00dc26', 'amount': '22000'},\n {'address': 'cosmos1t8g6ajlp458pev2lxevazxgnaf7e6sh6hn0lrr',\n 'amount': '22000'},\n {'address': '0xf2c9ff9af981035a21ba86f8a9c947a7563265e8', 'amount': '27000'},\n {'address': 'osmo1sa3pd5h2c50ynyp8z2srn837qpga0skd77y9wu', 'amount': '27000'},\n {'address': '0xdd3608c014e89d4840974a9bc342beb79f93df4e', 'amount': '36000'},\n {'address': 'osmo15aww3ffak3k3genvakyp95yxc9rn5779pzldu5', 'amount': '36000'},\n {'address': '0x3829b802dc765caff0f289d6ff0318082b9554cf', 'amount': '37000'},\n {'address': 'cosmos14q6hjmqevejcwljx23y97xd7rjf539zlhdtcqz',\n 'amount': '37000'},\n {'address': '0xd7dd2b9fb32e90b06c521d3ca260e54ccf18fcb6', 'amount': '29000'},\n {'address': 'terra13jm6l3d02su92xfrat0yn9hgg9vnktkndteurs',\n 'amount': '29000'},\n {'address': '0xb15c5e1ffdd4f291211a2e4f228d5f81fd974a1d', 'amount': '30000'},\n {'address': 'cosmos1dqwvqdstxc99azfaale54nry8attsgdjnmxkej',\n 'amount': '30000'},\n {'address': '0x2c117e32b335d93a9c04595236b8e9b60627d3f5', 'amount': '27000'},\n {'address': 'cosmos1ujfamvs3fezyry54n2nm0cfus3h4k23yadjnh2',\n 'amount': '27000'},\n {'address': '0xcec4aee035d4cfc43e42c6dfbb341fd2d7f3c56e', 'amount': '26000'},\n {'address': 'osmo1puf5d2pyknnrqqnsp2zcqqwn4kqjhq64a9qgnw', 'amount': '26000'},\n {'address': '0x8348de919263f84a70513759e305ceeff1efa92d', 'amount': '20000'},\n {'address': 'osmo1ljcuf3cjuwa7d50z2hexh3qysmukr0cvzgq6en', 'amount': '20000'},\n {'address': '0xff693bb1dd447d07612be8291fbc93aa3c266b11', 'amount': '33000'},\n {'address': 'osmo1kyse5tx494adgulrc8pfq36hzr7ctgtmrsd80m', 'amount': '33000'},\n {'address': '0x9dbd22349adc315a0478464766665e460a887bb7', 'amount': '28000'},\n {'address': 'osmo1d6spjz98vye3ywl5c5c3hllngrs930grcpaz3p', 'amount': '28000'},\n {'address': '0xba58e7da0ac0354498fa8f57fc57cd91f2100297', 'amount': '26000'},\n {'address': 'osmo1jtxv3npna0mx8ug3448yn3w5kdhe7dkty766l0', 'amount': '26000'},\n {'address': '0x885a510eac4568590b9a1ce7366d612c5f2e9b71', 'amount': '23000'},\n {'address': 'cosmos1knt5z0ldrk066nf766fryndns49c0j6yas9x2d',\n 'amount': '23000'},\n {'address': '0xf5fbe20218584295dcfdc4f3cadd2e500e85653a', 'amount': '38000'},\n {'address': 'cosmos1dwfjphvkt22gah9rrwtyj8s29wjtmm0c9876nf',\n 'amount': '38000'},\n {'address': '0x21ffac3d8aca6937c0ce98872f67c08932503199', 'amount': '22000'},\n {'address': 'osmo1na0rnvq9nu7ud3lfhqjz9hnwp4u50zxxemfsqr', 'amount': '22000'},\n {'address': '0x774965796e6d9c5d7c4dffdb672b779fe672248f', 'amount': '32000'},\n {'address': 'cosmos1fzmsyvvwg7k9nmnsefm2qrcmp4h3ex8yvry8nz',\n 'amount': '32000'},\n {'address': '0x06e56f218636950424f06a3ec16058540e3bace8', 'amount': '35000'},\n {'address': 'osmo1jq78te2x54njgxt5f8zlhjx7gwm8gh4eyhgu47', 'amount': '35000'},\n {'address': '0xf858ecb527b93abba330a0e688516a1f1a32d3e9', 'amount': '36000'},\n {'address': 'terra1m8s80nm0srg0lyakrsfltu4hsdqdxqmp7d9kx0',\n 'amount': '36000'},\n {'address': '0x595938d2c587d6b78811e3ddc49458a629d5a455', 'amount': '38000'},\n {'address': 'cosmos1pj0nwtdhehvp8lvydfrrz6ajwlarcg2tdtwka2',\n 'amount': '38000'},\n {'address': '0x985534ac1b76119077568069747157613b69f7b1', 'amount': '32000'},\n {'address': 'osmo1smf2e8nm3zhhqu2nqx2fu8d7grzp0l5wep463q', 'amount': '32000'},\n {'address': '0x1bb0bb19d9ef68144840ce81c6b07138b7683018', 'amount': '34000'},\n {'address': 'cosmos1l6zuxndgw47g6d0z2c0g6gpz4sxqqkt8lxf9wz',\n 'amount': '34000'},\n {'address': '0x23ebc31d1f52a49e64c00ae6a31b0b29d0b59633', 'amount': '37000'},\n {'address': 'cosmos1eqe8put45qcq4jjd33uvegx5yejrarl7yk8g9z',\n 'amount': '37000'},\n {'address': '0x2e69cbe60ea4b1f1569cf97ad62054f4810e4af6', 'amount': '28000'},\n {'address': 'terra1kpvvypqvwufegc9w5xhw5fs9cm4zn9z9y7vxaa',\n 'amount': '28000'},\n {'address': '0xee4e04f4c46febe6b4749e2609f1cea010d3fbe2', 'amount': '26000'},\n {'address': 'osmo1dkcglw2vqw902gzxy25hhmnj9qulzwcmcdtw63', 'amount': '26000'},\n {'address': '0xcf6173e71755c1d86bf2097ae12eb47269d0a3d6', 'amount': '29000'},\n {'address': 'osmo1xzwdujmqlqs0qvpd4387fkrn08x0kuvwwr96ar', 'amount': '29000'},\n {'address': '0x56b0adeb977757b5b19e6e732e21a43c6ad763bd', 'amount': '35000'},\n {'address': 'cosmos12650e5d2t7akkzk9uqnrp6d62c93pj6s7lh2ex',\n 'amount': '35000'},\n {'address': '0x4ce40e3be0a1279b0511f8a0ca22afcc3cfc901d', 'amount': '23000'},\n {'address': 'terra13ztgxstgjckmzn6rl93ze8r5reyp3ftd0rfvc4',\n 'amount': '23000'},\n {'address': '0xf3d7b35dd3f98cf16bdc2954ed0ab8b00ddf8ee1', 'amount': '22000'},\n {'address': 'terra1dyjgd8k20anu6gzwm0j3dla2anuwkdfl34gg0c',\n 'amount': '22000'},\n {'address': '0xb6ec66f924ed1e9be2ee7d722cb8708af17740df', 'amount': '24000'},\n {'address': 'cosmos1zg6zxhsvat2qgdn2m3g8g6h2wksr8lm3atmn0j',\n 'amount': '24000'},\n {'address': '0xef2473204d230a15341ed57ba3b6f86c90ed8af6', 'amount': '23000'},\n {'address': 'osmo1479p9sw8ws9dfn27exzd0sycj53fr4ydwh8m22', 'amount': '23000'},\n {'address': '0x4b65cbfcf520613ce5f31de65aa739cef89e743d', 'amount': '27000'},\n {'address': 'terra1x8w4ywav9jf6uw2fqkq3aap2vw7kccrrfls46n',\n 'amount': '27000'},\n {'address': '0xbea801659ff28d741c23cea8ddd02cec20393cf6', 'amount': '33000'},\n {'address': 'osmo1qd0j70frt0j676k2k6vp652ru9ttc20nvpv805', 'amount': '33000'},\n {'address': '0xc1154f8986aa1d3e89c3821341ddb367399e8c27', 'amount': '37000'},\n {'address': 'terra1ss7wfx05k4uyd2nnpgf4mmy2m9qr9qkrdsk8d5',\n 'amount': '37000'},\n {'address': '0xec5e0ec57b5b5473e78df7f2dd7bf9e143b71d84', 'amount': '31000'},\n {'address': 'cosmos1lhzjg702cemly2nux3zr4ccacgmpekzkkhyz2t',\n 'amount': '31000'},\n {'address': '0x2fc507c16d5dd138a5b3fe87871f51678f6f8d1b', 'amount': '30000'},\n {'address': 'osmo1zmtr6qq652wchtra6p7ktd5fysd5rswzu00vfn', 'amount': '30000'},\n {'address': '0x64a04ec9067230b8b4656a94431947becd27c7ba', 'amount': '34000'},\n {'address': 'terra1wlpf7qrgdj8zpeu7at4kh96r6jtlcezleuvuv7',\n 'amount': '34000'},\n {'address': '0x1ad457ed3ba35d84972f4eeec8621dd18759cff8', 'amount': '24000'},\n {'address': 'terra1me2xa8x38h5rzalr7ltty5gzasvgy8nlq5tzml',\n 'amount': '24000'},\n {'address': '0x7ff14140820206a2bb08ef9d5d91467a30406595', 'amount': '23000'},\n {'address': 'osmo1luhp6nd8c84kgd6w3g8ku0cqgxf85kx3rgz7fw', 'amount': '23000'},\n {'address': '0x950d86276b52989def97d11f4ef7e45492ccadc1', 'amount': '23000'},\n {'address': 'osmo18chdsna72r7gz6tf9smrxrfr8smrsmnzuwm0qv', 'amount': '23000'},\n {'address': '0x40e16f5b013819a5db6752bd5e68e4a7720d2f27', 'amount': '25000'},\n {'address': 'cosmos1hxdkna25pcst4dnc8ahwd3hcqzrkee38qalpj0',\n 'amount': '25000'},\n {'address': '0x678f6b95027a6cf3703d9954d8587a3dce5baa96', 'amount': '29000'},\n {'address': 'cosmos1h45vr7a88kqf2uaqg6l9um3xwsww804teez32y',\n 'amount': '29000'},\n {'address': '0xa3f052dd425c065685a6f7b629b67de6bd836e63', 'amount': '25000'},\n {'address': 'cosmos1jsuz82vk5ea7sgqzqk66c3gspsr2hxxnvz942p',\n 'amount': '25000'},\n {'address': '0xbffb60e59cbcdb1763b86cb5e7a414d885f9f19d', 'amount': '34000'},\n {'address': 'cosmos19d9s2z9ynt57hesvry326csukasay0v60pt9u0',\n 'amount': '34000'},\n {'address': '0x7980a2dded75d84d41355a254320165ff91a4ac7', 'amount': '33000'},\n {'address': 'osmo17lnytsjz46el8q2w3mpgrwp3c7da0wj0fwrwdq', 'amount': '33000'},\n {'address': '0x31f17f5c19b4c1d8391d61333464ae2f9930979b', 'amount': '26000'},\n {'address': 'cosmos1e85x3cwvfwdra92a6pc8acqf9tqsm655h0zwpn',\n 'amount': '26000'},\n {'address': '0xf1cd8f523f3ff2d07b20529110a2fae54784da7f', 'amount': '26000'},\n {'address': 'osmo1xdymuvmjn5lcqj6cnu5g4gkxg6w4845th4tpaq', 'amount': '26000'},\n {'address': '0x1d4c920c982b89db6cfc3e86292594e407dbad0b', 'amount': '38000'},\n {'address': 'terra1yg5tntjdezk50lj4ww7g66uvn2smy89rky0cms',\n 'amount': '38000'},\n {'address': '0x76e2606d8e63c655ed1241dbf1f5c78ec2938f96', 'amount': '26000'},\n {'address': 'osmo1mnkrjl4k5m86ryp5l0facw3wtyyzv2mwnxy594', 'amount': '26000'},\n {'address': '0xb26a771a2509679b13199a7f45532fa64d63aca0', 'amount': '34000'},\n {'address': 'cosmos149ster04xytegxwjpuhsq5t50a66yprc09efe3',\n 'amount': '34000'},\n {'address': '0xaf766bd1607a389c6de677e7e87e30381f48dbe3', 'amount': '24000'},\n {'address': 'terra1h3gd7fzgk8chnkkf39wklvt6f7p55tjrg0ejnj',\n 'amount': '24000'},\n {'address': '0xf05b6b220786ae324b320bc4d353c82f91b6e525', 'amount': '31000'},\n {'address': 'cosmos16nlus5elu366xvsnxxv5f8jrkaw7s2558skgt5',\n 'amount': '31000'},\n {'address': '0x624eb1db5e0b9f36d3ab058e8d0692a978e71777', 'amount': '33000'},\n {'address': 'cosmos1uvfuwdez3tddwypnnx8xzpupem6mt9eacyvdyj',\n 'amount': '33000'},\n {'address': '0x875c58873bc80e4c0eeb2c7aa2da83600687cfd5', 'amount': '23000'},\n {'address': 'terra1w84s4875r6309kumd5vp3gk8gzcgzdnkgau8l6',\n 'amount': '23000'},\n {'address': '0xd855c7926a33872a9da8d9d3570218205adcd30d', 'amount': '35000'},\n {'address': 'cosmos1hpyfv5jq4dajuzxx5u8x7pj6neqhh7ls9gh760',\n 'amount': '35000'},\n {'address': '0xfbad548c2d0bff41d4608aecf2d157ab8116be3d', 'amount': '38000'},\n {'address': 'terra10n8ekhyu78uu0lukmyarw2nrxfgxfs2f3h9ndz',\n 'amount': '38000'},\n {'address': '0x947db0e8b57c25d2cc322b1f461e4e236fd215a2', 'amount': '26000'},\n {'address': 'osmo1w2jaqrpca3e9afqww468ergrs4gt6uz6tpghxk', 'amount': '26000'},\n {'address': '0x7d5fbc71c37cc6d7944dc6300e1e179d24da5883', 'amount': '40000'},\n {'address': 'terra1q3cuwppwwe4wdgtwr2ta6gzf2trswwtk4gncs4',\n 'amount': '40000'},\n {'address': '0x0f49bed3a51effa2378307b6cad095b2858d46fe', 'amount': '32000'},\n {'address': 'terra1sc8nrz0mjs5607yfw53duj8vart687n9saqa0s',\n 'amount': '32000'},\n {'address': '0xb7567c7c14f5b190a66d77d59497cb4a72a3ca60', 'amount': '35000'},\n {'address': 'terra1587u0gmq35em78tjq3knguqlual9t3xy2flzwh',\n 'amount': '35000'},\n {'address': '0x2344a0deccb24c4d30ae6b570d3bf702f41465ef', 'amount': '27000'},\n {'address': 'terra1l8lrqnvd7upt7jgf4nwkg7gxayn0ee45klhs0t',\n 'amount': '27000'},\n {'address': '0x2eeecaefb774f480f815591fab719c37bee70bce', 'amount': '21000'},\n {'address': 'terra1gdnxmtpwrxx0aayd2yurw6xs29c4se544t90j4',\n 'amount': '21000'},\n {'address': '0xede57416285e5ae0156de917b0126192aa203813', 'amount': '39000'},\n {'address': 'terra1at9ruald2qv9wqryw2crlrpddwrh6szpzac9qz',\n 'amount': '39000'},\n {'address': '0x13e13cf0515828708e395f5493334362419f71d5', 'amount': '40000'},\n {'address': 'osmo1u69w0lj6au57g2kllsg8a9mj6k4q2xmnre8rh3', 'amount': '40000'},\n {'address': '0x6fd6176e0fe084633f588e0e487be87d01f8477f', 'amount': '21000'},\n {'address': 'terra1jyczuhl6smydhkcjdu67vmap2luefvdd2594dq',\n 'amount': '21000'},\n {'address': '0x51be114666c634cef04fd7f76b3e33348b9f6c78', 'amount': '26000'},\n {'address': 'osmo19745k5rsrpg8066s6v3vlfmxv8p6trlah7m964', 'amount': '26000'},\n {'address': '0x079d4416a532fe81cd0c950f79515a9420a0cf5a', 'amount': '37000'},\n {'address': 'cosmos1kyjxn5qk9wc724m62plm9sqcesf7dchdghd5wp',\n 'amount': '37000'},\n {'address': '0x5f9fcd87e542f951b87110cd65a9203e88a27061', 'amount': '33000'},\n {'address': 'osmo1n7aj74kn4gxtm6dqpz8k6tj38047j6jtvsvv46', 'amount': '33000'},\n {'address': '0xb715b412d36977a26c0613bc9c2c70897922900d', 'amount': '21000'},\n {'address': 'osmo1zp2zel7p63wa0t46nm86dtze2gvke0hvr5qrhz', 'amount': '21000'},\n {'address': '0x53580818dcde664d922135c85823b7203d921e07', 'amount': '24000'},\n {'address': 'osmo1jujuladj4g6yt9gfxe56x6tzpyez2r4mqn9rs7', 'amount': '24000'},\n {'address': '0x98ea78373d9b87f58abe50ce49bf9200c9020e3c', 'amount': '35000'},\n {'address': 'cosmos1rsfzekled2gy3st8vwlvnfkrl9rumze6cpuuy3',\n 'amount': '35000'},\n {'address': '0xa7d101952e308af0f081b5952fcdc841b9a57c95', 'amount': '27000'},\n {'address': 'osmo1hh8zflkhpa4vhfjxflk9p96u7hkqxnvy673084', 'amount': '27000'},\n {'address': '0xbb8f240b00888848876eb114b22250a10233d22c', 'amount': '20000'},\n {'address': 'osmo1ttp5cwf04mxyuv3mtt0zj4f34edm59ezw2j634', 'amount': '20000'},\n {'address': '0x3d29610afcf10534c467fb62e106b199184dc319', 'amount': '37000'},\n {'address': 'osmo1xh9wr7rjnmegjks40yawuf86qmamgg0l578c3l', 'amount': '37000'},\n {'address': '0x59ebd3f35b5feee13c02cdacdd78e65a77d9725a', 'amount': '27000'},\n {'address': 'cosmos130vjsec2j5hqazxra40r67sepevql2qmty2uw4',\n 'amount': '27000'},\n {'address': '0xcc5a72ff2bc5d3ec23ab0f5cd2945de138112a47', 'amount': '22000'},\n {'address': 'terra1ytf7krsc05vx0qm2qfe3u8fk93ajmssxf6dptf',\n 'amount': '22000'},\n {'address': '0xdfab9777ac0a8835ffa927a2f7dc0fa149d2f54d', 'amount': '33000'},\n {'address': 'terra18m4ware3uwgh3t2677qgdayqn6467tfpgkp0y3',\n 'amount': '33000'},\n {'address': '0xa7cdfdca701ff9f0e70449ec0a697ef60e76656b', 'amount': '29000'},\n {'address': 'osmo1c7jfyedm0rs8d59ag9qqugk4aas0yhxxp3qkmr', 'amount': '29000'},\n {'address': '0xd5cbdd23f1f1b1c62be924f3171a81f6b4fbcdd8', 'amount': '22000'},\n {'address': 'osmo14nt78p0s9z0zqj6u4yd46ywphse5aca4p3pv5h', 'amount': '22000'},\n {'address': '0x8b9ae981fcf4955d98023ec92eaf7c99af6a7113', 'amount': '34000'},\n {'address': 'cosmos1qd0knc6zqqt34zfrurzxztrnhyrvefhzkmwa2m',\n 'amount': '34000'},\n {'address': '0x43696a62f4d82bbb7f50dff27691276958a21068', 'amount': '21000'},\n {'address': 'osmo1h09rqm9r0dyhr23qprvxshgzgn2pd4r6g04er3', 'amount': '21000'},\n {'address': '0x720df56c6d2a255ba1acb8adbb1edd8fc455fc51', 'amount': '35000'},\n {'address': 'cosmos1vr4ckd95fn90xznv754d825d6ua4259w5p4fug',\n 'amount': '35000'},\n {'address': '0x95ff808394de6b3f215c2466caf16af3313a617b', 'amount': '40000'},\n {'address': 'osmo1dgdwvx2sxq9uxd9emmntal2e2f7780jq095hjy', 'amount': '40000'},\n {'address': '0xfec307ec104269af90fe8ba39c0b9f0589816bc3', 'amount': '28000'},\n {'address': 'osmo139fnasf0cdp29dlxtrzp5mrkymgmhstwzh3wtw', 'amount': '28000'},\n {'address': '0x61f6d3aec7f7fd85751b66295741554085cf8008', 'amount': '37000'},\n {'address': 'osmo15wx0nvvr6s0lf6c76fxrv8a3f84s24vvtha005', 'amount': '37000'},\n {'address': '0xc657d9248f4d4c60f9facad51d42d7548d8e3e40', 'amount': '24000'},\n {'address': 'terra1f7m6pfwctu89ppd7n5k8lah258y7wqkgcmy2vh',\n 'amount': '24000'},\n {'address': '0xd5a613ad0063510221a7a4dcff630efe3da4afd2', 'amount': '20000'},\n {'address': 'osmo1ex2ztqs6kp92gyts60r9dlv3xdqwglmugs2yga', 'amount': '20000'},\n {'address': '0xe79bb313b67f674dbf408910ddaccb8bbeb0fb87', 'amount': '31000'},\n {'address': 'cosmos1tzkwmthhmncd4wuzrepyqzfh7hw4l3r99x83us',\n 'amount': '31000'},\n {'address': '0x097819fb6b199e2f24522389e7f58960d0157a26', 'amount': '38000'},\n {'address': 'osmo1ak9nvl978hqwj99gtaank6tye8ge6a5ufa4078', 'amount': '38000'},\n {'address': '0x2af9e3968d9634d3102192714fe81ee1481f0cfc', 'amount': '22000'},\n {'address': 'cosmos154d0cfuctglzlzpph6apd3fa7z5ahyqwvnu02k',\n 'amount': '22000'},\n {'address': '0x5137eb7027f97423b426deea59f68fd1db7abedd', 'amount': '28000'},\n {'address': 'cosmos1dtj4evf9nyqmpeqmduuh5wp2l27h3efqd5l3zq',\n 'amount': '28000'},\n {'address': '0x058be1061afd5e96386bb7b0e741b6ba572672da', 'amount': '39000'},\n {'address': 'terra1ndvdasauhxnamlm0d5d0hls4dpgs2w60lz5tt2',\n 'amount': '39000'},\n {'address': '0xfe65da01e0483d97c0705dea7f551c948cb757fd', 'amount': '29000'},\n {'address': 'osmo1399ghnzcsu4c4pmsrn3s6f2cjmpp8pzqcrx6gl', 'amount': '29000'},\n {'address': '0xbd94824a8624a156f911db711cf01eb6207e73e0', 'amount': '26000'},\n {'address': 'osmo1hjx5t09py0v6zpdstxq56ujaes2qgnefcxss70', 'amount': '26000'},\n {'address': '0x5164885cd45326ad23e32a306ef0ee4e47430db2', 'amount': '29000'},\n {'address': 'terra1ya93ae0fhr9gvs936lnn3anejqe75suj62ehmj',\n 'amount': '29000'},\n {'address': '0xa5a0d59f2d240a3153806e55a8a78f55acdaaf5f', 'amount': '33000'},\n {'address': 'cosmos1mcmrc0hrhectljf7q7zgd8gg3zkltfaq9ttu89',\n 'amount': '33000'},\n {'address': '0xfeb24f8b30fe5a01882e39d1ef84f00ec1cee324', 'amount': '35000'},\n {'address': 'osmo13yjj5zsda8ezqkpnlt2rrlu5cm78qxqdlyrkdu', 'amount': '35000'},\n {'address': '0x66ef4be3be0d487cb7eba5bef3a0990a56464431', 'amount': '36000'},\n {'address': 'osmo1wt9dua56yn5jjulq85vwzu2gjjta7ymgz5w0nk', 'amount': '36000'},\n {'address': '0xfb6f3d9ae8656616192a1f9a4da48528c5d6e3d5', 'amount': '25000'},\n {'address': 'terra19rnfvwv3ht79ghw020e4whm9uy8mgajmuzuq7y',\n 'amount': '25000'},\n {'address': '0x9b0f133bf2c37729f46ac517cc719bed8f2ff039', 'amount': '23000'},\n {'address': 'cosmos13ykn6xpwt9p6fw4ll3mc9nnjp633q0q2hrnsx2',\n 'amount': '23000'},\n {'address': '0xe8e128ebc64a48f82853d346abea01859d7d2d4c', 'amount': '36000'},\n {'address': 'terra10rwwedl2srrlscuzecynd0mrpgm200w8lyfkay',\n 'amount': '36000'},\n {'address': '0xba241850f5d66b7c741bf507a3fda6808d0009b4', 'amount': '35000'},\n {'address': 'osmo1tlsvw6p5ttl5dc8ennduu3n0arm92npz7n3z8u', 'amount': '35000'},\n {'address': '0x768933663a01f908840c7d525f5e92dcbaaf1a5e', 'amount': '36000'},\n {'address': 'osmo1l706juna9ev7xs0cc02qr72tle75elaqx7k4ha', 'amount': '36000'},\n {'address': '0x5127ad11e8ed8b612cad19c9094fc2a2f3b4f396', 'amount': '39000'},\n {'address': 'cosmos1qglumrn6sakx05m7zu28tqtjsqrh7wswqvw5ev',\n 'amount': '39000'},\n {'address': '0x60ef6ad0986f4abf2b8325018ec3e3759b0b9fc3', 'amount': '23000'},\n {'address': 'osmo17kdulsfwmv8xu76cgmh5r9pmsda49n22l4ermk', 'amount': '23000'},\n {'address': '0x29240880c3d6ec18a1cf41b1b2dd5b3b91395ef6', 'amount': '28000'},\n {'address': 'osmo1v45v0ps445pgyxglgtd0zc5te6v2hzspzlv698', 'amount': '28000'},\n {'address': '0x02fc6d7d8ae706a4a70e8f39250bbffe6a69410f', 'amount': '36000'},\n {'address': 'osmo1t87raycs47szpme98xr7fddne36vvauc2wvxap', 'amount': '36000'},\n {'address': '0x7f18ff32eb5b3bf39e6c681b6c3bdbfcfb328df6', 'amount': '35000'},\n {'address': 'cosmos1543lpstumzljfycfzlvc8f4dddl43w8chqnq3s',\n 'amount': '35000'},\n {'address': '0x146a717652156f4c385bc8bd5eac462d8325df57', 'amount': '20000'},\n {'address': 'osmo1rpdtz6klq799elug3jr5l24lc4xm0wh88lmeqq', 'amount': '20000'},\n {'address': '0xd704c315fa90939fb9e65541e3fdb9bab7eebf31', 'amount': '38000'},\n {'address': 'terra18eun5p4yzehvfpemvs2qzv9per859pjl29ku8z',\n 'amount': '38000'},\n {'address': '0x8efeeefee2dee9d7af9cccc8ae41a5b630988d2f', 'amount': '22000'},\n {'address': 'osmo19thqztypqkp789z2t0h23pts6yfz9kc556f8vm', 'amount': '22000'},\n {'address': '0xad58021cfcc9e775d3c4ef92279b8819d4500a7f', 'amount': '40000'},\n {'address': 'cosmos1xufxzjqxsnxdpr3ns04sct7f8qwlt0qerynlwu',\n 'amount': '40000'},\n {'address': '0x9bbfe781e1d2a63754a45c5f852b5c495d28026a', 'amount': '31000'},\n {'address': 'osmo16m25pc4u4r6d92s0ttqdy36wxeeehwefhl4tle', 'amount': '31000'},\n {'address': '0xd6652f917ab103864d02d7008a94b177a5e8696b', 'amount': '36000'},\n {'address': 'osmo1c3qcwp2t2cxle3qggcwt2vstml95arfyum8uws', 'amount': '36000'},\n {'address': '0xcb81f85f0d449255f53412eb304d44361dde4248', 'amount': '37000'},\n {'address': 'osmo1xzqpzmtyevwdprufjkqxja9lhv57zs27mf0z98', 'amount': '37000'},\n {'address': '0xf106b43da1e7b1af0d49095ee3b020a77724ab01', 'amount': '23000'},\n {'address': 'osmo1z39qgxxhka88d6p9kgv5sax9p24sagpns4hj80', 'amount': '23000'},\n {'address': '0xe8a727ce2d563322e9a10865158eaf312897755f', 'amount': '20000'},\n {'address': 'cosmos15tvwrhl65td5agnyu5p37d3fxtx8xxg9t3u0le',\n 'amount': '20000'},\n {'address': '0x9142174bb3f15dc2e2e8cfa3b5d40be813353075', 'amount': '35000'},\n {'address': 'osmo1cya4mcemewd53lmupahl48j2aq9uujr0w9qtca', 'amount': '35000'},\n {'address': '0xf5bfb769b04166c2951bbcec00f88d2aa58d8eeb', 'amount': '22000'},\n {'address': 'osmo10t2cxhkvtcgx82rqypgjeps5sf499gzsutdm6e', 'amount': '22000'},\n {'address': '0x2ee8cfbb2ce349b0e5191af2b2b1de5012c55868', 'amount': '24000'},\n {'address': 'osmo1tg0t4x4whh4eeyfyqwrfas0kcd62a8zac9kgev', 'amount': '24000'},\n {'address': '0xf6ddb532a8a768f4174d1cf0d4952b4c689a674b', 'amount': '21000'},\n {'address': 'terra1wpwdlv8lk43ptdr95uj2sn23uqc6uq2398dmup',\n 'amount': '21000'},\n {'address': '0x70dd16eb26da9f0a241010221c1d1dd610ca0393', 'amount': '21000'},\n {'address': 'cosmos1n75k5f0jr9380gye3xqxjyq6vnvdzexj55e55e',\n 'amount': '21000'},\n {'address': '0x8551023317ba480fd5263ca8897d619f383ae0e1', 'amount': '26000'},\n {'address': 'osmo1tju64qu24r2g4xkh5xw3xuguk26g06p6dchu7c', 'amount': '26000'},\n {'address': '0xde5f8f52063c76cd1d0a0022052842a5ff7aa527', 'amount': '26000'},\n {'address': 'osmo1d0u682yp2xvfg5d2429alec5we50wex2nyy7m6', 'amount': '26000'},\n {'address': '0x10ef0f615ed66f7fa60887c019174f75e5d47242', 'amount': '37000'},\n {'address': 'cosmos17ln09gfej2kqsxg239eql9jxxlrkfucfk70cf4',\n 'amount': '37000'},\n {'address': '0xa9f6a44ec8345c68659f5033d7bd0c0c061974ff', 'amount': '26000'},\n {'address': 'cosmos13cpak2f0vznjfyc7ktxjrex0h2st04cdujjxlh',\n 'amount': '26000'},\n {'address': '0xd5a9d2a75f775d159b314c8c1cdd122298e8673c', 'amount': '32000'},\n {'address': 'terra1qtfhzaqvqfawj9px9rkm6m4e6rey96mlamw3fw',\n 'amount': '32000'},\n {'address': '0xd957fc4f4116a1a4efb648559cd0e55db27d9650', 'amount': '34000'},\n {'address': 'osmo1hpj3rxpcufdrsnxjmt0atzydw038r3ye8yxvlj', 'amount': '34000'},\n {'address': '0x9a0e3e616cc0f4b820c9d13af2cd715fc2097d74', 'amount': '21000'},\n {'address': 'cosmos103f3sad30ujj0v0w46zjdq7un8smrf7tde3d7t',\n 'amount': '21000'},\n {'address': '0x11447c8b70fe826a1bd01cf1ed4feadd8928e273', 'amount': '39000'},\n {'address': 'terra1h6vg9yzrjtf0ynlw9wls6zq66w2xufggsr52xy',\n 'amount': '39000'},\n {'address': '0x1afeeb6b95dedf20ae5023c3fdbbf0a9c9f280cf', 'amount': '33000'},\n {'address': 'terra1lcsfs8uv2773kwjg5glgdrx0rysnv89sgtfqxj',\n 'amount': '33000'},\n {'address': '0x543dec161deeda50d2f3492d9e2c87862a98814f', 'amount': '39000'},\n {'address': 'terra12fpqzh2r2f08z5uwmcmsjcnkvup4ghw5pkx453',\n 'amount': '39000'},\n {'address': '0x8a18b710194abc60cec003f0982949d52ae6a39f', 'amount': '20000'},\n {'address': 'cosmos1hpgmw8g063yx8tt47zpcp0s2ugxmu4f8zthfkt',\n 'amount': '20000'},\n {'address': '0x651e5c5879ea47fa27c8942073d395093d64a3ac', 'amount': '20000'},\n {'address': 'cosmos1z7n8k2hgs060c5t28mf6s55cf8yh8ujsd85znm',\n 'amount': '20000'},\n {'address': '0x8d11c3ac8e36754ce8e4286ee06ffcb0d35b7bbe', 'amount': '34000'},\n {'address': 'cosmos12afea826q8hm0jtcvt0849hv8xj8vxkj2gle69',\n 'amount': '34000'},\n {'address': '0x9b044527b5bc39ecbd4ffa32b5cd5880b0393464', 'amount': '37000'},\n {'address': 'terra1g292unc3rngwfump5w0nuyk4k0v95dp4f25y57',\n 'amount': '37000'},\n {'address': '0x5a6eaf2311214714cd84e417e2d1a02984be8679', 'amount': '22000'},\n {'address': 'terra1nvzy0c0ea2ju5u7sfeg9erkxdsk09cg848qsg9',\n 'amount': '22000'},\n {'address': '0x35ac186cc082407d9917d396e49b20239676addb', 'amount': '28000'},\n {'address': 'osmo1a79n02hlwpw72mfvccxlrfll3vu2svnwm9h2ks', 'amount': '28000'},\n {'address': '0x46c7990d2baf05a679e2c8d7df33ae4747f4ee82', 'amount': '23000'},\n {'address': 'osmo1z9l0h060p68q26f0dg2d25r2xv69yg2mm4vfg0', 'amount': '23000'},\n {'address': '0x2ee03beff3d037618e02a3b89e2d76cac0870a1f', 'amount': '35000'},\n {'address': 'osmo18nk8hqp97kqnh0vuyxcqxpr6382nuemykpkmmn', 'amount': '35000'},\n {'address': '0xbb6a0edc40d50c15368932995230a89db736bbf2', 'amount': '24000'},\n {'address': 'osmo1lzhc0cn4zu0ec8wyay9v4u7j2tvn3segw5ztk6', 'amount': '24000'},\n {'address': '0x2f2a8d37e8e4f45f8e65a49d18b32269adf81695', 'amount': '37000'},\n {'address': 'cosmos1hh2l43y6w7e08rnwv7ahqegdndham46wynpw96',\n 'amount': '37000'},\n {'address': '0xd0b647cb5680e64f8f61dafd5398a7e009118711', 'amount': '25000'},\n {'address': 'cosmos18tjelq6ugvrxf3948mjpmyjah6ck7w62qn8xwl',\n 'amount': '25000'},\n {'address': '0x1358cd5d7d4207e04cab033f3795b3876412333b', 'amount': '38000'},\n {'address': 'cosmos1y3956wd7rfwdj3lg9jmd58ghz3eme3fj9nxg70',\n 'amount': '38000'},\n {'address': '0xa68d84e70da19547ce9db1be452db2cfe41de623', 'amount': '40000'},\n {'address': 'cosmos1g403twcepytqz9jqmjay7fytfsq5mmhtwtqmmc',\n 'amount': '40000'},\n {'address': '0x5376dc4894dbf140f727c39ae86d28a6b7f4b041', 'amount': '39000'},\n {'address': 'terra1p4r8u7revmkferjyn2yw2ewq0g2pf8cuf0l0eg',\n 'amount': '39000'},\n {'address': '0xf078f0a8c00d55b9117bd8233783f296611ac49e', 'amount': '27000'},\n {'address': 'terra1vymm8qcrc82l3gmnh9n5r0n3utvc9yv8nnz3vj',\n 'amount': '27000'},\n {'address': '0x8fea4b5129a39a5dc9a7b2532c23976fe2e38e6d', 'amount': '30000'},\n {'address': 'osmo1jhyys663gl2jfzmp3snvhhlrxv6tzmjd6s9p3y', 'amount': '30000'},\n {'address': '0x0c63b0a1ad1de87b625978c825278f9b4b9c544a', 'amount': '20000'},\n {'address': 'terra1463mq9jf6vt7s6z3f3973e8nkrxuu68f7wn6zs',\n 'amount': '20000'},\n {'address': '0x8113e14b1739623961cf7f980ce2e373a04995ab', 'amount': '39000'},\n {'address': 'osmo1afxwqy76py60h2qpclwzfj8t7dz6y3p8ma05cq', 'amount': '39000'},\n {'address': '0x25d0ff7e1833ec5c016f98058fac8637cafaae97', 'amount': '35000'},\n {'address': 'osmo1x99wpyms7yj60qx4ux9t6kev655k6l3v067ezx', 'amount': '35000'},\n {'address': '0xd62cdc9c40ec6644241039edfbfe650bcc8e639e', 'amount': '29000'},\n {'address': 'terra10flmma4fknqaptfp7tvmx79aryncwdyj4757xh',\n 'amount': '29000'},\n {'address': '0xc243e55d2c0daf16833ba34638201294efa087fb', 'amount': '34000'},\n {'address': 'terra1a5t0ga907jzlmxj4z85mdf7rr7l83fhpc5qk32',\n 'amount': '34000'},\n {'address': '0xbdf9fdcfbf8207b08f1b23e3c38dec3ca2b60731', 'amount': '29000'},\n {'address': 'cosmos1584tgd8u70u8qgyg66lwje2g5dad6stw5zrjra',\n 'amount': '29000'},\n {'address': '0xadd44e2f55f28f8bd3c7f7a0335e70aa122abe4b', 'amount': '37000'},\n {'address': 'osmo1xeupdlp34f76440l3xrz84j5ulmxnj0e034mjk', 'amount': '37000'},\n {'address': '0x23040f7f36dda443acc63d97345164dab48215d7', 'amount': '28000'},\n {'address': 'osmo16876x9n92x4znrsjxmwyzevpu5x32s67a8qq5s', 'amount': '28000'},\n {'address': '0x0c332dcdedc91fed6845cb93f3e6d7b50a60db9f', 'amount': '39000'},\n {'address': 'osmo1mh3w6sygrs0z60nzwj44csw6fxxgk9gecydywd', 'amount': '39000'},\n {'address': '0xd1cf07355b3feb081a5cfb04e23b5e4fd62cff07', 'amount': '37000'},\n {'address': 'cosmos1dkzz5xw9ajz84ggxmhvcss30w4k7yw9ps7dxtx',\n 'amount': '37000'},\n {'address': '0x9154a00ac9950754414834a8c71252b3ef34fcc1', 'amount': '34000'},\n {'address': 'terra12m28ku4e7eq3qdgvn69cynel0zvgmy8qyjdwyw',\n 'amount': '34000'},\n {'address': '0x45520eb6773d39983eb91d2b046ff8c947e3efc3', 'amount': '34000'},\n {'address': 'cosmos18d3uw85p8hnva26km6uqtvx83wyghxx9gqwd77',\n 'amount': '34000'},\n {'address': '0x43e85a9e8ea668cad940f1cb6f84e6f8b0a32b4c', 'amount': '28000'},\n {'address': 'terra1drcpns50v0wd6w8y44ym7qw3u869xflqptk62d',\n 'amount': '28000'},\n {'address': '0xc3d707c03c1b638946578083e39ba5c97c80d84c', 'amount': '28000'},\n {'address': 'terra1ppj2cp8zr9ra5tjen6w2ltphttpzrkx87s9hvy',\n 'amount': '28000'},\n {'address': '0x7a5f29588176f76d3d5eba65081990b9ae5848fe', 'amount': '26000'},\n {'address': 'cosmos1spt7k3aw274uw6r4rqmt34zdx3tw8d4km00g7h',\n 'amount': '26000'},\n {'address': '0x5155bcca981ce7b2be123bf28091e82c0403a453', 'amount': '20000'},\n {'address': 'cosmos1meww3zhk3cm9gtkj037cmcj9a7h0xktlp5k4cu',\n 'amount': '20000'},\n {'address': '0x71d21eccf1cd86ef022fd1232be60d0a352cdf66', 'amount': '26000'},\n {'address': 'osmo1djd6lr6la62hplyutahnksd7jwlut25fem6yma', 'amount': '26000'},\n {'address': '0x2b81336056d50f7afb171af158a12cd852cdeb54', 'amount': '27000'},\n {'address': 'terra1zg70t86f6psl9l3d2cwq9rjwk3yzqj9x8gcdlu',\n 'amount': '27000'},\n {'address': '0x0cb9a82dea2f5e266858f451ffc0bbc346b16bee', 'amount': '36000'},\n {'address': 'terra13gmrhhkl39rclldwlxve583srejh8qx85np4ey',\n 'amount': '36000'},\n {'address': '0x9923dca435a0ab5ace679c76f92f773a725217fa', 'amount': '40000'},\n {'address': 'osmo1643j3etaa93ufzezrcv2xst420nsv04enanatt', 'amount': '40000'},\n {'address': '0x0b6d1bb393190e13aea3e676f78c08e7ae3b153a', 'amount': '38000'},\n {'address': 'cosmos12llzujqtsjlvrnv07sqkuaan9gdxgqne7sgq03',\n 'amount': '38000'},\n {'address': '0xfaf14f495053409d2318914215bdaadb60086154', 'amount': '38000'},\n {'address': 'cosmos1zz0yzrxgs4h5zzqnmvtq9fp49k60dt2mxz5t9v',\n 'amount': '38000'},\n {'address': '0x09e93f5937c9525375551c65431642d301452b5c', 'amount': '23000'},\n {'address': 'osmo1v68ydakjxwhcjczyf3c5tlmcey6xra4zv0xa99', 'amount': '23000'},\n {'address': '0xa1f27b3fd2ebbda646da7489224fde0780cd3381', 'amount': '33000'},\n {'address': 'terra1lr8rjkz0ujsngkxlzhmx9t58rqy3kv6r8msgq5',\n 'amount': '33000'},\n {'address': '0x4e6f26ece3ee7664edb4d41a52f796e71ff9ab93', 'amount': '38000'},\n {'address': 'cosmos1llm38279gsh4p44u7pn0ljv2nk3f84dyxgprmy',\n 'amount': '38000'},\n {'address': '0xef81aca42bd8d8c82608f14035172d435099025a', 'amount': '23000'},\n {'address': 'terra107r3lxktfmduvcvtjktpy9l7hf6frnv774qgp2',\n 'amount': '23000'},\n {'address': '0xd24d076060a4612a6c41ebc432db54519619e5a5', 'amount': '35000'},\n {'address': 'terra1c63ahsam0jmxxdhx7g8js30hm7gjq3xz6ap778',\n 'amount': '35000'},\n {'address': '0xa099010b6658fd6d077983ccf3286b5cffd59351', 'amount': '32000'},\n {'address': 'terra10w5prvhmt5jzwxyp0d0xx2yw0j30y7hz3s9gpe',\n 'amount': '32000'},\n {'address': '0x7386d4c15d2f0b94b67ec94fcbb3d24925e29691', 'amount': '28000'},\n {'address': 'osmo1jsq0dx7dfrjg340wn3mxskl42t4vzsfa220gaf', 'amount': '28000'},\n {'address': '0x3fb0b0ce596f3b3ec4689a05f6660129450b9af4', 'amount': '32000'},\n {'address': 'terra120prwl5v260ndpm99804tehcjyegy505jfk4lz',\n 'amount': '32000'},\n {'address': '0x54b7572fce9afc1e4d111be44f4167be31b4ceec', 'amount': '24000'},\n {'address': 'osmo1emfauyl90znpravdm9383fmspnu7y0lk78nypq', 'amount': '24000'},\n {'address': '0x0dbc30e055c17fd5868d8a477462b206c2ec09f3', 'amount': '34000'},\n {'address': 'osmo1kc8yvay3pkn7rx8x6242yk5reyzrmmg0we4yu0', 'amount': '34000'},\n {'address': '0x9d6fabf49bb5faeaea55d8106090f2c3e33937ec', 'amount': '23000'},\n {'address': 'osmo1mv0q4ta3rzl5remnj77xs76jv0swk6ldyv4w4m', 'amount': '23000'},\n {'address': '0x36ee52c7798f6227550c44136e540a66aa3f944e', 'amount': '35000'},\n {'address': 'cosmos14kzj5qmcfgtracl6p36a7pfcqwezychf0tl6uf',\n 'amount': '35000'},\n {'address': '0x811c19180d88b92e59703623d547c3fcab05f166', 'amount': '21000'},\n {'address': 'cosmos1ustjm4ufn27gquys86gwfdkh5dyz7gkzvqyas2',\n 'amount': '21000'},\n {'address': '0x0fbd5b6547c98170b144c1a20ef2949b8aeb1de0', 'amount': '20000'},\n {'address': 'osmo1f88qc927722fd933vrpm2n7e3xxtrrzx9jq77z', 'amount': '20000'},\n {'address': '0x3499cec91c81d4e204db632b57aba09f9ca885b5', 'amount': '26000'},\n {'address': 'terra1k98acm2z0fgkrcu78u5l0tdjgmgzmxcj2ksudv',\n 'amount': '26000'},\n {'address': '0xf4d986ef8a04d06561a1fcf9920d7f991b9273fd', 'amount': '31000'},\n {'address': 'terra14veyvk0vcl5u79kk50msvv7nf8e4yak24yztws',\n 'amount': '31000'},\n {'address': '0x6302db48f4e16c927c385c637135febc10059412', 'amount': '24000'},\n {'address': 'osmo13ayhj34df09jsygx9g5zprprkv99scvzzzexw6', 'amount': '24000'},\n {'address': '0x8f7e9f4feacda5f321bb1827e9abaae04434d6f1', 'amount': '24000'},\n {'address': 'cosmos147sh44f48cdv333y0ghrzxp9d9fp69uhkxq6qw',\n 'amount': '24000'},\n {'address': '0x40714677d19b3a2560c33d273f81fa9130d0a113', 'amount': '27000'},\n {'address': 'terra1prm69sfehj6fqw4k5mlxz65vvdqlsq5t054f8a',\n 'amount': '27000'},\n {'address': '0x5ed7a4acac690dc64375d3501f471a29df65ef8d', 'amount': '27000'},\n {'address': 'cosmos1xqhe3alyshmnhrpsl8ynknr695ult3vnt0dl27',\n 'amount': '27000'},\n {'address': '0x023be372d76c54280d8bb18d20ae109e0f016862', 'amount': '24000'},\n {'address': 'terra197nnzn0k74g5tzm6p2x9d7luxvm594ksr5x54n',\n 'amount': '24000'},\n {'address': '0x5eea845bfc582083c3a5e5900a06d2096bead1b9', 'amount': '22000'},\n {'address': 'cosmos1xpl3mevj35l6n5ryvtccs7u9kewq4gkgk0pgtr',\n 'amount': '22000'},\n {'address': '0x1997f7066bbc248eb48ce4b60788292c90caf470', 'amount': '37000'},\n {'address': 'cosmos1t98drv88f72rxa0a2pww2amu5t98gfpnxaskpt',\n 'amount': '37000'},\n {'address': '0x735eedd2dea49e5fac51da820feb6e0f857e9b27', 'amount': '30000'},\n {'address': 'cosmos14a3hej8e45fc8hxlxsplry4nes7nfc5t5vv8lz',\n 'amount': '30000'},\n {'address': '0xabea12a39a1627c75edf9b0e96d4c4602e78022d', 'amount': '29000'},\n {'address': 'cosmos14x2sq6feyxwqe08qnrvv2etlzrq69eex6mlevl',\n 'amount': '29000'},\n {'address': '0x4a369f225730e72b0e3923729ee341e928c37756', 'amount': '37000'},\n {'address': 'cosmos1dzgxttwy6j6cnscmhyxdswwrs3q363hlczfsyq',\n 'amount': '37000'},\n {'address': '0x6df66699ef8cd70ab8e002396f4d34c9fa58db1b', 'amount': '24000'},\n {'address': 'osmo1nkk0w3muwvlg9wyccfrjvm43ll4t8ny47cn5rx', 'amount': '24000'},\n {'address': '0x38f3e91f0a32aa160536b7d89158219b5493ca4f', 'amount': '25000'},\n {'address': 'terra1wvwx60wxtjnfsfgqtx3wg7exja8vl74xf080g4',\n 'amount': '25000'},\n {'address': '0x58461a6e394f9bf6519b74479a8804621d5e5c67', 'amount': '37000'},\n {'address': 'cosmos1p87ax0xx69a5l2s5qhzjvfep7mraz95d79eten',\n 'amount': '37000'},\n {'address': '0xb254b5d3a9dee4cfb1a0a132d8a611edac4e9304', 'amount': '32000'},\n {'address': 'cosmos1hjdlj52wdj9ud8ka3hlkctn2dtvcvyak9yxmdq',\n 'amount': '32000'},\n {'address': '0x65e0c2abb36da86365f2cfe1ba49c20645f0d714', 'amount': '35000'},\n {'address': 'osmo1vd4mg8ju0fe88k68vvt3jqhvquqqhvkht0jngh', 'amount': '35000'},\n {'address': '0xaa9b7744c4fbbb14a3812026439795897a946f01', 'amount': '38000'},\n {'address': 'cosmos1xmytgrvak5pga0zapfzd52hsfmt362q8aa67nh',\n 'amount': '38000'},\n {'address': '0x3379c66297baf8c97840a3a007b812214b1a94f0', 'amount': '39000'},\n {'address': 'osmo1nauxs58hg3xuvqe43hp27m8qlautqp76k9vel4', 'amount': '39000'},\n {'address': '0xc6e29340db5da88b19a53e0a85da1dcb15515ab5', 'amount': '21000'},\n {'address': 'terra14rft4llu0y3vz47909vtlrw05x3n2edtn9ulxs',\n 'amount': '21000'},\n {'address': '0x0f52b5785ce62fa25cea41d9797c492923d685c5', 'amount': '40000'},\n {'address': 'terra1zj7r5q0md7t8hrfh6py5g7mxeqreth5ktgqytv',\n 'amount': '40000'},\n {'address': '0xfcb77c64853f80f4f8c786d058dc280824b4801c', 'amount': '33000'},\n {'address': 'osmo1vs8thvn5p24pc6rxy3gleqcwkk2yh0m74uw5ft', 'amount': '33000'},\n {'address': '0x4c8ea0db7e83e7789d117a483889c28b919ca8d6', 'amount': '33000'},\n {'address': 'osmo1e39h3q7ugxmmh53tj0uqull3cg7jewqjg7wfqm', 'amount': '33000'},\n {'address': '0xb132028d5b8a0d8bc51216d6e04dbce370325f59', 'amount': '34000'},\n {'address': 'osmo10q70x4qrkl77sr8rggzua60jtrxqyy5xwpm472', 'amount': '34000'},\n {'address': '0x78d3e4bf53d6f8afff4ef265b834e5d201e3f5ab', 'amount': '26000'},\n {'address': 'cosmos1fz7u4aa50j86q7l86c4f96qu95mehqd4rsnxs8',\n 'amount': '26000'},\n {'address': '0x8786d98fbd460a2e907fb087922797d3106ab998', 'amount': '24000'},\n {'address': 'terra1y3ul7dtz7u0m3zygdsptm6a4qs3v5zq9h4hsha',\n 'amount': '24000'},\n {'address': '0xa4bb2556b3b465e558bf922b30a65f7df312a58a', 'amount': '38000'},\n {'address': 'osmo1kd37tahxxtwwv8g2fnvxh7ujqgdme8z9un5lr0', 'amount': '38000'},\n {'address': '0x5e7cc9e1c62db0900647cb93b4190a6973eac79f', 'amount': '33000'},\n {'address': 'cosmos1ahpcs04a0g37j3gskxuxp7xsq3vfldn0a46j2k',\n 'amount': '33000'},\n {'address': '0xcafa58fa7fd45cb4df789a2bfd2437e22246c5c8', 'amount': '26000'},\n {'address': 'terra15jnanjdrdhmedpgld2rcqtjg96suu3exyv7pxf',\n 'amount': '26000'},\n {'address': '0x1e7b52b00f27d05e994ead60201c4f28556b912f', 'amount': '32000'},\n {'address': 'osmo1k3kds5p8slc64rltwgq5jc49zm46s4qv388428', 'amount': '32000'},\n {'address': '0xe628c0a5f73508cab614992cfb47ab044d77474c', 'amount': '24000'},\n {'address': 'terra1cwzlxmen9kswsv336muj3f2c3vs32v2xafq9wg',\n 'amount': '24000'},\n {'address': '0xbc6b4a723359f6a112c447f8952b4a3a43b2be0f', 'amount': '21000'},\n {'address': 'cosmos1grdnehv5y7ftyku9d9eulp6q0lp8wxwahfz2ty',\n 'amount': '21000'},\n {'address': '0xfe6182f049a929b316fa9522161132092d160999', 'amount': '28000'},\n {'address': 'terra1mqu3lhgsfmswdksszfsysj03a8ue2yr6m37hxe',\n 'amount': '28000'},\n {'address': '0xa3f19d7e581ec714ead4edc2e78086c3a0dc6537', 'amount': '36000'},\n {'address': 'osmo1z604xqr2ykfdphrh30hg4ygfxm4zenup83t7nd', 'amount': '36000'},\n {'address': '0x46eaf11d02f4959841b3235cef5cd8b795573f18', 'amount': '40000'},\n {'address': 'osmo15pee0fczvsmwglsczsu9e8rfxmap0uz48wusqf', 'amount': '40000'},\n {'address': '0x1e4ba70d0e8be379e9826b3b32a3a6c00057f9e1', 'amount': '36000'},\n {'address': 'terra1ghrzsu9xw59ff2enntntluazrtxepyfvcqsdzc',\n 'amount': '36000'},\n {'address': '0x8e1d568041a36f6645a114bfb706d0e4f3a8cd60', 'amount': '29000'},\n {'address': 'cosmos1s86d0dfk377sng3rk26dc67n3ft6ea9m06phsy',\n 'amount': '29000'},\n {'address': '0x8149d61ffc2aceb6ba34c115704209a9215dc0eb', 'amount': '26000'},\n {'address': 'cosmos1va4cmwftyp7yqgmdcy3cgev9jknxyupfheenwk',\n 'amount': '26000'},\n {'address': '0x8afe93b6501926739c47fafdd2d85438ca71cd26', 'amount': '35000'},\n {'address': 'cosmos16jkd5xuhp54krw9h0k2yy5lgzdnzz9fwa9jqw6',\n 'amount': '35000'},\n {'address': '0x873f4a5ae604c57c9ef3685edba1134b459bdf7a', 'amount': '35000'},\n {'address': 'osmo195a457tp5j0uw3t5gna7j9y6cp2cmq76mcm6u4', 'amount': '35000'},\n {'address': '0x36ebce3e7ba9f26cf268635e94f4e14ec7b72f6d', 'amount': '40000'},\n {'address': 'terra15uzrd87n7s92mgnzyujtde78xzr6gdjfaz6srz',\n 'amount': '40000'},\n {'address': '0x340067270bf7d19b02620809af176dcd67cc52f8', 'amount': '25000'},\n {'address': 'osmo10esk5ta5qtj7v4kaphshvjqah0056ze82fj8s9', 'amount': '25000'},\n {'address': '0x1ec71b78bc24228c0faa8c797e9f9cbbfcf8e78a', 'amount': '28000'},\n {'address': 'terra1js5k22fmxcuwza7mluua453k2lsxftl57ua6nr',\n 'amount': '28000'},\n {'address': '0x656338e222edc062d7b2b34b3b1643fc15917ed4', 'amount': '21000'},\n {'address': 'cosmos1s576a8e8w0fp76s5ngp6yleehk7p92zu3yq938',\n 'amount': '21000'},\n {'address': '0x1155da8b74f19e8d781935fb42e2744c422af395', 'amount': '24000'},\n {'address': 'terra1qnytzndxfxzu44puwdnz8vfrepm5w79usf0g6a',\n 'amount': '24000'},\n {'address': '0x8edd644472e86329d36c419ef44b6549d31416d3', 'amount': '38000'},\n {'address': 'cosmos15vyr8mn36wg8lncnyswwa7kdemjaen3e5a7r7q',\n 'amount': '38000'},\n {'address': '0xa9a10380dbacd11ee29adb6689e854c91485262c', 'amount': '38000'},\n {'address': 'osmo17pzlvj9ash9ck8rqh8nt0ag9feh4dsjhz2rhrm', 'amount': '38000'},\n {'address': '0x961b6c9ea42c5029d5d226759faf04f14e4a7e6a', 'amount': '37000'},\n {'address': 'terra1tm0qzqepuqqng2jrxs63hu7td3k5pds8awmm50',\n 'amount': '37000'},\n {'address': '0x6297f70dd6bf27f83865934cdef6c0af45b6621a', 'amount': '25000'},\n {'address': 'terra16hhjm2x2h3nekyvawxyecvwa8swdfndht9nv5w',\n 'amount': '25000'},\n {'address': '0x86e66afa3b3dc4341f5a1d7540f03d13d9ca4ca6', 'amount': '29000'},\n {'address': 'osmo1vkzcrfmcyupz4tz7utvd6lh5x80ev7mgpyxqt9', 'amount': '29000'},\n {'address': '0x0337a27d6fc662fd1f55284bb621a11efc1965ab', 'amount': '33000'},\n {'address': 'cosmos1t2k9fzlfqps9xfl50kahl32vtl7ahghg5kpwss',\n 'amount': '33000'},\n {'address': '0x339f8aaea592e8793ae59bec3b612ed46c921e80', 'amount': '27000'},\n {'address': 'terra1yj7wd9rpvjpmxv0sn75p7q8zgx8p9996etel6p',\n 'amount': '27000'},\n {'address': '0x690d935677c407208cc76762eea7f8ee31882c5c', 'amount': '31000'},\n {'address': 'cosmos1m82xf3gk7t3g3pgh5tt7k07l5rj822kpr29hg3',\n 'amount': '31000'},\n {'address': '0x9a69f2833d458ca280c17a062bb69c60f35beb7c', 'amount': '30000'},\n {'address': 'terra1e5wa9naa9z3pzexcl32fw5rye8nmpa3d9kg600',\n 'amount': '30000'},\n {'address': '0x3ea43f2d62191577f3201c3c3ea366d41f57c7ae', 'amount': '30000'},\n {'address': 'cosmos1ylkkhjx33lmmqd34fhp3lp7h7nppkkh3skesry',\n 'amount': '30000'},\n {'address': '0x5f7585fe01a955ca60ab515941a40c17be5aef45', 'amount': '33000'},\n {'address': 'terra1hru5kp5kmggth9frlj0yhd9mz2lt7hmaa6vpty',\n 'amount': '33000'},\n {'address': '0xadad4442aa4d2be614eca92a98defed69a668b7b', 'amount': '37000'},\n {'address': 'cosmos1dj05hlu3c7w6h3tgwlrnygvx44r30jy66k8c00',\n 'amount': '37000'},\n {'address': '0xf560dde229cdbc8102207c40dfec4f5098eb3cd3', 'amount': '32000'},\n {'address': 'cosmos18g62ucs3helr7qkzlaj9ftzslunawsmh4eczp9',\n 'amount': '32000'},\n {'address': '0x8d0127b27f3fc089364f5dc3566ec77a0a1d8c5e', 'amount': '38000'},\n {'address': 'cosmos1a4prhqhncu5anhsk9qpk56wejwgpc7y3xm7794',\n 'amount': '38000'},\n {'address': '0x61321bd735c2c8ee25176fafce4f6ef78017c6f9', 'amount': '39000'},\n {'address': 'cosmos1fs39l7hqmwjrejuf6q9l8zyylm7jxyywh5kjza',\n 'amount': '39000'},\n {'address': '0xd4619fd1c7f861a04f43b7a1f12f590f2404ccdb', 'amount': '27000'},\n {'address': 'cosmos14rg7jk865mgyfw4cmgfkexfaajmn44h7lmyj5l',\n 'amount': '27000'},\n {'address': '0xa8ef598e9f8457febcb2885fc6a96fe9ed9eea8e', 'amount': '32000'},\n {'address': 'cosmos1rqtg2fxxq2zmrdm7y8q97xptu30mx4tk9ahpu0',\n 'amount': '32000'},\n {'address': '0x6559687f07b41ac2c53a653e981145cc3eceb964', 'amount': '38000'},\n {'address': 'terra1wqtgdr6kh6rtlyfa9psp2ydt63jqvapf4wvr8d',\n 'amount': '38000'},\n {'address': '0x9156771935482ca4680cc1167192b0581d97403a', 'amount': '37000'},\n {'address': 'osmo1wpjs8efvk3u88zlertrx6jxrh4y9qjnz2whcz2', 'amount': '37000'},\n {'address': '0xe0c98a61a8016f085181a7c559b789bfb6e8ccca', 'amount': '25000'},\n {'address': 'cosmos1eyvv6479sascpdn0twmpvdcwxqp7000m3xcfe0',\n 'amount': '25000'},\n {'address': '0xe08739e3fa2896fd52bbdb87807456f600707080', 'amount': '36000'},\n {'address': 'terra1qk2w66fcuju80vgscvflnpnyhx7v0svlaahs33',\n 'amount': '36000'},\n {'address': '0xeb47bc44e91641c2058c104c39c3a89a8862e08a', 'amount': '24000'},\n {'address': 'osmo12xx60wdjffyew2jljujc9yfdq2xl840furgu2r', 'amount': '24000'},\n {'address': '0x9785fafad353240cfe282537814c2964a79fb429', 'amount': '22000'},\n {'address': 'osmo15twc6r4wlyfu5kl6pzf020zey2sydgfkprx8z0', 'amount': '22000'},\n {'address': '0x03d800a52706962894359596d6106c00fa89a449', 'amount': '29000'},\n {'address': 'terra1zs8t7kr3v0qruued6hpkzkkk66j0xk8py76zza',\n 'amount': '29000'},\n {'address': '0x9ad62edd79974b6580d9cf88083adbe034051427', 'amount': '20000'},\n {'address': 'terra1dn620sh4sf2mdsu7hcrtpry7geqkf5rfftjcdc',\n 'amount': '20000'},\n {'address': '0xfcf9d2d523fa460aa9b1ef7850a805f5a100942a', 'amount': '37000'},\n {'address': 'cosmos158hemtpzhj9n2vnrnajpj02emvqujvn05mqp83',\n 'amount': '37000'},\n {'address': '0xe6fcfa39833250ccc3cb444a0bd972a5639ab939', 'amount': '22000'},\n {'address': 'cosmos1h49ltj5kudkfw9gaaa4h659ut4t6snrhc7s37r',\n 'amount': '22000'},\n {'address': '0x7f228565dd52efdba910767d2b7946ea9e9cd3ed', 'amount': '23000'},\n {'address': 'terra1n3qcn5zl52rvz22qdv8jajqs39j973zjrl8v6u',\n 'amount': '23000'},\n {'address': '0x46e5b84eaf248e5bcd580eea68364260de247715', 'amount': '35000'},\n {'address': 'terra1zxj4g7nlqtnar0rwrh8l44phft88ndgl7t0wus',\n 'amount': '35000'},\n {'address': '0xb0232c165f019df2bed38b40a8eae4048c150db1', 'amount': '34000'},\n {'address': 'osmo18tnnkf70gv7da0s3asn7ajmnj8wtnz29xfhml6', 'amount': '34000'},\n {'address': '0x6cee957bdfacd59814325ccfb4a070b14f51e4e7', 'amount': '27000'},\n {'address': 'terra1je7630jsp7k3hcukxh7ryl0ug0ufy2qqwfyl4p',\n 'amount': '27000'},\n {'address': '0x45c55009833b953fb8b18636104d4765de11e968', 'amount': '26000'},\n {'address': 'cosmos1egsr7fgrj229k2e764rwnl0jpcusyrjatyavsw',\n 'amount': '26000'},\n {'address': '0xc603b4f2db3405926a646fa3132a39f5e6a86160', 'amount': '32000'},\n {'address': 'terra1yknqmmf3s2d6eve86w98cda90snq2l4u3879kw',\n 'amount': '32000'},\n {'address': '0x6bf1f6663b730a55ff77b55411aee1ee022cf3c7', 'amount': '26000'},\n {'address': 'terra1tguxdhntr0alrjvvp7d3s8nn38rm5jnxlqd0fg',\n 'amount': '26000'},\n {'address': '0xbba80e157437cd19f96fada6706136e22fc6b4b3', 'amount': '38000'},\n {'address': 'cosmos14epxq3ep6xhjpzp2xr30r3p5ucrt5pnftfxq3j',\n 'amount': '38000'},\n {'address': '0x817c4daad9b5b813efbd1b73a5abde43cf15bbe3', 'amount': '25000'},\n {'address': 'terra1cdsn706qrul2xrwzggwn4rppnckr7grhsju94g',\n 'amount': '25000'},\n {'address': '0x70a0762e85414ec9f84e62b39e6db4b73bcc6e74', 'amount': '39000'},\n {'address': 'osmo1je09ur9lv3falh6pttu5g628m6qr7q4uewhpkh', 'amount': '39000'},\n {'address': '0x4e13d5c3a4fe7ea8e3c86990c2e958ac3663368e', 'amount': '29000'},\n {'address': 'osmo15ml5nzqmypfhj3273whsht8j2wy4rmyy7yml0w', 'amount': '29000'},\n {'address': '0xdabfe11ecb1b3b24173e09c3e9436f90207ef7d3', 'amount': '23000'},\n {'address': 'terra12pcsa6pxw4su4alzuqq9s6rxzk3vku6f8wcm39',\n 'amount': '23000'},\n {'address': '0xf6828501fabefab91893afddf2fe21d9c9761a7d', 'amount': '21000'},\n {'address': 'osmo1rp25h7d0vjt8sc6kgrgumjg07p9lnqj5fl0n96', 'amount': '21000'},\n {'address': '0xfce95041218de15762995e4939ca666a259a2569', 'amount': '33000'},\n {'address': 'osmo17c8g0ag36sjhvyx4kkyaywcqnjm9fwfmu9f928', 'amount': '33000'},\n {'address': '0xef5007330712a3015e22ab13f19052c6e6cc176f', 'amount': '34000'},\n {'address': 'osmo12y6kf9jwg762tshw27huzy6sj6d44nuxphy4uc', 'amount': '34000'},\n {'address': '0xbf457c36c04dd1fb5c08d1ea853cc71069256d37', 'amount': '25000'},\n {'address': 'terra1aszgtmjemy0yn7e04e8eus2acdycweu7680pan',\n 'amount': '25000'},\n {'address': '0x009ec3a393f161e1a2a14e3a20dfdff7b3818cf8', 'amount': '34000'},\n {'address': 'osmo1nkazcyf55kx6nnxt9n9980ntsnxqwggmack36n', 'amount': '34000'},\n {'address': '0x145194538af45b163f423a74a6c21982635a2b53', 'amount': '39000'},\n {'address': 'cosmos1mkylpyrl3y9r9h0d9ll7xl3qlwsh499uyep4qx',\n 'amount': '39000'},\n {'address': '0x613c9008dfb129b87936b9e2a53a64f17d2e48b0', 'amount': '33000'},\n {'address': 'osmo13lpcvqv9xtjxlgpu5e8gvea2gw6v3dyml5ljsk', 'amount': '33000'},\n {'address': '0xa8b71e65aef1801d59a9063a2167be55be66b6a5', 'amount': '28000'},\n {'address': 'terra1af3x48y3xzkwd53z80t0y7vve5eh4wvz60n0cw',\n 'amount': '28000'},\n {'address': '0x7733887c53747d45dbfb605e45b81f19ed0f6f9a', 'amount': '36000'},\n {'address': 'terra1ew5ulax86fu4e4d6vcm3c2ypdpy0ar4jqmgw3m',\n 'amount': '36000'},\n {'address': '0xacc45925ef0cabfcce3bd6ac29a670d69edd0506', 'amount': '34000'},\n {'address': 'osmo1yumj5rrgkfhqhsxuskeq6ltqlzn0lw9d7av5ee', 'amount': '34000'},\n {'address': '0x0fab2ab9e7f7ec00a7c160761fa844ced07a032b', 'amount': '33000'},\n {'address': 'terra1zj77rg55ulldldx9xhee7836m5xrg8k0h5dlja',\n 'amount': '33000'},\n {'address': '0x11a173cbc3e9e470e9311dce93c1207c3ef82fb4', 'amount': '26000'},\n {'address': 'terra14dtaen48gpm2tt0xpw2vhx78ydtxvsfnnu4vhx',\n 'amount': '26000'},\n {'address': '0x3bab3459ecaa5c66519ef976f445bbb430205dcd', 'amount': '31000'},\n {'address': 'terra1gjsg5cqcmqhtezq6vah7yw7huqt4fxv3rrz252',\n 'amount': '31000'},\n {'address': '0xb4e4b67066b28be6079937af2c982412b69c00c2', 'amount': '30000'},\n {'address': 'osmo1sqsdl3t70y6l8jd9yvvexpu0msjwq6sf95m9lh', 'amount': '30000'},\n {'address': '0x15f3e2eb0d218422cb3e9f709ad994db314a29ef', 'amount': '29000'},\n {'address': 'osmo1q6m6awn6y0q56h9m8vft293pftd3jkel293rvv', 'amount': '29000'},\n {'address': '0x39cebd8727ccf2b104027681587d25ab0ec32f1d', 'amount': '38000'},\n {'address': 'terra19dxpzcth3nqh6er8t2qy5pm9v9dm7f4ph283jx',\n 'amount': '38000'},\n {'address': '0x5ca676785a0a2f372294106ba172557b8affe2ab', 'amount': '29000'},\n {'address': 'osmo1l90qazxt6gtsxujr5nryl0989khppwn4y8f5ek', 'amount': '29000'},\n {'address': '0x7b34cabb55af3aa0dc6268e1e17b681151528226', 'amount': '26000'},\n {'address': 'terra1rrfen8krca6g05554kr7vrllplpeak0y65m5jt',\n 'amount': '26000'},\n {'address': '0x43a96c0468b61a2e7fe55c3a9cd51350488e66ab', 'amount': '39000'},\n {'address': 'osmo1ec3kxzstqt27c5vfkjzm4caxzln6hwwu6wfdez', 'amount': '39000'},\n {'address': '0x1e5eef094617a89b177109e0b4571a61505be434', 'amount': '37000'},\n {'address': 'cosmos1qde7vv6mah9ttcm0w3n3pmvgsg77eml7u06q9n',\n 'amount': '37000'},\n {'address': '0x000419abd780eb22b8719a76aeea7625c47250c5', 'amount': '33000'},\n {'address': 'cosmos1nl7awarslsx4qk5pl2jd58ulyvvnt7d74ym0e6',\n 'amount': '33000'},\n {'address': '0x9b8bce688dc85edc44ed8018a34260dc407a32be', 'amount': '20000'},\n {'address': 'terra1mkdvj8fh89km46fm2f68lcfwj05n2vy6q82uzg',\n 'amount': '20000'},\n {'address': '0x0128e5085105079c6e53069e0a16aaa6d7d6198f', 'amount': '33000'},\n {'address': 'cosmos10yv7v3pk9v8lwtz2emntmka9lzk90lkjs5255e',\n 'amount': '33000'},\n {'address': '0x82bbee5240bde6754da9a7e9b067bb7b54b767da', 'amount': '29000'},\n {'address': 'cosmos1j6fh8566qkmndepk3chd0fg58a39rnnqzta5w9',\n 'amount': '29000'},\n {'address': '0xd8edf404609a67187f7ad238d505540cfaff641e', 'amount': '34000'},\n {'address': 'osmo1vuhhw7k2rlxxna8kfzm9dkpazf62qx7mvfuy9z', 'amount': '34000'},\n {'address': '0xada0b744b0b06152c1302828f6b2e487a6cedfb5', 'amount': '23000'},\n {'address': 'cosmos17s9xxnkvtgepzv8t9kqmv4q5w9z5jl4elsqt69',\n 'amount': '23000'},\n {'address': '0xfb15bff3bab570eeae9594745e4bec366093bb04', 'amount': '20000'},\n {'address': 'cosmos1np3zr4um8agcp0ewhta2xw72q5lh7ydsqpcftk',\n 'amount': '20000'},\n {'address': '0xe5659500b0a80805267f067d8d7fa5866f3cf858', 'amount': '23000'},\n {'address': 'osmo1un0u4dazcaph6fwe9th4cjt94vjmnednuv0gpv', 'amount': '23000'},\n {'address': '0xef43f6331d96cf9f93bbf8c695d9f1bc538df313', 'amount': '21000'},\n {'address': 'osmo1mxhzhxm9929d3xx2wn8nmz8v927p8g7ql4p9nd', 'amount': '21000'},\n {'address': '0xc3eee179517271a8e9d80a12ead1e93078c52839', 'amount': '22000'},\n {'address': 'osmo1w9zz2egxqn8tjtgqe0zts0u26ypgwq8ka4rpcm', 'amount': '22000'},\n {'address': '0xe10857196d2c80b8832f2bf31d7223091efd8004', 'amount': '33000'},\n {'address': 'cosmos1k23wt94pql008qx42yd2mq53j3f5hszdjqaer8',\n 'amount': '33000'},\n {'address': '0x145dac86f4fff76876220f87ed8d085105eefe7f', 'amount': '39000'},\n {'address': 'osmo15pcddut84d9cx7x6pdm4ay7ea5n7l9n9mqxtn7', 'amount': '39000'},\n {'address': '0x858667c4a3c75052d6135544b162550485731f51', 'amount': '23000'},\n {'address': 'osmo1646d8d89my2f9akgfhrlnfspfwrq96hvsnnsue', 'amount': '23000'},\n {'address': '0x613ebcd174cbe830470ff0db487ee88324aa510a', 'amount': '30000'},\n {'address': 'osmo1c9wqjaq3797pxtgq3feu8azjxnecp356r0whv0', 'amount': '30000'},\n {'address': '0x6c67d28a354d5c558725d6f8accf804228f18682', 'amount': '30000'},\n {'address': 'terra1m7cn09p062aucxg9nzlccez7vr245rh2hrp4r9',\n 'amount': '30000'},\n {'address': '0x1804d8e6759ed9a9a45beda1ac438aab21feedd4', 'amount': '23000'},\n {'address': 'terra18ag3w8v0s7zn3jkzjq2gxdjlznryfdh6gg6zrp',\n 'amount': '23000'},\n {'address': '0xfa6b3b50b9efa5f6e6b882d3bd3c2df161001c0b', 'amount': '31000'},\n {'address': 'osmo12dn2zry7csvf8kjh6zy34aqdsz0hgmxgh4e5z2', 'amount': '31000'},\n {'address': '0x652f35466fc7f47fa072c37e2f8bdbd7fae84a1c', 'amount': '24000'},\n {'address': 'cosmos13sgdrlvd438vtkvlyvf2lgsk0y8j0043gsee6n',\n 'amount': '24000'},\n {'address': '0x79d07098f133e57d4af166befdaac444f3047062', 'amount': '20000'},\n {'address': 'osmo1nhudyvh2qypjnrcwcsp9cv9950j98flht7dutd', 'amount': '20000'},\n {'address': '0x89215855c9703c8c1b5511bf3981fac9e9be361c', 'amount': '29000'},\n {'address': 'cosmos164jrtuxr6xmqxag6j725shfawkh3erl03tklfd',\n 'amount': '29000'},\n {'address': '0x42b9866f80be4f5a40dd76381d879a77e2f23c5d', 'amount': '23000'},\n {'address': 'terra1a993zry4jvzukjpkyywd680zqncwp88fm0qy7c',\n 'amount': '23000'},\n {'address': '0xc7b288140ee2c8d4be8eac418f1d12ca9efee679', 'amount': '37000'},\n {'address': 'osmo1987zexmnnzy2yt7stqn72a7rtwnefkh583yyqp', 'amount': '37000'},\n {'address': '0xbf5772ebbf61e6428a7c3227e08be4b3397975b5', 'amount': '27000'},\n {'address': 'osmo1gk7gldypgvuyvakfs0v7xk50wxnhdepa296yvn', 'amount': '27000'},\n {'address': '0x2d4cfcf6a8b051b82708d79787c4f8c23d71ee8e', 'amount': '25000'},\n {'address': 'cosmos1rkxp0fktmtz2fnukuq0atsgnsal7m2l5chz869',\n 'amount': '25000'},\n {'address': '0x25a0ea22e3758dd19e1b36da57b417a6b98d1a46', 'amount': '26000'},\n {'address': 'terra1lmzmdcap0xu4u26a7gt6p7lrsp46sjqc8482lx',\n 'amount': '26000'},\n {'address': '0x4c82185ad62b6bd74b955faf2cb772b673216be8', 'amount': '36000'},\n {'address': 'terra1gt9u5qp678ua6u7ump2xzqs80jhe6pee7qhmsn',\n 'amount': '36000'},\n {'address': '0x22652fdc849d38a68f091662d104e4a9d1422fb4', 'amount': '37000'},\n {'address': 'terra15myxhpga42mxazcrxghulkaxh6rd90jc578d9n',\n 'amount': '37000'},\n {'address': '0x97d6fb5a1e7f8631249e7e3ba33f731ec364c438', 'amount': '32000'},\n {'address': 'cosmos1fvqwff203m8wdayqdspfxtchxx5nha2jk5r54c',\n 'amount': '32000'},\n {'address': '0xca8f44c5bec7666caaef5e389691fa9f85a8d58b', 'amount': '29000'},\n {'address': 'osmo1cswandwmq6t2xey5dgdw6q8cmwvhq303cq8796', 'amount': '29000'},\n {'address': '0xbbac04c1bb23b48569a46d81a4bd423727a3b11c', 'amount': '36000'},\n {'address': 'cosmos1x6fqy3hhl776zse9yv2d7gtlc3q2qmk6a900dd',\n 'amount': '36000'},\n {'address': '0x17c78fb91984d2a4a93d53c69fe072851b74fa60', 'amount': '27000'},\n {'address': 'osmo1a0w0a8jt00znh8m445ys2mqcktp3n0d80vgttc', 'amount': '27000'},\n {'address': '0x50b0038658b05b32bcf88f20e765341550fc6f10', 'amount': '27000'},\n {'address': 'terra1nt9dg6ftg5c94l8d8yw374s5u7cpq6vzdsazzv',\n 'amount': '27000'},\n {'address': '0xa6301c0a8afeda51e24ce26e6aa858f08fb7afaf', 'amount': '31000'},\n {'address': 'terra1ucn5qlemae3jzg5xekgj8598czx30rlmgg64c8',\n 'amount': '31000'},\n {'address': '0x558e75308f763a00e94bbfe36179bb13756a1891', 'amount': '34000'},\n {'address': 'osmo146kxjceuvh2z3zw8nzlzq004lf8cwghrfkw2ut', 'amount': '34000'},\n {'address': '0x6fa9661743c9ed6542b6c510e76ad7c7be489354', 'amount': '24000'},\n {'address': 'cosmos138vl02wr58zlps9rdp0udhf0689gcz3nm9zuqw',\n 'amount': '24000'},\n {'address': '0x12f48b1b59a156dc3945fc74887d531fb70a0a6d', 'amount': '39000'},\n {'address': 'terra1tshc3wf57aqgcc76ufk90qxxsadh37ev7e8xuz',\n 'amount': '39000'},\n {'address': '0xd1cd48f7dd0f25daf91f97cd4995b94402c6e153', 'amount': '34000'},\n {'address': 'osmo1ayp0rr0nk9ps6dfdr6cjk7ufme8u2skce35zuw', 'amount': '34000'},\n {'address': '0xce70e8fb2cb0588e5a656e4688e0cd596e64bf5e', 'amount': '27000'},\n {'address': 'cosmos19c0xm0msg5lan8juvv5c8090f07ea8pltj6dn9',\n 'amount': '27000'},\n {'address': '0xbd2f852edd9ca743522a9ead5d80ae7cae092a84', 'amount': '36000'},\n {'address': 'terra1zr8v8wumevwk8907esvav2af9vgf5dd8eku09y',\n 'amount': '36000'},\n {'address': '0x0b9c5f18f54878e14979afbb95420ac335c27f2a', 'amount': '37000'},\n {'address': 'terra1lepml32dm8nns3w75dxm0lxy2uusk7cg5d9exr',\n 'amount': '37000'},\n {'address': '0xd40322817643730a445cd76f405aee03bcb198fb', 'amount': '30000'},\n {'address': 'terra1d2qrnkj4specmnyfz222adjk4ya6hunlp5a5rj',\n 'amount': '30000'},\n {'address': '0x57037e2821ffadeec30d2b04ee0456e0a78faf0e', 'amount': '25000'},\n {'address': 'cosmos1srxqkz3v5xgxm5crz86ekglph4hy65rkgs3m7l',\n 'amount': '25000'},\n {'address': '0xc33afe84d32fedc34eafb1eaf1c8173e71114c46', 'amount': '29000'},\n {'address': 'cosmos1wkxhqmjtv5ehmvh4mcvzedx0qamzjywgmrzkrp',\n 'amount': '29000'},\n ...]" + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "root_source_list" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "code", "execution_count": 5, @@ -245,9 +274,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of addresses: 400000\n", + "Number of addresses: 4,000,000\n", + "Number of activated participants: 200,000\n", "Number of threads: 30\n", - "Bash size: 2000\n", + "Bash size: 2,000\n", "Number of tasks: 200\n" ] }, @@ -257,7 +287,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "d44a0dd4bbd74b9b9a6a97fc2874a679" + "model_id": "e60fc54397fb4eb88a0513f7d218678f" } }, "metadata": {}, @@ -268,1204 +298,1204 @@ "output_type": "stream", "text": [ "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_61.json --start_index 122000 --end_index 124001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_3.json --start_index 6000 --end_index 8001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.34s.\n", + "Done in 4431.46s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_101.json --start_index 202000 --end_index 204001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_195.json --start_index 390000 --end_index 392001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.03s.\n", + "Done in 4541.05s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_97.json --start_index 194000 --end_index 196001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_82.json --start_index 164000 --end_index 166001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.20s.\n", + "Done in 4611.90s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_168.json --start_index 336000 --end_index 338001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_18.json --start_index 36000 --end_index 38001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.13s.\n", + "Done in 4613.66s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_76.json --start_index 152000 --end_index 154001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_180.json --start_index 360000 --end_index 362001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.81s.\n", + "Done in 4616.77s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_40.json --start_index 80000 --end_index 82001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_52.json --start_index 104000 --end_index 106001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.20s.\n", + "Done in 4620.91s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_119.json --start_index 238000 --end_index 240001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_197.json --start_index 394000 --end_index 396001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.41s.\n", + "Done in 4662.26s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_163.json --start_index 326000 --end_index 328001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_66.json --start_index 132000 --end_index 134001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.55s.\n", + "Done in 4689.76s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_25.json --start_index 50000 --end_index 52001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_24.json --start_index 48000 --end_index 50001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.60s.\n", + "Done in 4694.20s.\n", + "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_96.json --start_index 192000 --end_index 194001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_85.json --start_index 170000 --end_index 172001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.61s.\n", - "\n", + "Done in 4714.42s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_67.json --start_index 134000 --end_index 136001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_91.json --start_index 182000 --end_index 184001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.74s.\n", + "Done in 4715.42s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_194.json --start_index 388000 --end_index 390001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_21.json --start_index 42000 --end_index 44001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.94s.\n", + "Done in 4728.87s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_120.json --start_index 240000 --end_index 242001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_125.json --start_index 250000 --end_index 252001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.01s.\n", + "Done in 4743.48s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_68.json --start_index 136000 --end_index 138001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_157.json --start_index 314000 --end_index 316001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.31s.\n", + "Done in 4761.10s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_116.json --start_index 232000 --end_index 234001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_95.json --start_index 190000 --end_index 192001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.32s.\n", + "Done in 4770.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_71.json --start_index 142000 --end_index 144001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_141.json --start_index 282000 --end_index 284001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.39s.\n", + "Done in 4777.86s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_111.json --start_index 222000 --end_index 224001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_170.json --start_index 340000 --end_index 342001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.39s.\n", + "Done in 4778.36s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_188.json --start_index 376000 --end_index 378001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_31.json --start_index 62000 --end_index 64001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.63s.\n", + "Done in 4796.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_152.json --start_index 304000 --end_index 306001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_124.json --start_index 248000 --end_index 250001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.72s.\n", + "Done in 4797.69s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_32.json --start_index 64000 --end_index 66001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_22.json --start_index 44000 --end_index 46001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 323.34s.\n", + "Done in 4798.53s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_38.json --start_index 76000 --end_index 78001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_73.json --start_index 146000 --end_index 148001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 323.44s.\n", + "Done in 4804.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_198.json --start_index 396000 --end_index 398001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_171.json --start_index 342000 --end_index 344001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 323.83s.\n", + "Done in 4827.44s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_99.json --start_index 198000 --end_index 200001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_123.json --start_index 246000 --end_index 248001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 323.83s.\n", + "Done in 4838.92s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_72.json --start_index 144000 --end_index 146001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_15.json --start_index 30000 --end_index 32001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 324.03s.\n", + "Done in 4839.90s.\n", + "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_125.json --start_index 250000 --end_index 252001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_147.json --start_index 294000 --end_index 296001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 323.96s.\n", - "\n", + "Done in 4853.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_55.json --start_index 110000 --end_index 112001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_158.json --start_index 316000 --end_index 318001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 325.45s.\n", + "Done in 4854.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_7.json --start_index 14000 --end_index 16001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_186.json --start_index 372000 --end_index 374001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 327.60s.\n", + "Done in 4862.88s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_178.json --start_index 356000 --end_index 358001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_86.json --start_index 172000 --end_index 174001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 328.49s.\n", + "Done in 4899.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_127.json --start_index 254000 --end_index 256001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_178.json --start_index 356000 --end_index 358001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 330.69s.\n", + "Done in 4917.60s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_130.json --start_index 260000 --end_index 262001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_90.json --start_index 180000 --end_index 182001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 334.13s.\n", + "Done in 4954.15s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_63.json --start_index 126000 --end_index 128001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_33.json --start_index 66000 --end_index 68001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 314.50s.\n", + "Done in 4428.44s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_160.json --start_index 320000 --end_index 322001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_140.json --start_index 280000 --end_index 282001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.74s.\n", + "Done in 4455.35s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_9.json --start_index 18000 --end_index 20001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_190.json --start_index 380000 --end_index 382001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.35s.\n", + "Done in 4575.13s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_141.json --start_index 282000 --end_index 284001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_194.json --start_index 388000 --end_index 390001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.97s.\n", + "Done in 4549.15s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_73.json --start_index 146000 --end_index 148001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_13.json --start_index 26000 --end_index 28001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.43s.\n", + "Done in 4392.88s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_12.json --start_index 24000 --end_index 26001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_20.json --start_index 40000 --end_index 42001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.54s.\n", + "Done in 4426.24s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_27.json --start_index 54000 --end_index 56001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 2001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.79s.\n", + "Done in 4739.43s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_6.json --start_index 12000 --end_index 14001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_172.json --start_index 344000 --end_index 346001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.33s.\n", + "Done in 4492.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_95.json --start_index 190000 --end_index 192001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_144.json --start_index 288000 --end_index 290001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.44s.\n", + "Done in 4632.38s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_175.json --start_index 350000 --end_index 352001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_113.json --start_index 226000 --end_index 228001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.14s.\n", + "Done in 4614.34s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_35.json --start_index 70000 --end_index 72001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_46.json --start_index 92000 --end_index 94001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.00s.\n", + "Done in 4692.86s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_24.json --start_index 48000 --end_index 50001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_188.json --start_index 376000 --end_index 378001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.54s.\n", + "Done in 4697.63s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_100.json --start_index 200000 --end_index 202001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_72.json --start_index 144000 --end_index 146001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.22s.\n", + "Done in 4469.90s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_78.json --start_index 156000 --end_index 158001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_161.json --start_index 322000 --end_index 324001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.88s.\n", + "Done in 4699.60s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_136.json --start_index 272000 --end_index 274001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_49.json --start_index 98000 --end_index 100001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.17s.\n", + "Done in 4559.79s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_104.json --start_index 208000 --end_index 210001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_8.json --start_index 16000 --end_index 18001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.24s.\n", + "Done in 4598.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_85.json --start_index 170000 --end_index 172001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_16.json --start_index 32000 --end_index 34001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.25s.\n", + "Done in 4667.02s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_56.json --start_index 112000 --end_index 114001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_103.json --start_index 206000 --end_index 208001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.82s.\n", + "Done in 4613.40s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_129.json --start_index 258000 --end_index 260001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_88.json --start_index 176000 --end_index 178001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.49s.\n", + "Done in 4605.85s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_30.json --start_index 60000 --end_index 62001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_57.json --start_index 114000 --end_index 116001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.24s.\n", + "Done in 4584.81s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_58.json --start_index 116000 --end_index 118001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_34.json --start_index 68000 --end_index 70001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.45s.\n", + "Done in 4681.68s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_166.json --start_index 332000 --end_index 334001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_138.json --start_index 276000 --end_index 278001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.46s.\n", + "Done in 4742.28s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_131.json --start_index 262000 --end_index 264001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_68.json --start_index 136000 --end_index 138001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.20s.\n", + "Done in 4682.19s.\n", + "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_47.json --start_index 94000 --end_index 96001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_32.json --start_index 64000 --end_index 66001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.19s.\n", - "\n", + "Done in 4647.49s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_158.json --start_index 316000 --end_index 318001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_151.json --start_index 302000 --end_index 304001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 324.16s.\n", + "Done in 4741.17s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_37.json --start_index 74000 --end_index 76001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_177.json --start_index 354000 --end_index 356001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.50s.\n", + "Done in 4753.09s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_43.json --start_index 86000 --end_index 88001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_193.json --start_index 386000 --end_index 388001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 324.21s.\n", + "Done in 4671.37s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_181.json --start_index 362000 --end_index 364001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_109.json --start_index 218000 --end_index 220001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 324.56s.\n", + "Done in 4627.64s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_20.json --start_index 40000 --end_index 42001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_58.json --start_index 116000 --end_index 118001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.79s.\n", + "Done in 4849.45s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_74.json --start_index 148000 --end_index 150001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_60.json --start_index 120000 --end_index 122001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 314.80s.\n", + "Done in 4692.76s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_44.json --start_index 88000 --end_index 90001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_94.json --start_index 188000 --end_index 190001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.04s.\n", + "Done in 4367.04s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_79.json --start_index 158000 --end_index 160001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_9.json --start_index 18000 --end_index 20001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.42s.\n", + "Done in 4753.51s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_126.json --start_index 252000 --end_index 254001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_14.json --start_index 28000 --end_index 30001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.88s.\n", + "Done in 4440.52s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_86.json --start_index 172000 --end_index 174001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_71.json --start_index 142000 --end_index 144001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.61s.\n", + "Done in 4550.82s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_59.json --start_index 118000 --end_index 120001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_75.json --start_index 150000 --end_index 152001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.28s.\n", + "Done in 4506.15s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_195.json --start_index 390000 --end_index 392001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_183.json --start_index 366000 --end_index 368001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.75s.\n", + "Done in 4492.13s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_92.json --start_index 184000 --end_index 186001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_36.json --start_index 72000 --end_index 74001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.02s.\n", + "Done in 4510.05s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_64.json --start_index 128000 --end_index 130001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_116.json --start_index 232000 --end_index 234001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.39s.\n", + "Done in 4563.18s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_34.json --start_index 68000 --end_index 70001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_27.json --start_index 54000 --end_index 56001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.58s.\n", + "Done in 4595.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_155.json --start_index 310000 --end_index 312001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_108.json --start_index 216000 --end_index 218001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.47s.\n", + "Done in 4690.08s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_161.json --start_index 322000 --end_index 324001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_165.json --start_index 330000 --end_index 332001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.01s.\n", + "Done in 4618.00s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_39.json --start_index 78000 --end_index 80001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_39.json --start_index 78000 --end_index 80001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.37s.\n", + "Done in 4565.52s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_118.json --start_index 236000 --end_index 238001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_100.json --start_index 200000 --end_index 202001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.95s.\n", + "Done in 4449.05s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_2.json --start_index 4000 --end_index 6001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_114.json --start_index 228000 --end_index 230001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.59s.\n", + "Done in 4581.05s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_89.json --start_index 178000 --end_index 180001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_56.json --start_index 112000 --end_index 114001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.92s.\n", + "Done in 4668.34s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_148.json --start_index 296000 --end_index 298001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_38.json --start_index 76000 --end_index 78001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.98s.\n", + "Done in 4489.43s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_84.json --start_index 168000 --end_index 170001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_182.json --start_index 364000 --end_index 366001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 323.30s.\n", + "Done in 4629.28s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_19.json --start_index 38000 --end_index 40001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_120.json --start_index 240000 --end_index 242001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.30s.\n", + "Done in 4430.26s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_146.json --start_index 292000 --end_index 294001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_1.json --start_index 2000 --end_index 4001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.54s.\n", + "Done in 4640.39s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_48.json --start_index 96000 --end_index 98001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_4.json --start_index 8000 --end_index 10001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.73s.\n", + "Done in 4718.29s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_117.json --start_index 234000 --end_index 236001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_50.json --start_index 100000 --end_index 102001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.47s.\n", + "Done in 4613.32s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_139.json --start_index 278000 --end_index 280001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_131.json --start_index 262000 --end_index 264001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.78s.\n", + "Done in 4773.12s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_16.json --start_index 32000 --end_index 34001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_174.json --start_index 348000 --end_index 350001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.70s.\n", + "Done in 4534.06s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_172.json --start_index 344000 --end_index 346001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_153.json --start_index 306000 --end_index 308001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.47s.\n", + "Done in 4627.12s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_184.json --start_index 368000 --end_index 370001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_110.json --start_index 220000 --end_index 222001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.71s.\n", + "Done in 4562.56s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_31.json --start_index 62000 --end_index 64001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_25.json --start_index 50000 --end_index 52001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.47s.\n", + "Done in 4657.17s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_133.json --start_index 266000 --end_index 268001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_83.json --start_index 166000 --end_index 168001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.37s.\n", + "Done in 4682.50s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_93.json --start_index 186000 --end_index 188001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_154.json --start_index 308000 --end_index 310001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.83s.\n", + "Done in 4586.89s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_36.json --start_index 72000 --end_index 74001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_156.json --start_index 312000 --end_index 314001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 324.16s.\n", + "Done in 4647.61s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_150.json --start_index 300000 --end_index 302001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_181.json --start_index 362000 --end_index 364001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.72s.\n", + "Done in 4692.09s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_75.json --start_index 150000 --end_index 152001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_152.json --start_index 304000 --end_index 306001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.88s.\n", + "Done in 4570.17s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_105.json --start_index 210000 --end_index 212001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_48.json --start_index 96000 --end_index 98001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.90s.\n", + "Done in 4475.72s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_28.json --start_index 56000 --end_index 58001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_41.json --start_index 82000 --end_index 84001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.27s.\n", + "Done in 4672.53s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_197.json --start_index 394000 --end_index 396001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_148.json --start_index 296000 --end_index 298001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.45s.\n", + "Done in 4491.39s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_140.json --start_index 280000 --end_index 282001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_79.json --start_index 158000 --end_index 160001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.96s.\n", + "Done in 4444.57s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_115.json --start_index 230000 --end_index 232001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_150.json --start_index 300000 --end_index 302001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.55s.\n", + "Done in 4517.59s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_54.json --start_index 108000 --end_index 110001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_133.json --start_index 266000 --end_index 268001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.93s.\n", + "Done in 4414.65s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_149.json --start_index 298000 --end_index 300001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_155.json --start_index 310000 --end_index 312001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.01s.\n", + "Done in 4527.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_138.json --start_index 276000 --end_index 278001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_175.json --start_index 350000 --end_index 352001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.42s.\n", + "Done in 4602.99s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_77.json --start_index 154000 --end_index 156001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_117.json --start_index 234000 --end_index 236001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.11s.\n", + "Done in 4548.11s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_102.json --start_index 204000 --end_index 206001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_119.json --start_index 238000 --end_index 240001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.21s.\n", + "Done in 4576.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_3.json --start_index 6000 --end_index 8001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_89.json --start_index 178000 --end_index 180001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.45s.\n", + "Done in 4644.57s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_124.json --start_index 248000 --end_index 250001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_74.json --start_index 148000 --end_index 150001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.90s.\n", + "Done in 4398.30s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_45.json --start_index 90000 --end_index 92001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_61.json --start_index 122000 --end_index 124001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.96s.\n", + "Done in 4518.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_91.json --start_index 182000 --end_index 184001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_87.json --start_index 174000 --end_index 176001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.28s.\n", + "Done in 4590.84s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_196.json --start_index 392000 --end_index 394001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_62.json --start_index 124000 --end_index 126001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.58s.\n", + "Done in 4560.75s.\n", + "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_123.json --start_index 246000 --end_index 248001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_43.json --start_index 86000 --end_index 88001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.90s.\n", - "\n", + "Done in 4764.06s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_57.json --start_index 114000 --end_index 116001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_187.json --start_index 374000 --end_index 376001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.47s.\n", + "Done in 4550.97s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_170.json --start_index 340000 --end_index 342001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_54.json --start_index 108000 --end_index 110001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.31s.\n", + "Done in 4557.27s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_5.json --start_index 10000 --end_index 12001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_2.json --start_index 4000 --end_index 6001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.15s.\n", + "Done in 4602.29s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_113.json --start_index 226000 --end_index 228001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_142.json --start_index 284000 --end_index 286001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.38s.\n", + "Done in 4352.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_22.json --start_index 44000 --end_index 46001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_51.json --start_index 102000 --end_index 104001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.42s.\n", + "Done in 4641.66s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_83.json --start_index 166000 --end_index 168001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_160.json --start_index 320000 --end_index 322001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.10s.\n", + "Done in 4536.14s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_191.json --start_index 382000 --end_index 384001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_121.json --start_index 242000 --end_index 244001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.38s.\n", + "Done in 4643.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_114.json --start_index 228000 --end_index 230001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_192.json --start_index 384000 --end_index 386001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.15s.\n", + "Done in 4814.52s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_42.json --start_index 84000 --end_index 86001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_45.json --start_index 90000 --end_index 92001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.89s.\n", + "Done in 4635.52s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_14.json --start_index 28000 --end_index 30001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_69.json --start_index 138000 --end_index 140001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.46s.\n", + "Done in 4498.18s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_180.json --start_index 360000 --end_index 362001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_130.json --start_index 260000 --end_index 262001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 327.28s.\n", + "Done in 4655.50s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_108.json --start_index 216000 --end_index 218001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_128.json --start_index 256000 --end_index 258001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.73s.\n", + "Done in 4695.65s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_189.json --start_index 378000 --end_index 380001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_29.json --start_index 58000 --end_index 60001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.61s.\n", + "Done in 4661.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_192.json --start_index 384000 --end_index 386001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_84.json --start_index 168000 --end_index 170001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.82s.\n", + "Done in 4623.96s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_190.json --start_index 380000 --end_index 382001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_101.json --start_index 202000 --end_index 204001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.28s.\n", + "Done in 4787.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_162.json --start_index 324000 --end_index 326001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_173.json --start_index 346000 --end_index 348001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.02s.\n", + "Done in 4522.89s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_169.json --start_index 338000 --end_index 340001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_159.json --start_index 318000 --end_index 320001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.24s.\n", + "Done in 4431.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_50.json --start_index 100000 --end_index 102001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_139.json --start_index 278000 --end_index 280001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.55s.\n", + "Done in 4611.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_153.json --start_index 306000 --end_index 308001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_47.json --start_index 94000 --end_index 96001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 312.60s.\n", + "Done in 4708.99s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_107.json --start_index 214000 --end_index 216001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_136.json --start_index 272000 --end_index 274001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.43s.\n", + "Done in 4705.96s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_143.json --start_index 286000 --end_index 288001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_53.json --start_index 106000 --end_index 108001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 312.39s.\n", + "Done in 4566.88s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_142.json --start_index 284000 --end_index 286001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_102.json --start_index 204000 --end_index 206001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.83s.\n", + "Done in 4735.04s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_157.json --start_index 314000 --end_index 316001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_185.json --start_index 370000 --end_index 372001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 314.06s.\n", + "Done in 4621.38s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_147.json --start_index 294000 --end_index 296001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_97.json --start_index 194000 --end_index 196001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.58s.\n", + "Done in 4660.89s.\n", + "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_90.json --start_index 180000 --end_index 182001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_127.json --start_index 254000 --end_index 256001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.51s.\n", - "\n", + "Done in 4689.04s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_186.json --start_index 372000 --end_index 374001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_10.json --start_index 20000 --end_index 22001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.75s.\n", + "Done in 4548.37s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_193.json --start_index 386000 --end_index 388001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_132.json --start_index 264000 --end_index 266001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.20s.\n", + "Done in 4428.79s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_66.json --start_index 132000 --end_index 134001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_99.json --start_index 198000 --end_index 200001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.21s.\n", + "Done in 4773.21s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_110.json --start_index 220000 --end_index 222001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_176.json --start_index 352000 --end_index 354001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.40s.\n", + "Done in 4514.66s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_53.json --start_index 106000 --end_index 108001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_145.json --start_index 290000 --end_index 292001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 311.87s.\n", + "Done in 4586.77s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_82.json --start_index 164000 --end_index 166001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_118.json --start_index 236000 --end_index 238001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.58s.\n", + "Done in 4793.93s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_87.json --start_index 174000 --end_index 176001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_5.json --start_index 10000 --end_index 12001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.61s.\n", + "Done in 4708.82s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_156.json --start_index 312000 --end_index 314001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_112.json --start_index 224000 --end_index 226001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 321.21s.\n", + "Done in 4704.65s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_174.json --start_index 348000 --end_index 350001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_143.json --start_index 286000 --end_index 288001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.24s.\n", + "Done in 4662.08s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_62.json --start_index 124000 --end_index 126001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_167.json --start_index 334000 --end_index 336001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.66s.\n", + "Done in 4483.75s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_51.json --start_index 102000 --end_index 104001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_26.json --start_index 52000 --end_index 54001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.10s.\n", + "Done in 4701.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_151.json --start_index 302000 --end_index 304001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_37.json --start_index 74000 --end_index 76001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.50s.\n", + "Done in 4727.87s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_15.json --start_index 30000 --end_index 32001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_122.json --start_index 244000 --end_index 246001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.95s.\n", + "Done in 4623.74s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_70.json --start_index 140000 --end_index 142001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_169.json --start_index 338000 --end_index 340001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.00s.\n", + "Done in 4636.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_8.json --start_index 16000 --end_index 18001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_162.json --start_index 324000 --end_index 326001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 323.01s.\n", + "Done in 4668.33s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_80.json --start_index 160000 --end_index 162001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_44.json --start_index 88000 --end_index 90001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.68s.\n", + "Done in 4782.43s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_106.json --start_index 212000 --end_index 214001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_134.json --start_index 268000 --end_index 270001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.06s.\n", + "Done in 4572.38s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_94.json --start_index 188000 --end_index 190001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_59.json --start_index 118000 --end_index 120001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 322.84s.\n", + "Done in 4633.15s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_10.json --start_index 20000 --end_index 22001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_11.json --start_index 22000 --end_index 24001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 314.36s.\n", + "Done in 4507.95s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_122.json --start_index 244000 --end_index 246001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_42.json --start_index 84000 --end_index 86001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.51s.\n", + "Done in 4616.28s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_132.json --start_index 264000 --end_index 266001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_135.json --start_index 270000 --end_index 272001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.90s.\n", + "Done in 4703.25s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_81.json --start_index 162000 --end_index 164001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_96.json --start_index 192000 --end_index 194001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.07s.\n", + "Done in 4561.00s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_171.json --start_index 342000 --end_index 344001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_28.json --start_index 56000 --end_index 58001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 314.38s.\n", + "Done in 4670.71s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_185.json --start_index 370000 --end_index 372001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_179.json --start_index 358000 --end_index 360001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.20s.\n", + "Done in 4652.03s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_121.json --start_index 242000 --end_index 244001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_76.json --start_index 152000 --end_index 154001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 311.97s.\n", + "Done in 4567.61s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_103.json --start_index 206000 --end_index 208001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_77.json --start_index 154000 --end_index 156001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 312.05s.\n", + "Done in 4654.69s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_17.json --start_index 34000 --end_index 36001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_12.json --start_index 24000 --end_index 26001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 306.10s.\n", + "Done in 4889.73s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 2001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_106.json --start_index 212000 --end_index 214001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 312.23s.\n", + "Done in 4733.09s.\n", + "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_128.json --start_index 256000 --end_index 258001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_92.json --start_index 184000 --end_index 186001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 308.34s.\n", - "\n", + "Done in 4587.12s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_33.json --start_index 66000 --end_index 68001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_23.json --start_index 46000 --end_index 48001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.34s.\n", + "Done in 4727.18s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_179.json --start_index 358000 --end_index 360001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_63.json --start_index 126000 --end_index 128001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.99s.\n", + "Done in 4753.36s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_135.json --start_index 270000 --end_index 272001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_189.json --start_index 378000 --end_index 380001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.41s.\n", + "Done in 4761.88s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_145.json --start_index 290000 --end_index 292001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_166.json --start_index 332000 --end_index 334001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.78s.\n", + "Done in 4687.52s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_29.json --start_index 58000 --end_index 60001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_129.json --start_index 258000 --end_index 260001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.16s.\n", + "Done in 4658.31s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_52.json --start_index 104000 --end_index 106001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_196.json --start_index 392000 --end_index 394001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.25s.\n", + "Done in 4573.98s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_65.json --start_index 130000 --end_index 132001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_149.json --start_index 298000 --end_index 300001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.83s.\n", + "Done in 4637.79s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_4.json --start_index 8000 --end_index 10001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_98.json --start_index 196000 --end_index 198001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 320.19s.\n", + "Done in 4755.03s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_177.json --start_index 354000 --end_index 356001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_93.json --start_index 186000 --end_index 188001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.75s.\n", + "Done in 4487.51s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_18.json --start_index 36000 --end_index 38001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_81.json --start_index 162000 --end_index 164001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.82s.\n", + "Done in 4596.44s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_187.json --start_index 374000 --end_index 376001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_163.json --start_index 326000 --end_index 328001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.64s.\n", + "Done in 4613.06s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_159.json --start_index 318000 --end_index 320001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_70.json --start_index 140000 --end_index 142001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 315.54s.\n", + "Done in 4667.99s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_21.json --start_index 42000 --end_index 44001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_7.json --start_index 14000 --end_index 16001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.10s.\n", + "Done in 4527.71s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_164.json --start_index 328000 --end_index 330001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_6.json --start_index 12000 --end_index 14001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.54s.\n", + "Done in 4691.32s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_26.json --start_index 52000 --end_index 54001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_78.json --start_index 156000 --end_index 158001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 319.47s.\n", + "Done in 4671.19s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_1.json --start_index 2000 --end_index 4001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_105.json --start_index 210000 --end_index 212001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 316.51s.\n", + "Done in 4715.41s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_41.json --start_index 82000 --end_index 84001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_55.json --start_index 110000 --end_index 112001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 317.45s.\n", + "Done in 4610.12s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_23.json --start_index 46000 --end_index 48001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_65.json --start_index 130000 --end_index 132001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 318.99s.\n", + "Done in 4692.03s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_98.json --start_index 196000 --end_index 198001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_164.json --start_index 328000 --end_index 330001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 313.07s.\n", + "Done in 4581.77s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_137.json --start_index 274000 --end_index 276001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_17.json --start_index 34000 --end_index 36001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 217.21s.\n", + "Done in 2805.47s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_112.json --start_index 224000 --end_index 226001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_80.json --start_index 160000 --end_index 162001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 214.41s.\n", + "Done in 2870.32s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_165.json --start_index 330000 --end_index 332001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_184.json --start_index 368000 --end_index 370001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 218.41s.\n", + "Done in 2689.99s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_134.json --start_index 268000 --end_index 270001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_104.json --start_index 208000 --end_index 210001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 215.45s.\n", + "Done in 2742.25s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_154.json --start_index 308000 --end_index 310001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_64.json --start_index 128000 --end_index 130001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 216.35s.\n", + "Done in 2785.05s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_199.json --start_index 398000 --end_index 400001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_115.json --start_index 230000 --end_index 232001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 217.23s.\n", + "Done in 2797.40s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_88.json --start_index 176000 --end_index 178001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_67.json --start_index 134000 --end_index 136001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 222.19s.\n", + "Done in 2712.96s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_167.json --start_index 334000 --end_index 336001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_146.json --start_index 292000 --end_index 294001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 226.29s.\n", + "Done in 2826.40s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_13.json --start_index 26000 --end_index 28001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_111.json --start_index 222000 --end_index 224001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 229.04s.\n", + "Done in 2744.03s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_109.json --start_index 218000 --end_index 220001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_30.json --start_index 60000 --end_index 62001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 229.42s.\n", + "Done in 2767.54s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_144.json --start_index 288000 --end_index 290001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_107.json --start_index 214000 --end_index 216001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 211.23s.\n", + "Done in 2619.35s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_183.json --start_index 366000 --end_index 368001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_35.json --start_index 70000 --end_index 72001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 215.04s.\n", + "Done in 2709.55s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_46.json --start_index 92000 --end_index 94001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_40.json --start_index 80000 --end_index 82001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 217.06s.\n", + "Done in 2666.31s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_69.json --start_index 138000 --end_index 140001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_199.json --start_index 398000 --end_index 400001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 216.79s.\n", + "Done in 2661.00s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_173.json --start_index 346000 --end_index 348001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_19.json --start_index 38000 --end_index 40001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 214.72s.\n", + "Done in 2673.59s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_176.json --start_index 352000 --end_index 354001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_191.json --start_index 382000 --end_index 384001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 222.78s.\n", + "Done in 2683.23s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_49.json --start_index 98000 --end_index 100001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_137.json --start_index 274000 --end_index 276001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 208.71s.\n", + "Done in 2650.81s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_11.json --start_index 22000 --end_index 24001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_126.json --start_index 252000 --end_index 254001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 219.62s.\n", + "Done in 2724.37s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_60.json --start_index 120000 --end_index 122001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_198.json --start_index 396000 --end_index 398001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 221.95s.\n", + "Done in 2654.56s.\n", "\n", "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_200000_addresses.json --output temp/proofs_182.json --start_index 364000 --end_index 366001\n", - "Merkle root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", + "$ ts-node index.ts --input root_testing_source_2000000_addresses.json --output temp/proofs_168.json --start_index 336000 --end_index 338001\n", + "Merkle root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", "Number of addresses in the Merkle tree: 2001\n", - "Done in 218.41s.\n", + "Done in 2689.44s.\n", "\n" ] } @@ -1479,12 +1509,12 @@ " (ROOT_SOURCE_FILE_NAME,\n", " f'temp/proofs_{i}.json',\n", " i * BASH_SIZE,\n", - " min(NUMBER_OF_PARTICIPANTS * 2 + 1, (i + 1) * BASH_SIZE + 1))\n", - " for i in range(ceil(2 * NUMBER_OF_PARTICIPANTS/BASH_SIZE))\n", + " min(NUMBER_OF_ACTIVATED_PARTICIPANTS * 2 + 1, (i + 1) * BASH_SIZE + 1))\n", + " for i in range(ceil(2 * NUMBER_OF_ACTIVATED_PARTICIPANTS/BASH_SIZE))\n", " )\n", ")\n", "if CALCULATE_PROOFS:\n", - " print(f'Number of addresses: {2 * NUMBER_OF_PARTICIPANTS}\\nNumber of threads: {NUMBER_OF_THREADS}\\nBash size: {BASH_SIZE}\\nNumber of tasks: {len(tasks)}')\n", + " print(f'Number of addresses: {2 * NUMBER_OF_PARTICIPANTS:>,}\\nNumber of activated participants: {NUMBER_OF_ACTIVATED_PARTICIPANTS:>,}\\nNumber of threads: {NUMBER_OF_THREADS:>,}\\nBash size: {BASH_SIZE:>,}\\nNumber of tasks: {len(tasks):>,}')\n", " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", " res = pool.starmap(get_proofs, tqdm(tasks, total=len(tasks)))\n", " assert res == [True] * len(res)" @@ -1502,8 +1532,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 33000 john16517597490 Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF \n1 33000 john16517597490 Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF \n2 36000 john16517597491 QmPwSc85Jmiw4mTS4esQNnPRwHgiXDFSVqPX7Dquv67L61 \n3 26000 john16517597492 QmWdMd8DxpakrEidFnKqFgZwSNcBuVYVYMzvKNE82C7ZQw \n4 31000 john16517597493 QmaEcQYeQ6TzsoFmF54MU6p3RmUv22zfzv5jNhdRPDcV3g \n\n ethereum_address \\\n0 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb \n1 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb \n2 0xd4401c790797baff16eb3d65502dd8cb6758ddb5 \n3 0xc834f631039eba3e7fede0b3bee5f7b3aabcdc1f \n4 0x9a2fcf7df51f24a72631694ba64745cbc511d4d3 \n\n ethereum_private_key \\\n0 0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530... \n1 0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530... \n2 0x7271c13a0847eecb082b5efc35987ff972b944d084b1... \n3 0xf3a8658346c3888bdc236ccdd07532996eebbd299fa5... \n4 0x683ab3cc400219f889b0ff07a8157d8065f856df6019... \n\n bostrom_address \\\n0 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z \n1 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z \n2 bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5 \n3 bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9 \n4 bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6 \n\n cosmos_address \\\n0 terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9 \n1 terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9 \n2 osmo1uxa2sxtv7npaj6863fez5ccv2qfwszf29kft4p \n3 terra12rwwttemkn7w3xanpqtu05euzn2nsjzfn3rj9z \n4 terra15xdumxh2xyx5trteh689pkjkf3vkc0eqhxq4ra \n\n cosmos_seed \\\n0 wheel saddle egg habit ribbon chase pilot focu... \n1 wheel saddle egg habit ribbon chase pilot focu... \n2 math escape slow grab honey ginger cage canoe ... \n3 kangaroo sport welcome kangaroo digital retrea... \n4 poverty glass bid buyer pass morning vanish ri... \n\n message \\\n0 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z... \n1 bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z... \n2 bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5... \n3 bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9... \n4 bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6... \n\n ethereum_message_signature \\\n0 0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50... \n1 0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50... \n2 0x98f805ceef6fbc3e185beb0bc25e03070da3997aad9f... \n3 0xc611b87310ee2d1a2cf66626afeb0c05cd9361db397f... \n4 0x64b80d0ae3e755e5ff94ac37f3d04c6254a104a6c178... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028... \n1 {'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028... \n2 {'pub_key': 'AlgnuX3+tvoZEEbXKTuGpW/mQbSNBmoxB... \n3 {'pub_key': 'AkSMmBe8/3Z/x3FQDHdA0HmPC6gSS/VqI... \n4 {'pub_key': 'Aqn4lUPTAD2ZiH2ncmLQBvUhxlnaxOmj+... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX... \n1 eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX... \n2 eyJwdWJfa2V5IjoiQWxnbnVYMyt0dm9aRUViWEtUdUdwVy... \n3 eyJwdWJfa2V5IjoiQWtTTW1CZTgvM1oveDNGUURIZEEwSG... \n4 eyJwdWJfa2V5IjoiQXFuNGxVUFRBRDJaaUgybmNtTFFCdl... \n\n ethereum_proof \\\n0 [7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349... \n1 [7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349... \n2 [da1f10a4786db051f14e7036d366179ea44979e4e434b... \n3 [2aa552a7021fc58abe81a3ecb586a774280bc8fd5ec45... \n4 [5b762b4b88c7e19883546c11d83858cc7462925fdbb5f... \n\n cosmos_proof \n0 [337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12... \n1 [337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12... \n2 [ecce50b48369ad2087983352a8338d81fd15aaa78a3c3... \n3 [eebba466aa32657b543e235662293878a16080b4268d9... \n4 [7350ba83595c6019a8df9d828592fa842ed525e36e5c3... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
033000john16517597490Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF0xb13349fc01611fb3d5eaa220ce20d7935503bfdb0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59zterra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9wheel saddle egg habit ribbon chase pilot focu...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z...0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50...{'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028...eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX...[7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349...[337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12...
133000john16517597490Qme4FqA7kkwm4G14MEBXUGycmLN1j3CAaNgfYoysHZK5fF0xb13349fc01611fb3d5eaa220ce20d7935503bfdb0x87b3b8f2bb51d574cf3c97302f01bc71e0f77746d530...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59zterra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9wheel saddle egg habit ribbon chase pilot focu...bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z...0x4feef418397ebfd0cae573e031bebe1f69d486c6ee50...{'pub_key': 'AjX/LeG0AQo/SXxmETFE4msQBpGN1w028...eyJwdWJfa2V5IjoiQWpYL0xlRzBBUW8vU1h4bUVURkU0bX...[7cf6e91feee2215ed6f455ffe4b5f1f51f4e1d7e05349...[337592eb65bf5bd9a5ca8618c1bf1ec640f84a9c4da12...
236000john16517597491QmPwSc85Jmiw4mTS4esQNnPRwHgiXDFSVqPX7Dquv67L610xd4401c790797baff16eb3d65502dd8cb6758ddb50x7271c13a0847eecb082b5efc35987ff972b944d084b1...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5osmo1uxa2sxtv7npaj6863fez5ccv2qfwszf29kft4pmath escape slow grab honey ginger cage canoe ...bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5...0x98f805ceef6fbc3e185beb0bc25e03070da3997aad9f...{'pub_key': 'AlgnuX3+tvoZEEbXKTuGpW/mQbSNBmoxB...eyJwdWJfa2V5IjoiQWxnbnVYMyt0dm9aRUViWEtUdUdwVy...[da1f10a4786db051f14e7036d366179ea44979e4e434b...[ecce50b48369ad2087983352a8338d81fd15aaa78a3c3...
326000john16517597492QmWdMd8DxpakrEidFnKqFgZwSNcBuVYVYMzvKNE82C7ZQw0xc834f631039eba3e7fede0b3bee5f7b3aabcdc1f0xf3a8658346c3888bdc236ccdd07532996eebbd299fa5...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9terra12rwwttemkn7w3xanpqtu05euzn2nsjzfn3rj9zkangaroo sport welcome kangaroo digital retrea...bostrom12rwwttemkn7w3xanpqtu05euzn2nsjzfkxdpe9...0xc611b87310ee2d1a2cf66626afeb0c05cd9361db397f...{'pub_key': 'AkSMmBe8/3Z/x3FQDHdA0HmPC6gSS/VqI...eyJwdWJfa2V5IjoiQWtTTW1CZTgvM1oveDNGUURIZEEwSG...[2aa552a7021fc58abe81a3ecb586a774280bc8fd5ec45...[eebba466aa32657b543e235662293878a16080b4268d9...
431000john16517597493QmaEcQYeQ6TzsoFmF54MU6p3RmUv22zfzv5jNhdRPDcV3g0x9a2fcf7df51f24a72631694ba64745cbc511d4d30x683ab3cc400219f889b0ff07a8157d8065f856df6019...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6terra15xdumxh2xyx5trteh689pkjkf3vkc0eqhxq4rapoverty glass bid buyer pass morning vanish ri...bostrom15xdumxh2xyx5trteh689pkjkf3vkc0eqj3wxl6...0x64b80d0ae3e755e5ff94ac37f3d04c6254a104a6c178...{'pub_key': 'Aqn4lUPTAD2ZiH2ncmLQBvUhxlnaxOmj+...eyJwdWJfa2V5IjoiQXFuNGxVUFRBRDJaaUgybmNtTFFCdl...[5b762b4b88c7e19883546c11d83858cc7462925fdbb5f...[7350ba83595c6019a8df9d828592fa842ed525e36e5c3...
\n
" + "text/plain": " amount nickname avatar \\\n0 28000 john16521126150 QmZ6SJnBFk2b53Gt2ektwsp7ECWP6km2i27UoKybR1q4GX \n1 25000 john16521126151 QmYmXFtpG48H5E12zTVs1Le979cQgB6QT8KBdx6t1Wf7ms \n2 31000 john16521126152 QmZDhn45Tup8GnUd4LQHfCtF2Hf9frxXHJ5k7Gm4XK6R2J \n3 40000 john16521126153 QmaauStuBTuHUKDveQ5dHsBC4Fo7SZFsgGecXsbwXcoyAh \n4 33000 john16521126154 QmSAUL7hfidipezWxBG9RqCwZaCxmrkQQyHzeqnGQ6zRJv \n\n ethereum_address \\\n0 0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d \n1 0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da \n2 0x802e5043a53b8833353bd97e9be85359d05fa5a1 \n3 0x3b1cf67d050e257a1a05eb17f3c346e131cf3895 \n4 0x107481469e6faf29cafc4f7a13265962b83e4667 \n\n ethereum_private_key \\\n0 0xd7190e045f87b1287efa6ef1198ebbeecf2e9ba95d63... \n1 0xbf32cafd205fde13b5add27e899e6c36e75a85473b6c... \n2 0x5afaa05bffed2385e03a80dd25dd84215c8ee846cbb0... \n3 0x28876dc39babed2bbf212786b3f8adc08195ac967f92... \n4 0x2cf4bf87498e6591a96e2e47fc9035ffba8c86179db6... \n\n bostrom_address \\\n0 bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l \n1 bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z \n2 bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7 \n3 bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev \n4 bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5 \n\n cosmos_address \\\n0 cosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0c \n1 cosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409 \n2 osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2t \n3 cosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8t \n4 osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27p \n\n cosmos_seed \\\n0 head maximum daring merit shoulder toast bone ... \n1 title oval ten able delay target tag orphan go... \n2 peanut thing retreat tool pattern limb pet tub... \n3 raise cruise fancy text enrich tower anxiety s... \n4 seed rebuild sick drive conduct junior soap ca... \n\n message \\\n0 bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l... \n1 bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z... \n2 bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7... \n3 bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev... \n4 bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5... \n\n ethereum_message_signature \\\n0 0x55a59e770124f8a240a6dfe4199167093f32f8c06c93... \n1 0xb13e85182b680b7c10a21eac40f6d17a5eb50835b7b0... \n2 0x3e97255fd5e618a226fbfbd1eb4720447a24e036f054... \n3 0x0cf6b34983d62ad2a3443da27515c232da5c4ed19c41... \n4 0x9c4ee685f2c1a0acfd1c758eee4397492d69037a5642... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A3DPjRBjtIHuj+EleMfBftzEf+Uotgj6s... \n1 {'pub_key': 'A1lHzZScCEr+Hi1QGv/M0qxxjl4B/YEP8... \n2 {'pub_key': 'A8bfcVcw0FBGkuWqFiLv8GzPnohSt2zPT... \n3 {'pub_key': 'AsglEaBaS1Y7UAel9r7T0jPhrEeXfAdI/... \n4 {'pub_key': 'A9BSJkUEagjdxipS01BCl00tCidT4yJWA... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTNEUGpSQmp0SUh1aitFbGVNZkJmdH... \n1 eyJwdWJfa2V5IjoiQTFsSHpaU2NDRXIrSGkxUUd2L00wcX... \n2 eyJwdWJfa2V5IjoiQThiZmNWY3cwRkJHa3VXcUZpTHY4R3... \n3 eyJwdWJfa2V5IjoiQXNnbEVhQmFTMVk3VUFlbDlyN1Qwal... \n4 eyJwdWJfa2V5IjoiQTlCU0prVUVhZ2pkeGlwUzAxQkNsMD... \n\n ethereum_proof \\\n0 [ee71d1332ec65bd98218f7a092f913cc3f6129af546ba... \n1 [a3da1d8fb3e13bc517f0adf1ab26f1acad0173c8032ff... \n2 [c91e3465b66a0f8908c29e329f105de3370057e110a3f... \n3 [1ba325a63aa614d21335e935685391d5e8d15e9cdbd1c... \n4 [545a98673c22a235c765f77deacb9abd35bf39b226548... \n\n cosmos_proof \n0 [c97135be288dfda2f61eaa71ff7d87370d666468c66e5... \n1 [41a1393f2d5345e9789ba5e1a46aeaac3e60290ce92e9... \n2 [e674ee80ddbad3ab382d41f309af880cea888ec148884... \n3 [70f8ea11fc54463b6d1d04e023ea7af8ce86afb494343... \n4 [28f4284c85cf51975520750d286fe29135f8d3a106bce... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
028000john16521126150QmZ6SJnBFk2b53Gt2ektwsp7ECWP6km2i27UoKybR1q4GX0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d0xd7190e045f87b1287efa6ef1198ebbeecf2e9ba95d63...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3lcosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0chead maximum daring merit shoulder toast bone ...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l...0x55a59e770124f8a240a6dfe4199167093f32f8c06c93...{'pub_key': 'A3DPjRBjtIHuj+EleMfBftzEf+Uotgj6s...eyJwdWJfa2V5IjoiQTNEUGpSQmp0SUh1aitFbGVNZkJmdH...[ee71d1332ec65bd98218f7a092f913cc3f6129af546ba...[c97135be288dfda2f61eaa71ff7d87370d666468c66e5...
125000john16521126151QmYmXFtpG48H5E12zTVs1Le979cQgB6QT8KBdx6t1Wf7ms0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da0xbf32cafd205fde13b5add27e899e6c36e75a85473b6c...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3zcosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409title oval ten able delay target tag orphan go...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z...0xb13e85182b680b7c10a21eac40f6d17a5eb50835b7b0...{'pub_key': 'A1lHzZScCEr+Hi1QGv/M0qxxjl4B/YEP8...eyJwdWJfa2V5IjoiQTFsSHpaU2NDRXIrSGkxUUd2L00wcX...[a3da1d8fb3e13bc517f0adf1ab26f1acad0173c8032ff...[41a1393f2d5345e9789ba5e1a46aeaac3e60290ce92e9...
231000john16521126152QmZDhn45Tup8GnUd4LQHfCtF2Hf9frxXHJ5k7Gm4XK6R2J0x802e5043a53b8833353bd97e9be85359d05fa5a10x5afaa05bffed2385e03a80dd25dd84215c8ee846cbb0...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2tpeanut thing retreat tool pattern limb pet tub...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7...0x3e97255fd5e618a226fbfbd1eb4720447a24e036f054...{'pub_key': 'A8bfcVcw0FBGkuWqFiLv8GzPnohSt2zPT...eyJwdWJfa2V5IjoiQThiZmNWY3cwRkJHa3VXcUZpTHY4R3...[c91e3465b66a0f8908c29e329f105de3370057e110a3f...[e674ee80ddbad3ab382d41f309af880cea888ec148884...
340000john16521126153QmaauStuBTuHUKDveQ5dHsBC4Fo7SZFsgGecXsbwXcoyAh0x3b1cf67d050e257a1a05eb17f3c346e131cf38950x28876dc39babed2bbf212786b3f8adc08195ac967f92...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyevcosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8traise cruise fancy text enrich tower anxiety s...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev...0x0cf6b34983d62ad2a3443da27515c232da5c4ed19c41...{'pub_key': 'AsglEaBaS1Y7UAel9r7T0jPhrEeXfAdI/...eyJwdWJfa2V5IjoiQXNnbEVhQmFTMVk3VUFlbDlyN1Qwal...[1ba325a63aa614d21335e935685391d5e8d15e9cdbd1c...[70f8ea11fc54463b6d1d04e023ea7af8ce86afb494343...
433000john16521126154QmSAUL7hfidipezWxBG9RqCwZaCxmrkQQyHzeqnGQ6zRJv0x107481469e6faf29cafc4f7a13265962b83e46670x2cf4bf87498e6591a96e2e47fc9035ffba8c86179db6...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27pseed rebuild sick drive conduct junior soap ca...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5...0x9c4ee685f2c1a0acfd1c758eee4397492d69037a5642...{'pub_key': 'A9BSJkUEagjdxipS01BCl00tCidT4yJWA...eyJwdWJfa2V5IjoiQTlCU0prVUVhZ2pkeGlwUzAxQkNsMD...[545a98673c22a235c765f77deacb9abd35bf39b226548...[28f4284c85cf51975520750d286fe29135f8d3a106bce...
\n
" }, "execution_count": 6, "metadata": {}, @@ -1528,11 +1558,11 @@ " claims_with_proofs_df = claims_df\\\n", " .merge(\n", " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", - " how='left',\n", + " how='inner',\n", " on='ethereum_address')\\\n", " .merge(\n", " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", - " how='left',\n", + " how='inner',\n", " on='cosmos_address')\n", "\n", " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", @@ -1557,7 +1587,7 @@ "execution_count": 7, "outputs": [], "source": [ - "for i in range(ceil(NUMBER_OF_PARTICIPANTS/10_000)):\n", + "for i in range(ceil(NUMBER_OF_ACTIVATED_PARTICIPANTS/10_000)):\n", " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" ], "metadata": { @@ -1726,7 +1756,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Treasury contract address: bostrom1nwp0ynjv84wxysf2f5ctvysl6dpm8ngm70hss6jeqt8q7e7u345s7fdeev\n" + "Treasury contract address: bostrom1nc84knc0n7td5xqplwy0luh97zd8hv5mhvm9cdempc05xk0xvxyqvwhyll\n" ] } ], @@ -1771,7 +1801,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom18a0pvw326fydfdat5tzyf4t8lhz0v6fyfaujpeg07fwqkygcxejs7l7gtg\n" + "Gift contract address: bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n" ] } ], @@ -1854,19 +1884,19 @@ "\n", "coin received\n", "\treceiver: Treasury Contract\n", - "\tamount: 55000000000boot\n", + "\tamount: 110000000000boot\n", "\n", "coin spent\n", "\tspender: Passport Owner Address\n", - "\tamount: 55000000000boot\n", + "\tamount: 110000000000boot\n", "\n", "message from bank bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0 /cosmos.bank.v1beta1.MsgMultiSend\n", "\n", "transfer\n", "\trecipient: Treasury Contract\n", - "\tamount: 55000000000boot\n", - "Gas used: 73,258\n", - "Tx hash: 86B2B41DBDF0F0F7E3D8F73F92F443B5BCF550BC72DD7E7394066459427FD553\n" + "\tamount: 110000000000boot\n", + "Gas used: 73,369\n", + "Tx hash: A13F05CE7E0BEA7F738E3FDD168C14DA6316825E2DC768FD0F6425F4C47C9C2B\n" ] } ], @@ -1908,9 +1938,9 @@ "\towner: Passport Owner Address\n", "\tspender: Gift Contract\n", "\tdenomination: boot\n", - "\tamount: 55,000,000,000\n", - "Gas used: 135,324\n", - "Tx hash: 3A738CC9C42A96E5DFC59919ACA7FD50B8F7027B7C016CD3C49390F51A7576E4\n" + "\tamount: 110,000,000,000\n", + "Gas used: 135,441\n", + "Tx hash: 70C18E706A173AEE762262EDA659716FDB9BB86F6D23F4CC9B85FDB4AE47A6BC\n" ] } ], @@ -1974,9 +2004,9 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d\n", - "Gas used: 131,205\n", - "Tx hash: AEA967908317DCFD2756C39E6389D672FF0019F29FB0A26F45001CA77154121C\n" + "\tmerkle_root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", + "Gas used: 131,276\n", + "Tx hash: 84C44411CF66B40A57C71A8920E85DA9A46C382BD72AB16982A4618BA1049E8D\n" ] } ], @@ -2015,8 +2045,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom18a0pvw326fydfdat5tzyf4t8lhz0v6fyfaujpeg07fwqkygcxejs7l7gtg\n", - "{'data': {'merkle_root': 'c70fea2abe34353390986cd948a8193b9540d29aeda030f39a1ff2852557c90d'}}\n" + "Gift contract bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "{'data': {'merkle_root': '07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae'}}\n" ] } ], @@ -2056,15 +2086,15 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "outputs": [ { "data": { - "text/plain": " 0%| | 0/268 [00:00 bool:\n", - " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address}')\n", - " if _output:\n", - " return _output\n", - " else:\n", - " return _error\n", - "\n", - "NUMBER_OF_THREADS = 100\n", - "\n", - "tasks = list(range(NUMBER_OF_ACTIVATED_PARTICIPANTS))\n", - "print(f'Number of tasks: {len(tasks)}')\n", - "print(f'Number of threads: {NUMBER_OF_THREADS}')\n", - "\n", - "\n", - "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", - " res_participation = list(tqdm(pool.imap(execute_participation, tasks), total=len(tasks)))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 21, - "outputs": [], - "source": [ - "with open('temp/contract_participation_execution_log_1.txt', 'r') as f:\n", - " data = json.load(f)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 22, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "cyberlinks\n", - "\tPassport Owner Address -> Nickname\n", - "\tNickname -> Passport Owner Address\n", - "\tneuron: Name Subgraph Contract\n", - "\n", - "\tNickname -> Avatar\n", - "\tAvatar -> Nickname\n", - "\tneuron: Avatar Subgraph Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Name Subgraph Contract\n", - "\texecute contract: Avatar Subgraph Contract\n", - "\n", - "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: mint\n", - "\tminter: Passport Contract\n", - "\towner: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", - "\ttoken_id: 17\n", - "Gas used: 440,955\n", - "Tx hash: 62328D0646F7ED41BA9F6EFA2C816B9DD28EA97FFE5EEFC57290F3DA416AE6F6\n" - ] - } - ], - "source": [ - "contract_utils.parse_contract_execution_json(data['create'], row=claims_with_proofs_df.loc[1,:])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 23, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "cyberlinks\n", - "\tNickname -> Ethereum Address\n", - "\tEthereum Address -> Nickname\n", - "\tneuron: Proof Subgraph Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Proof Subgraph Contract\n", - "\n", - "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16517597490\n", - "\taddress: 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb\n", - "Gas used: 281,816\n", - "Tx hash: 07B96B6A84ABEE4F26F9F2B9A2223BF589FA22F6E5E2DAB2A8EE514B3744ABB4\n" - ] - } - ], - "source": [ - "contract_utils.parse_contract_execution_json(data['proof_ethereum'], row=claims_with_proofs_df.loc[1,:])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 24, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", + "\treceiver: bostrom1se79jq4pz9r6w86wggwd3add9745wk837kvzhc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1meupy9yqm9ufpkyjhr6t6zg4c2wsql53lwnv52\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t7w52lshmwnwrlq0c80cyhtqeydscqnhcv0zl7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xvlrfnja8gzwym9dddldxn2zdfvunanralne86\n", + "\tamount: 1boot\n", + "\treceiver: bostrom186mrlf2fxz69967w8hgvytuuuetr4ede360kmg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10ewhsav9u5hy7knpph89g82ltw354lmnzdfvk5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1utztzpemglp5tg9scccy30t9j7h0lt6pc0mllc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17tf3t3zp5h8vzuma7ztxs0czf9vawsp2ufft6k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f7vamk7tfl97l3laypz0hpd4arvue09wnrdaqr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom185slspflpmmjahglq2p4war9cjmamu780pga3p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1djrktdqjpl686fcv6l3kh3kx93hk6nhu076ps8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yr7pu6xy6md0jckmdyy0u8shn43smxhjjnse0w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ar4dw6yu4w23t6sw35k6m60ny3vqpha5yy6cjr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tes57e782vurv7lc35nk5exepkr5dmge9na6cr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vuh4q00xv7kf8660cw5m9fjsnjn32xvdhnhl9n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tqylvnk48gxpc9qxa27xdppv43j5e0d8c0j2af\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dwzsl2ra9dzdn3ycqnzafarztjlwhpj9wyeptl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gugt3yrelgxz4re7ah0rg7un8rk0ktrz267u86\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l6gfwelufm8e5ydehn848ufymjap8lk764kc05\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vnlncl8cw829redpx3xudt68atxf2nquncykqp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1777p23vm3l89q43h08pzwl80j6rjncnhjmy0g7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1py9x0ku93sg0vkwv3f0wggflumpywy3s9vqnky\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mpjy2zcecndetvrk3a539jgcdj5nvw7s7hdslw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jue6we229cte2vtyly43gr43ghf62292eg4xnd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cc2phnghnf2v46zt2zwx50046aupq0t2wxqcpz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15yknccqnjy5nfesx2y6n2tm47sgvcagd2dz28q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t8g6ajlp458pev2lxevazxgnaf7e6sh65qmvay\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sa3pd5h2c50ynyp8z2srn837qpga0skd4krxxf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15aww3ffak3k3genvakyp95yxc9rn577922cw5p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14q6hjmqevejcwljx23y97xd7rjf539zl57lt79\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13jm6l3d02su92xfrat0yn9hgg9vnktknguh0lh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dqwvqdstxc99azfaale54nry8attsgdjsgj984\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ujfamvs3fezyry54n2nm0cfus3h4k23y77xqfd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1puf5d2pyknnrqqnsp2zcqqwn4kqjhq64kd8tmm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ljcuf3cjuwa7d50z2hexh3qysmukr0cvfq8e3x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kyse5tx494adgulrc8pfq36hzr7ctgtmgc2y8w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d6spjz98vye3ywl5c5c3hllngrs930grnf6pe5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jtxv3npna0mx8ug3448yn3w5kdhe7dkt0kaeh6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1knt5z0ldrk066nf766fryndns49c0j6y7r3452\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dwfjphvkt22gah9rrwtyj8s29wjtmm0cx52fdw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1na0rnvq9nu7ud3lfhqjz9hnwp4u50zxxjnwngk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fzmsyvvwg7k9nmnsefm2qrcmp4h3ex8y0ss5d9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jq78te2x54njgxt5f8zlhjx7gwm8gh4e0l0lat\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m8s80nm0srg0lyakrsfltu4hsdqdxqmpm6t96g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pj0nwtdhehvp8lvydfrrz6ajwlarcg2twc69rd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1smf2e8nm3zhhqu2nqx2fu8d7grzp0l5wjfjee4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l6zuxndgw47g6d0z2c0g6gpz4sxqqkt8u4aks9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eqe8put45qcq4jjd33uvegx5yejrarl789nmm9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kpvvypqvwufegc9w5xhw5fs9cm4zn9z9pfz4p6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dkcglw2vqw902gzxy25hhmnj9qulzwcmn9vdjy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xzwdujmqlqs0qvpd4387fkrn08x0kuvw9tze4k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12650e5d2t7akkzk9uqnrp6d62c93pj6savre8p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13ztgxstgjckmzn6rl93ze8r5reyp3ftd258lyj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dyjgd8k20anu6gzwm0j3dla2anuwkdfl5zxmnl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zg6zxhsvat2qgdn2m3g8g6h2wksr8lm37c0q34\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1479p9sw8ws9dfn27exzd0sycj53fr4yd9lqczl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x8w4ywav9jf6uw2fqkq3aap2vw7kccrrvg7xx5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qd0j70frt0j676k2k6vp652ru9ttc20n8fty8p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ss7wfx05k4uyd2nnpgf4mmy2m9qr9qkrg8c53n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lhzjg702cemly2nux3zr4ccacgmpekzk4ys35v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zmtr6qq652wchtra6p7ktd5fysd5rswzh8g0px\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wlpf7qrgdj8zpeu7at4kh96r6jtlcezlutz0se\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1me2xa8x38h5rzalr7ltty5gzasvgy8nl9r938c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1luhp6nd8c84kgd6w3g8ku0cqgxf85kx3gq9apm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18chdsna72r7gz6tf9smrxrfr8smrsmnzhxuvge\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hxdkna25pcst4dnc8ahwd3hcqzrkee38rwtjvg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h45vr7a88kqf2uaqg6l9um3xwsww804t62kz5r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jsuz82vk5ea7sgqzqk66c3gspsr2hxxn033x5x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19d9s2z9ynt57hesvry326csukasay0v6vjlkzg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17lnytsjz46el8q2w3mpgrwp3c7da0wj0zxyd94\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e85x3cwvfwdra92a6pc8acqf9tqsm6555ukal5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xdymuvmjn5lcqj6cnu5g4gkxg6w4845tuavz44\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yg5tntjdezk50lj4ww7g66uvn2smy89rnnpt8h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mnkrjl4k5m86ryp5l0facw3wtyyzv2mwcwrhdq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom149ster04xytegxwjpuhsq5t50a66yprcvkd68k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h3gd7fzgk8chnkkf39wklvt6f7p55tjrdchp04\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16nlus5elu366xvsnxxv5f8jrkaw7s255yrzm4n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uvfuwdez3tddwypnnx8xzpupem6mt9eamhc764\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w84s4875r6309kumd5vp3gk8gzcgzdnkd2j5ra\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hpyfv5jq4dajuzxx5u8x7pj6neqhh7lsxmrdyg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10n8ekhyu78uu0lukmyarw2nrxfgxfs2f5qtq39\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w2jaqrpca3e9afqww468ergrs4gt6uz6qf05wr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q3cuwppwwe4wdgtwr2ta6gzf2trswwtkslatvj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sc8nrz0mjs5607yfw53duj8vart687n942wwnh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1587u0gmq35em78tjq3knguqlual9t3xy0733js\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l8lrqnvd7upt7jgf4nwkg7gxayn0ee45ngernv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gdnxmtpwrxx0aayd2yurw6xs29c4se54sutuwj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1at9ruald2qv9wqryw2crlrpddwrh6szp82kku9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u69w0lj6au57g2kllsg8a9mj6k4q2xmng3qqly\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jyczuhl6smydhkcjdu67vmap2luefvdd0rtx38\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19745k5rsrpg8066s6v3vlfmxv8p6trlaukuxjq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kyjxn5qk9wc724m62plm9sqcesf7dchdtye8sx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n7aj74kn4gxtm6dqpz8k6tj38047j6jt8ct0a0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zp2zel7p63wa0t46nm86dtze2gvke0hvgu8qlh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jujuladj4g6yt9gfxe56x6tzpyez2r4mtmzqct\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rsfzekled2gy3st8vwlvnfkrl9rumze6mjg06k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hh8zflkhpa4vhfjxflk9p96u7hkqxnvy3kkv0q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ttp5cwf04mxyuv3mtt0zj4f34edm59ez9z4eeq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xh9wr7rjnmegjks40yawuf86qmamgg0llkqme2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom130vjsec2j5hqazxra40r67sepevql2qmgh70sj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ytf7krsc05vx0qm2qfe3u8fk93ajmssxvdrjhw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18m4ware3uwgh3t2677qgdayqn6467tfpdp0uck\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c7jfyedm0rs8d59ag9qqugk4aas0yhxx2e84nk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14nt78p0s9z0zqj6u4yd46ywphse5aca42ex0uz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qd0knc6zqqt34zfrurzxztrnhyrvefhz4g6w5u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h09rqm9r0dyhr23qprvxshgzgn2pd4r6r8j6ty\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vr4ckd95fn90xznv754d825d6ua4259whjp6z0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dgdwvx2sxq9uxd9emmntal2e2f7780jqydn563\n", + "\tamount: 1boot\n", + "\treceiver: bostrom139fnasf0cdp29dlxtrzp5mrkymgmhstwflkdrm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15wx0nvvr6s0lf6c76fxrv8a3f84s24vvql6v8p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f7m6pfwctu89ppd7n5k8lah258y7wqkgav2ess\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ex2ztqs6kp92gyts60r9dlv3xdqwglmurcd8qg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tzkwmthhmncd4wuzrepyqzfh7hw4l3r9x4nzzh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ak9nvl978hqwj99gtaank6tye8ge6a5uz4jvkj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom154d0cfuctglzlzpph6apd3fa7z5ahyqw0qgu53\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dtj4evf9nyqmpeqmduuh5wp2l27h3efqw8tzu8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ndvdasauhxnamlm0d5d0hls4dpgs2w60646chd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1399ghnzcsu4c4pmsrn3s6f2cjmpp8pzqntpeq2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hjx5t09py0v6zpdstxq56ujaes2qgnefnwhnk6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ya93ae0fhr9gvs936lnn3anejqe75sujlahy84\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mcmrc0hrhectljf7q7zgd8gg3zkltfaqxcl0ez\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13yjj5zsda8ezqkpnlt2rrlu5cm78qxqd5vy49f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wt9dua56yn5jjulq85vwzu2gjjta7ymgfufvmr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19rnfvwv3ht79ghw020e4whm9uy8mgajme4jnzr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13ykn6xpwt9p6fw4ll3mc9nnjp633q0q25s8rcd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10rwwedl2srrlscuzecynd0mrpgm200w86n89pr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tlsvw6p5ttl5dc8ennduu3n0arm92npz4mkp0f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l706juna9ev7xs0cc02qr72tle75elaqdk3klg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qglumrn6sakx05m7zu28tqtjsqrh7wswrl688t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17kdulsfwmv8xu76cgmh5r9pmsda49n225a7qnr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v45v0ps445pgyxglgtd0zc5te6v2hzspfhtedj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t87raycs47szpme98xr7fddne36vvaucpxt945\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1543lpstumzljfycfzlvc8f4dddl43w8c5n8n0h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rpdtz6klq799elug3jr5l24lc4xm0wh8vhu6g4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18eun5p4yzehvfpemvs2qzv9per859pjl0jc0m9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19thqztypqkp789z2t0h23pts6yfz9kc5ljwyyw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xufxzjqxsnxdpr3ns04sct7f8qwlt0qeqh8vsm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16m25pc4u4r6d92s0ttqdy36wxeeehwefuhjghv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c3qcwp2t2cxle3qggcwt2vstml95arfyhnqlx9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xzqpzmtyevwdprufjkqxja9lhv57zs27spgpdj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z39qgxxhka88d6p9kgv5sax9p24sagpnmas306\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15tvwrhl65td5agnyu5p37d3fxtx8xxg9gzgup7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cya4mcemewd53lmupahl48j2aq9uujr09d8gsg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10t2cxhkvtcgx82rqypgjeps5sf499gzshr2cjv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tg0t4x4whh4eeyfyqwrfas0kcd62a8zand3t3e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wpwdlv8lk43ptdr95uj2sn23uqc6uq23qsrgqx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n75k5f0jr9380gye3xqxjyq6vnvdzexjh8d827\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tju64qu24r2g4xkh5xw3xuguk26g06p6xsslkd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d0u682yp2xvfg5d2429alec5we50wex2cvran0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17ln09gfej2kqsxg239eql9jxxlrkfucf4dmthj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13cpak2f0vznjfyc7ktxjrex0h2st04cdlpx4ps\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qtfhzaqvqfawj9px9rkm6m4e6rey96mlcvqz4f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hpj3rxpcufdrsnxjmt0atzydw038r3yevvp0h8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom103f3sad30ujj0v0w46zjdq7un8smrf7tw297qv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h6vg9yzrjtf0ynlw9wls6zq66w2xufgg456e6r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lcsfs8uv2773kwjg5glgdrx0rysnv89sdu8n64\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12fpqzh2r2f08z5uwmcmsjcnkvup4ghw5ypgxgk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hpgmw8g063yx8tt47zpcp0s2ugxmu4f8pcr6gv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z7n8k2hgs060c5t28mf6s55cf8yh8ujsw5q3du\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12afea826q8hm0jtcvt0849hv8xj8vxkjfmt2yz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g292unc3rngwfump5w0nuyk4k0v95dp4va6hge\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nvzy0c0ea2ju5u7sfeg9erkxdsk09cg8sswr5z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a79n02hlwpw72mfvccxlrfll3vu2svnwsdsf79\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z9l0h060p68q26f0dg2d25r2xv69yg2msat2q6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18nk8hqp97kqnh0vuyxcqxpr6382nuemyaf3cnx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lzhc0cn4zu0ec8wyay9v4u7j2tvn3seg9u9g70\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hh2l43y6w7e08rnwv7ahqegdndham46w8q4ama\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18tjelq6ugvrxf3948mjpmyjah6ck7w62rqn4sc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y3956wd7rfwdj3lg9jmd58ghz3eme3fjxqjmqg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g403twcepytqz9jqmjay7fytfsq5mmhtdc5g9l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p4r8u7revmkferjyn2yw2ewq0g2pf8cuvc3u90\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vymm8qcrc82l3gmnh9n5r0n3utvc9yv8kyvzs4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jhyys663gl2jfzmp3snvhhlrxv6tzmjd3czze3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1463mq9jf6vt7s6z3f3973e8nkrxuu68fmeaf7h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1afxwqy76py60h2qpclwzfj8t7dz6y3p8s4ghs4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x99wpyms7yj60qx4ux9t6kev655k6l3vyje62n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10flmma4fknqaptfp7tvmx79aryncwdyjsf6d6s\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a5t0ga907jzlmxj4z85mdf7rr7l83fhparw9dd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1584tgd8u70u8qgyg66lwje2g5dad6stwh3hpa6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xeupdlp34f76440l3xrz84j5ulmxnj0eyejc6r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16876x9n92x4znrsjxmwyzevpu5x32s67k08ru9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mh3w6sygrs0z60nzwj44csw6fxxgk9genv28xc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dkzz5xw9ajz84ggxmhvcss30w4k7yw9pnde44p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12m28ku4e7eq3qdgvn69cynel0zvgmy8qp9racf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18d3uw85p8hnva26km6uqtvx83wyghxx9tn67qe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1drcpns50v0wd6w8y44ym7qw3u869xflqyucfk2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ppj2cp8zr9ra5tjen6w2ltphttpzrkx8m8tysr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1spt7k3aw274uw6r4rqmt34zdx3tw8d4kcummqs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1meww3zhk3cm9gtkj037cmcj9a7h0xktlz8zxxm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1djd6lr6la62hplyutahnksd7jwlut25fjna8ng\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zg70t86f6psl9l3d2cwq9rjwk3yzqj9xzlk7rm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13gmrhhkl39rclldwlxve583srejh8qx83y0x9r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1643j3etaa93ufzezrcv2xst420nsv04ec457r7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12llzujqtsjlvrnv07sqkuaan9gdxgqnearun3k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zz0yzrxgs4h5zzqnmvtq9fp49k60dt2m93qcmt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v68ydakjxwhcjczyf3c5tlmcey6xra4z88p7ds\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lr8rjkz0ujsngkxlzhmx9t58rqy3kv6rzv7mun\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1llm38279gsh4p44u7pn0ljv2nk3f84dy9m4s9r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom107r3lxktfmduvcvtjktpy9l7hf6frnv7mzwmad\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c63ahsam0jmxxdhx7g8js30hm7gjq3xzl20dzq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10w5prvhmt5jzwxyp0d0xx2yw0j30y7hz58tma7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jsq0dx7dfrjg340wn3mxskl42t4vzsfapzgt4u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom120prwl5v260ndpm99804tehcjyegy505h7cxr9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1emfauyl90znpravdm9383fmspnu7y0lk4058f4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kc8yvay3pkn7rx8x6242yk5reyzrmmg093j856\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mv0q4ta3rzl5remnj77xs76jv0swk6ld0yjdaw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14kzj5qmcfgtracl6p36a7pfcqwezychfvctfzw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ustjm4ufn27gquys86gwfdkh5dyz7gkz0nswwd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f88qc927722fd933vrpm2n7e3xxtrrzxw68akh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k98acm2z0fgkrcu78u5l0tdjgmgzmxcj0p703t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14veyvk0vcl5u79kk50msvv7nf8e4yak2snvcjh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13ayhj34df09jsygx9g5zprprkv99scvzf279x0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom147sh44f48cdv333y0ghrzxp9d9fp69uh445f7f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1prm69sfehj6fqw4k5mlxz65vvdqlsq5t2rm6m6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xqhe3alyshmnhrpsl8ynknr695ult3vnguev5e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom197nnzn0k74g5tzm6p2x9d7luxvm594ksxrg8f5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xpl3mevj35l6n5ryvtccs7u9kewq4gkg4u4m4y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t98drv88f72rxa0a2pww2amu5t98gfpn9wy9lv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14a3hej8e45fc8hxlxsplry4nes7nfc5thlc5p9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14x2sq6feyxwqe08qnrvv2etlzrq69eexegt2jc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dzgxttwy6j6cnscmhyxdswwrs3q363hlm3ar68\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nkk0w3muwvlg9wyccfrjvm43ll4t8ny44s5htn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wvwx60wxtjnfsfgqtx3wg7exja8vl74xvcfu5j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p87ax0xx69a5l2s5qhzjvfep7mraz95dakdc85\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hjdlj52wdj9ud8ka3hlkctn2dtvcvyakxhjgn8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vd4mg8ju0fe88k68vvt3jqhvquqqhvkhq84sqz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xmytgrvak5pga0zapfzd52hsfmt362q87wwdds\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nauxs58hg3xuvqe43hp27m8qlautqp76adt6hq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14rft4llu0y3vz47909vtlrw05x3n2edtkjjv6h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zj7r5q0md7t8hrfh6py5g7mxeqreth5kwlwhht\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vs8thvn5p24pc6rxy3gleqcwkk2yh0m775fhp7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e39h3q7ugxmmh53tj0uqull3cg7jewqjrkf2gw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10q70x4qrkl77sr8rggzua60jtrxqyy5x9fukkl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fz7u4aa50j86q7l86c4f96qu95mehqd4qr84wq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y3ul7dtz7u0m3zygdsptm6a4qs3v5zq9jzert6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kd37tahxxtwwv8g2fnvxh7ujqgdme8z9hmnut6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ahpcs04a0g37j3gskxuxp7xsq3vfldn07xwp53\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15jnanjdrdhmedpgld2rcqtjg96suu3expmsj6w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k3kds5p8slc64rltwgq5jc49zm46s4qv60qkzj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cwzlxmen9kswsv336muj3f2c3vs32v2xc7wkj0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1grdnehv5y7ftyku9d9eulp6q0lp8wxwa56ke4r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mqu3lhgsfmswdksszfsysj03a8ue2yr67xsy67\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z604xqr2ykfdphrh30hg4ygfxm4zenupvevamc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15pee0fczvsmwglsczsu9e8rfxmap0uz4vxmngu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ghrzsu9xw59ff2enntntluazrtxepyfvah777l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s86d0dfk377sng3rk26dc67n3ft6ea9mvf4ywr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1va4cmwftyp7yqgmdcy3cgev9jknxyupf52dqs3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16jkd5xuhp54krw9h0k2yy5lgzdnzz9fw7kxnsa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom195a457tp5j0uw3t5gna7j9y6cp2cmq76ssue5q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15uzrd87n7s92mgnzyujtde78xzr6gdjfc45rl9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10esk5ta5qtj7v4kaphshvjqah0056ze8pp4ycs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1js5k22fmxcuwza7mluua453k2lsxftl5mtnf0y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s576a8e8w0fp76s5ngp6yleehk7p92zujh5k0q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qnytzndxfxzu44puwdnz8vfrepm5w79u47pmx6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15vyr8mn36wg8lncnyswwa7kdemjaen3ehw2sq8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17pzlvj9ash9ck8rqh8nt0ag9feh4dsjhfzy5tw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tm0qzqepuqqng2jrxs63hu7td3k5pds8ce4ggg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16hhjm2x2h3nekyvawxyecvwa8swdfndhwjalgf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vkzcrfmcyupz4tz7utvd6lh5x80ev7mg2vprrs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t2k9fzlfqps9xfl50kahl32vtl7ahghgh94awh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yj7wd9rpvjpmxv0sn75p7q8zgx8p9996uuhvxx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m82xf3gk7t3g3pgh5tt7k07l5rj822kpqe3ykk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e5wa9naa9z3pzexcl32fw5rye8nmpa3dqpxfng\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ylkkhjx33lmmqd34fhp3lp7h7nppkkh3n9drar\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hru5kp5kmggth9frlj0yhd9mz2lt7hmacdzjhr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dj05hlu3c7w6h3tgwlrnygvx44r30jy6e9nt3g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18g62ucs3helr7qkzlaj9ftzslunawsmhk2v3lz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a4prhqhncu5anhsk9qpk56wejwgpc7y39g2dmj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fs39l7hqmwjrejuf6q9l8zyylm7jxyyw58zpu6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14rg7jk865mgyfw4cmgfkexfaajmn44h7ugsp2c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rqtg2fxxq2zmrdm7y8q97xptu30mx4tkxwrjzg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wqtgdr6kh6rtlyfa9psp2ydt63jqvapfsezsm2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wpjs8efvk3u88zlertrx6jxrh4y9qjnzpxsm2l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eyvv6479sascpdn0twmpvdcwxqp7000mj4v68g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qk2w66fcuju80vgscvflnpnyhx7v0svlc2erdk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12xx60wdjffyew2jljujc9yfdq2xl840fht0lzk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15twc6r4wlyfu5kl6pzf020zey2sydgfk2tpy26\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zs8t7kr3v0qruued6hpkzkkk66j0xk8ppf5376\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dn620sh4sf2mdsu7hcrtpry7geqkf5rfvuut3l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom158hemtpzhj9n2vnrnajpj02emvqujvn0hg5jek\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h49ltj5kudkfw9gaaa4h659ut4t6snrhmdyzqy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n3qcn5zl52rvz22qdv8jajqs39j973zjxgflxm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zxj4g7nlqtnar0rwrh8l44phft88ndglmupaqh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18tnnkf70gv7da0s3asn7ajmnj8wtnz29dpsch0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1je7630jsp7k3hcukxh7ryl0ug0ufy2qqt72vfx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1egsr7fgrj229k2e764rwnl0jpcusyrjaghflwf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yknqmmf3s2d6eve86w98cda90snq2l4u5ssk2f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tguxdhntr0alrjvvp7d3s8nn38rm5jnx6hru40\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14epxq3ep6xhjpzp2xr30r3p5ucrt5pnfg6jn04\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cdsn706qrul2xrwzggwn4rppnckr7grh49jkf0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1je09ur9lv3falh6pttu5g628m6qr7q4ujxsz7z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15ml5nzqmypfhj3273whsht8j2wy4rmyy4vuu8m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12pcsa6pxw4su4alzuqq9s6rxzk3vku6fzekgdz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rp25h7d0vjt8sc6kgrgumjg07p9lnqj5zhgsd0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17c8g0ag36sjhvyx4kkyaywcqnjm9fwfmhdwxzj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12y6kf9jwg762tshw27huzy6sj6d44nux2lrk5d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aszgtmjemy0yn7e04e8eus2acdycweu7lspjp5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nkazcyf55kx6nnxt9n9980ntsnxqwggmks3jjx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mkylpyrl3y9r9h0d9ll7xl3qlwsh499u824x7p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13lpcvqv9xtjxlgpu5e8gvea2gw6v3dym5uc3cr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1af3x48y3xzkwd53z80t0y7vve5eh4wvzlcauyf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ew5ulax86fu4e4d6vcm3c2ypdpy0ar4j9vxadu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yumj5rrgkfhqhsxuskeq6ltqlzn0lw9d44th3v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zj77rg55ulldldx9xhee7836m5xrg8k0jrrvw6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14dtaen48gpm2tt0xpw2vhx78ydtxvsfnktmltp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gjsg5cqcmqhtezq6vah7yw7huqt4fxv3x5vegd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sqsdl3t70y6l8jd9yvvexpu0msjwq6sfwuuxhz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q6m6awn6y0q56h9m8vft293pftd3jkelpdkqye\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19dxpzcth3nqh6er8t2qy5pm9v9dm7f4pjafzwp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l90qazxt6gtsxujr5nryl0989khppwn400wh3r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rrfen8krca6g05554kr7vrllplpeak0ylr48wv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ec3kxzstqt27c5vfkjzm4caxzln6hwwu3xww3h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qde7vv6mah9ttcm0w3n3pmvgsg77eml7luwnm5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nl7awarslsx4qk5pl2jd58ulyvvnt7d7kh0u8a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mkdvj8fh89km46fm2f68lcfwj05n2vy69sy070\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10yv7v3pk9v8lwtz2emntmka9lzk90lkjn87827\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j6fh8566qkmndepk3chd0fg58a39rnnqpcf8sz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vuhhw7k2rlxxna8kfzm9dkpazf62qx7m8pm8dh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17s9xxnkvtgepzv8t9kqmv4q5w9z5jl4eur5cyz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1np3zr4um8agcp0ewhta2xw72q5lh7ydsrjv643\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1un0u4dazcaph6fwe9th4cjt94vjmnednhygtfe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mxhzhxm9929d3xx2wn8nmz8v927p8g7q5axxmc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w9zz2egxqn8tjtgqe0zts0u26ypgwq8kkayzsw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k23wt94pql008qx42yd2mq53j3f5hszd3nf2aq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15pcddut84d9cx7x6pdm4ay7ea5n7l9n9sgpgmt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1646d8d89my2f9akgfhrlnfspfwrq96hvmm5n5v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c9wqjaq3797pxtgq3feu8azjxnecp356g8f5y6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m7cn09p062aucxg9nzlccez7vr245rh2j50xlz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ag3w8v0s7zn3jkzjq2gxdjlznryfdh6dl53lx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12dn2zry7csvf8kjh6zy34aqdsz0hgmxgua7h2l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13sgdrlvd438vtkvlyvf2lgsk0y8j0043trd2y5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nhudyvh2qypjnrcwcsp9cv9950j98flhqk2lrc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom164jrtuxr6xmqxag6j725shfawkh3erl0jczvh2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a993zry4jvzukjpkyywd680zqncwp88f7cwhzl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1987zexmnnzy2yt7stqn72a7rtwnefkh5ver8g5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gk7gldypgvuyvakfs0v7xk50wxnhdepapda8yx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rkxp0fktmtz2fnukuq0atsgnsal7m2l5myk5yz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lmzmdcap0xu4u26a7gt6p7lrsp46sjqczzferp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gt9u5qp678ua6u7ump2xzqs80jhe6peemhegv5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15myxhpga42mxazcrxghulkaxh6rd90jc3ff7e5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fvqwff203m8wdayqdspfxtchxx5nha2j48h8tl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cswandwmq6t2xey5dgdw6q8cmwvhq303ngqad0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x6fqy3hhl776zse9yv2d7gtlc3q2qmk67kmun2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a0w0a8jt00znh8m445ys2mqcktp3n0d8yy0grd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nt9dg6ftg5c94l8d8yw374s5u7cpq6vzg8n37t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ucn5qlemae3jzg5xekgj8598czx30rlmdl5xyq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom146kxjceuvh2z3zw8nzlzq004lf8cwghrz7ff57\n", + "\tamount: 1boot\n", + "\treceiver: bostrom138vl02wr58zlps9rdp0udhf0689gcz3nckk07f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tshc3wf57aqgcc76ufk90qxxsadh37evmwf4q9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ayp0rr0nk9ps6dfdr6cjk7ufme8u2skcjenp5m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19c0xm0msg5lan8juvv5c8090f07ea8plgpw7dz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zr8v8wumevwk8907esvav2af9vgf5dd8upjuer\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lepml32dm8nns3w75dxm0lxy2uusk7cg36t26y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d2qrnkj4specmnyfz222adjk4ya6hunlyrn8l4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1srxqkz3v5xgxm5crz86ekglph4hy65rktr9gqc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wkxhqmjtv5ehmvh4mcvzedx0qamzjywgcsk9ax\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nerxrwfvs5pv4wahgcqcrgra5pvmt7wzgj5x9n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v5jlvzjwtq8yzverda0ythjghrh339d63qvghg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ddqkgak85evc7t25hxg29y49pjhvq50uft9ne8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wttmwvy9augmygu4t5uhgkja6qqd5qdrsw9lf5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12pre70dcmmfkhfpmtvx44cvqk47sm6a4ffrm6e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mrzn0tujzchksfk7tprahv6z2ljpaxypvhtrfn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hm80668tjnvfhjaqumehkavta6enzrgv6q5evn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ghnw4rhmz3d9f76v59qk2rr7st3eve20rlhhfh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zlacynvygqyq0asvwpgngfvpaeu8tn0hxqqc80\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1846hj2cwpx5zzhtrr6rycpdxavc3khzdpyu7ln\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z37f8dhx06lhvv23qjpj9j487qr8appjg3z4px\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sv326su2h42z0wk6ql50we6ngjjuhw6lwtl2kn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15jztqajfzycqxwj6gdmjpzkpf9j20knwhus9ga\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zqaj03yhnf7rk6yg3k69qac2ckmzlfk82r3ezu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r0mhtjcwvce9m2p0nj048fe7vk78jjewk6spta\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hyal3hltqf3kgv3nm0gvy6g26njf3caxwucvez\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dm2cfx34kqxa0qv2z53azqnmm54j3h24z70htz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m86sah6reuww9qgns9hpls3hqfjl7xt3fy75rd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gwyeakhfmzzv7uc6kpcq7la3xfvs8e9xrrmaf2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cdryy97dhustrcnlhscrj0xgzr74srj3nj5waz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17rxvegee5wvau4xenr5xd7h4e6xf4glfd7dfv6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kqmjqq7nuhv0m3qsyxsrhq2p06hznzzt080unl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1clh7s0g4fcd3hsmrpn3h8u5tkuu4gq9sufh2u5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yjk3p6y9ussle8auv4ltncc9jf5gxvjksmzt8e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k28j95n6xg8mls47awsw3f465zlj7g7vrsl7cy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q7fppzwetz46dm3kjlavv8wmx5lz3hd4mmvzhr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zd4vsvw63nfdpqcp87d4ffndn7hypvtx5937fa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ak8hvhg89wzv93hhrwygyen89eq0t09mq6t7mw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lkrk3l3440jn900mswrmtwemrft6wl9q4vfmv2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p65u6r6c87tpednvkklx6vpvy47z27g9075l6h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n860l6satlydu8f5jy8p9qgd9jcvvaca0v9w3x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14usrh0wz3892e0ejdz5v39zp8pvnkknklzwncu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kww4lmskkwkarn78lnpq39u8vvlqjz8xyfe80q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10dqjrua6fj4e55kvca00zxnvlz6w3w5jcatlja\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r77rtpneujhvu5vapzr9zgfyzkxzqxa37g02cv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jp66jmvhjuzlhcvkc5r46adzz3qhuzuf3cmsre\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r8773q93yvx3syve806gwn84p5m90vc8h6gt9p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xuq9cxge2xa3h8wa3c4g8zpvmukervux7tkkmf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nqdjgxm0w0rcquttczfkz35qf8ruwycep6aa7j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r4yd8jw76e723u05sdhp5hmjapnmgcfz8wmjs8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hkzvpy5d0slffpy95d88t2mrzljegxgs3s330r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gh40jm5rs88vwmzq7jzrsxs280334nfcpe7rfu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ghp7r7d42kg03qpas4yuu80e29r9lw5vz677p8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10gw5hkj8fefdd4ykmw3l5kf2lzr976wqnr0x37\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18k5pvnurkurgecky2fhxmrz9he0049htjcrzvr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uc40svsw7c9vkeuy9kst9d7dnh07ll52a80cgd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h604tg0cdg6qyudu67260p7yt34rz53ummwesd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom183m5hxqc2mzqkemwzmjngaurhv0gzqtkawgdkr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l2fnf84salqad0uvxaj6x96gknwgfqmtyc85aq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom107jzh6czthp3g6wfdw0v5r6kffzfz9psn7alhd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zj2dmdvg68cyyktx26h7p2lau3ascc5ncfwda5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jn96fk5mng93x5khyla2fyaasxt6uukde2dm9c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1trxv6xd8grraseepe65fe9kleehm2lvkruls62\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mqk5ttwmsz737hl7ru9e868pzjyuzedr96kd6a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a8qkc7yrt2myupnxrfcqr0az58v3nvm8ertatd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom167prdcuc2yuqyndhwdzn8694w2zj087qmak02w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1clhfmkw0sxz00gesd9wrgc3ucjzka0jqmrrftl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1299vy3xmh2h5vjhe3tk2hqvxrhze396q2m6sr2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13apg8cuu2wr3h4nxfkfd7f3n4xzjx2y7c498t8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dj85hv6vhuapawsuutjncwazd9fzdep7n4y4qf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15ktta2gn0y3u2kaj8wpmnl52zaeq9cz3zdrqpv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q2sdp7t0tvza5lkgunff6jhy3zz7dcazz98jlj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q92zxauvyn3cdvj92m8lcy0m4htmuywhctlyn2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sleajhmcagx7t2595lvjkd0fc4mnkqf3hp8mk6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xdpxp6huxyhgjkfuu4ks5gpdz2ae8hkprtnwuk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yn30w00dh5am8qe2k76unpl3le9l2zspmhwgz7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10cmuwjrz3j395xnw2v6eq4zds5884h38mph66g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x9zc3upqdk4ekg8lsgmfzpvahw6rl6n6g9wsnv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ru04705nhefk7y6vcupw39r7z692cgranu4fn4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1llvjz79vljztvdxxv42v7ygpj8w9xvs8adekxg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17zf822nk6amrhwjppsce6x8hrm5seh6z4nrxz3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jqqk6xfhl6wvufethy0u98c5l9l2ehuc46k4d4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m0vcq26ngz2fe722r5ad4kqs7hmud2zmvqj3pp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wdu4df7dpavre275rh0g4h4l4qmv3r8ue0296n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xxs9cprp30rhwnuwf60lk3j7ezt2qaq8lqt3ra\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vnlxlr3pqvtzae824f64vuwzg44r3yh6met5dl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e79vnk6253zjm7g8xpj0jscqsrqgc334ujr05d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1thr7ncw04460dhc04k8fsy6k6rk7d0ch0k8e3c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16lsp5vsl4zsvxzdrgw6463lllwwke80l27ay6r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pwcxxs7s3hhsj2es8lr434nj7cm503j3e2kxud\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x7r929ergxmnldyllx5ut60ad09lkpz79t30xd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g8rpt36e06k74l6xawq8f8caqhkrckvdrsdpsu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom133t09qukxm2w9swz0jqvjf55u0ee7rw8k9ar57\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mcql43ajjzpx5338m0eax48x299eanvvekpmlj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12vd4yulwfpu8yp94muujml87vptek95vh4qpjt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zvz9pvz5rg3jxvmnc7jk4rst4gur9dh9jnfpql\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15eywjl0q3nu57c7e8wvq3vvqksyvauhujd0frn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19zxup45matutmr7km2q95zu5sj9th05gapew02\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18247s0krgklmnpym9gg2htue09w3ryyrl82qta\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ta9nh4dgg0yz8n6ud26ludnkm3udqsed9ajl0p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ny9tv6ceta002ra95wj49pap9jaar97cxhvatw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1epwh9a4kxj0wgjcuzsd3x6c5f8z6yq6dddzgt8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l8jkqrhqsfjajwptka8cmhp78czse9twc939vz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qa69fwg4mm7mmxetnxw9895mk8jdmgqddyp85a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1294fqdjf9ny4yz2gwwsf82m0nz8mhw9pkf8v05\n", + "\tamount: 1boot\n", + "\treceiver: bostrom182k8w3fvf8upq5qv3cdxwss53h0aulkersc9wl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zpyat9rjd7hhntxefkpdr32ln32jd4fut27qgq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16g3u356lqt5c9xgd2smywjlmms0lh9rf2qzxmp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16rcyh4sqy236978t3hhtmr3lz9a6ecfhk4qy4h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13lkuh3qtylfqef725247egt9m39z6dlqgpts4a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17mv03y0d60eqt0nlvfzt7ef8ww0wwmrkfc36av\n", + "\tamount: 1boot\n", + "\treceiver: bostrom128h0g8wdwnxl3fm4n6lm3t6ur0qsxpz6rsdgyw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n2gzxvd2l6q3dpf4nr4ad68c2frdmh02hpadtt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gsku49a5hk0xffzufjgmnvhqdmjwjkp9mgd0kp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom175mvm2zzhnxmnmx7uhl03ew7juu4prnh03eewd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cuzeaj68w30tdmeddk3z0rp3a6yrtur9cqe84r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1e6ez4utc86twa2zvrgdpwphjkfdc8kngt2k87k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zjd2h2vag2yr9v7yxqzyf4lrtpp6uqftu8kdgs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wpnnc9qujlrmqa53cdkxvwjtqfcldx6999mxtz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xhvng4wtsasahd7la63rw4zs7r5h6lj9ju8h2y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a9746qh0yckrdm44ggn7ffjeaqk6cg5mjhhk6p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c67cl04s7v389e3qvf3tqc43243e8j2lr0uj0n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1973rfrlnr8h5t3czvcmr3my30epzyncz35e863\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dgehjlmzuee5s3f43gkg50g8c7vnv2xwuz93hk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n2ye3gr4fz9v2rsrszzxlfp92qd9qkquxvmgfr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom163hcm7zrjvvkxh6hqynn6htt0ydm0q6phg3gld\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v3rvhe2c94mxknurxf5e6zku2lqsp05ac70yl2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qac2nzvhfm2m56c0metuur4a3m86rqx37esaxn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1za673jt96ht95ahzg0ym5y2wt588qge3d6ewtt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nly4f92fwvw0kn7cu2l2z5x5cszyhd7j9zjepf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q3cwxhsk932p2gqa4ly4skzhvqdf7ln7sm5aq4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1djgujch09p46j5uauu02jzjs3usm8ypgcverg8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j2h7e0ezc4a6pxenrhssulhgut9297ju02gfcv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yvzmnuc3ktka0j9za990406thlx4unvyhcf4k6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1urc4c608lylnjvkxqu87rqwed84d0sv566d8qh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uwclv3vwne73maquxyc2veygmwcdhk3m5dnfsa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hjacq2945sq87w87uak3m36qzp6fus9tqk57t0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1apqdw8gkc3gfegxrs9xvkcf3hqkajprsuvglgh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1465zpre34d4al4xynrdcdc0ndgkxa5gec2xwlj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1akmsa6qmw7kuknqgmwjhldrdzqq9fdfgtu9cpv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kgs5t0crexnmym5jkhe4qsy4g0pmaf6tdz3f0h\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1993l4k9r8rw0klkl2h984gkrvahufp0ju4lecv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18zkahqumd3gnv7x4z3wd5g696xg3hg8yfmrdju\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17qgrk4k2gkuz0w5yw8gjx09xxzqr9yhc2efhll\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c8jk2s6kg8240dz2p0k6rdc3taclmgf0jgv25a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uyqjzjgvhw9nem6v7k8fpyl3eqdjcyssma5l4g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1983aztr0m20dkhtu2mux8dga4sr7djzp2gl0zy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s0l6mz4syf73nttpvgednzqrky06n77rue00mx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t529mr4g3vvruxyj5f5emqwmy3sfpwl4kx2xfh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19gssn2lq3tzaxyslsmnk842a2fea2wf8nhlqwp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18u2ym7xzq2380cnylfr3xc28k5chhnz7vqz39r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1u00j39as2w0lek5vsumqejkjym5xcj2vpff5hf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pwfnrwl3xklghtpkgj62ceuz8qv6g7ffytpcw3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dvqx9ymj04ptah0zrgy6zwzfqhpx3jq823haz5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k8u45uvulhrqw00y29cxz7wmslgvncl23z5pum\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ydgdshxcxfu75xxe6taenm25yhxzmh9e20ws2x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c2gl9v3vr7ytcknelydyqy2q2nsafs79gmcla4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z4syl3dyjfgdf5qwfhfywahgtzmted4ykcj3ye\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15m66jpacg6s0mltxp97zhmyrgy4q7t042q558v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom135hdd9fx50fp4zmgu0yceprvehemfgf45puhgn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mldfnr6g94u05x5dd7vrekxfwnuqjrs5cjexen\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14882mrs7j7ckj4ezj8n7jp04x3uruw2rh9p4q4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14xjv0vm9q3vvjfcvza39d6d7dr9ek3pfa3aq76\n", + "\tamount: 1boot\n", + "\treceiver: bostrom100l7vy2q98jc26jr5q0xtstfcvzsf38f5mgvlk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1llf9n2n6k2zq8j6e62me50telgnn7486cngcw7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18ltqp9q84c4uay5uhved965sudm6p9xupc4q58\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xtsrkgrpvfv6gu05wespzz4ush6lyxx7g58j0g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qf8j7u3vp29y583gegm0ueky5w2z3qhvr2mc05\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r8gj5gcgpycy0hd8f68hhl6p9m76hsmmp2ns4u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h7fjhemzv0tav88ukcrwyad25mpqt3kejx9ylj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1znmxxsmj8qr63rgudfjtcta4929ejx34sdcsu5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19l3pjdtc7e0w9rpq7x7e6hfcugsr3pm5uu4r4y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom144mzx0yvv3m7zmmasshy2z8fve78nyyfe9ztkg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vd2wdqtq7xgte6t37a8v48l5agrv99p9dlytll\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14dvqseeus9ldmqq2ulstywk4jrnrm8nmdxw8j0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10xkgctcm4unscwk4u0pus7v4de5ujjhtk50edr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vkezuk5cxzsw0ttp9a4xnqlltdxyujvytj8s6u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12sdkv4r4neh3kcqkzqxgjd7nce0xaan0cj7ccn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15d4y9g3snrfjtt6zud0fpya0xlpe489xr7g0xj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19q44jvn9jsrl522yzvvu79z7gxyz56pc4jj7c2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19dmklklc02tj5gqe7yujt779mugj2jz75tyz75\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zpwxe2taxgfe8pvzelk58lmjltd3xm9mzfnzj9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qtym8svxutx4ushgkhtq8n7vtqxgfw6w7afsdd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nz8uul76337l45eagqa9qsvwv8rc4fed3lpayu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1papr2wv72pgeqfkdp5h0zglyerhtl7030pxxdv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w9m7t4w3eepvgvkrx0f5sk5kmc9ewmxg3h0dzu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ufxf2fea0szu5axdxr9va7hws2qs2u7dprwhe0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rgytlgw77rav6jdxnmz5t003dq9eltc3jte9fe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ghphv58hqg0l2p243tm6zfejusytua50qrvsf0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tk3qa8wv2kgldydx2m6cpt50djvzd464vntvx3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1shsexllfzhtpm8yck8rev2km2jcqsvj8fz7d56\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14ee358vyah372q6zpssy9ahv2r7ntktmtwggnh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v77sl2n5lrj5h5re5tr2xuwgacgzldrpw87mr2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13duj03pgv05rcyznpye6a42ndttftac4pke2t8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uqslrnal68pcax88rwl7lzns7spknjvs7w4695\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gq5gc270vcw90t8g649kf6ladfw4eal6m0dz2q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wda6pzrf039hf2w8w6ycuwgkv8vz7vnsusaup9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13eqk6t88z627axxh4826ymv7qpkzdd7krdkytx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom186heuqhd9mgcjcuc29kxea6xxt5jyzejfl44mw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12adzskrcp3r2807hrccsywhpe0u0s3yenz2ml8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom176xymac7v5fqzdq4g6w866pwe2mz58k38sajtt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom192an0y55wkcf7y8rn4prgr3txh58rjwd5sae48\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1scct945twm58q0wumwgpcajrhnxvsv6x6kel6e\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ec3htzwfh7c7px0r92sxnasm739fxp57pup690\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t73hpf807u3w0hw7k89uqytv28tqpu5xxflys2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xe4ujzj6d0v7kk60hjfkquczn9yn9eaa5gnyk4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lvvtgrzx7k0fny974xsy5fkl2kjt4ludhayx4l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17lakf5nj3994lg3weq6yz7awun35f4cwycpqp9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17pgax2jpcs742ar3w5c4kl8m94dxmjxdhj23qe\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wtnql9yjzl3gmlkazqu8fn3s8uhfw0y4a9r34n\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pteez4dj3k388x62wnp2wql2tzfahhfgztl5f0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom138w676c7slnl06c3rwjg85k859w0fgne09hwmz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rcpd4mexd50sds77nuqsm3rpm28q3x0ehzy5e5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h60dgcsrthrn87c0q5muv6xqfn0wfxnv78quw2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gfywzf0t94qj7ww9mr36vkze3glkryzpkju4n6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dz9kcccnsxv29w42s0mjqrn49wew0zz5kyy7fs\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dpqhlhpep3d4kekj88tc7j3cy85a6efze6252w\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c92plp5k6umwdzjj2wqzqe49p2lengha4pgnd9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kf5j82k38x8e8slesekfqqus66p5urvvmqzk0l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18v63m3rex0dyu95z224avdtjkkfqtvm0uccp2t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom105fm5wgs5cuk2dkrx9fc8e992rml370tczpf39\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13w70u5w4g4xzszmt46l4ed6rcgl6felvfysthk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12rd2epqqmdjcljg030kjd2rp03jn53pap7nvlx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15r9mdmq0t4je96mhvgslr9vuc5fgvcnur0duna\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r4vrdpgpzc8ph0flf6hx8wharlc65dt2jlquae\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1gwjtnuw9vw9r8t2w68yjxdw6akpyfwryexxdml\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j05ny50lvr65rrtlc6055gxkkqm0s64k9lpz3v\n", + "\tamount: 1boot\n", + "\treceiver: bostrom187ype7a39ndm4uefpz070euxepau2gfmp29evx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v9ksnjky4k4cvf75tldetlp23hhcq7xe2pek8l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pqz2v3gxhpaenju2t3vz72k6zhrtzy68w2evyt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1asgguk28456fndxt9xflsw4qw75pvthnh04lhr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rekhml3k4e53peq8gdz3h5zm3r0mmfmg2c8mr7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10wwzshz0qdw64yavy3qy4w4ag2cgjpg7m8tmvv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1233pp9cyarfqgmrfm0et3mrrklzcw3h9rexl4c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h94k5fk0lsmgl2kzd3n3ev8yaafj8xp5z5e878\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yg7d72t54nnq36sd28xg67zsp8kr42nj9nezdw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sr0pst2py6kaydtx3jmj5g68zfzydggyt4exk8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12gspvdc68sc8ttc3yx6ureh9edep04qtuxxaqn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19ueyuvv2c29pzy2r3n2ss2e0qy2ngrag6fk3kt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1acm8lpnt89sg0yjzsq7kcnsnyg69tkn5n7p5vd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z5fz2r0c7vwqr98gqs998qdmc2q9ts7kw38xk2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vd9xfq8j80w06k9sejhkkzqldxkf5d0xxlgr2f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ffyf0w6eckqmrmxk4vxj90xs7vzm0azml87vgh\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ss5cp4s4lcarmpcheu49zhuzwv7ra5smeyxdus\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ncyud3yqg7wtmhg9q32pwq48x5vnpwk0nuyf2m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom176f52ltwtesjcjxjwavdsll7ez3amlrt62ken2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tjvna8mcl0kt7z8u03x679z2a93jmcywhckk53\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ztrfjfyzkqpza7lm7gcsz8288rcvrxqt2hfw6g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dlfy0988t0flr3fl3ahw5xsz2cl99s7gmwp5ly\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rd0zcf9apypjq0etrewuyfzalz4j0ztsgfyc6x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom167v8y9mkftnjqwjgy3jn37nrs9l6laymg5pm65\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vy5fe0yruyqjzp3x9tshdawwstmulcj0xc7szc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uka7m9se5yc063mq2hefvh59x77etqlctddhk6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wrpa0jrff6l9c7rsfgz2q7y8kz75fgajxc6dp6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18sj3048pwllv2h9tslkga0mu5zcayx47pxjxh9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15d27jfacymvmw8myjjmmxaa7muhyvncdpdtn7d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10kk9h8vt7spk9cn8kx5vjn8ecytegjly2x9yf3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fm6xhmhwkyltt0wmu6ns8ph62gjgh597lf4u29\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l3jeq5c3z86kk6ydj7gyr37xlmffdlj5d2thpd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom185jzl69wwwmxnqjg5ppfsal7202gwrt007kj2q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w80e5rk6sdwmhx393vjr4z8g7aaqukmd5lhz4c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xnspez6qm0g98ss6udejdusz5ktv2rjlmhfp4u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12qtjz0rtgsk6m3kf649lgqxaa8c08pngsrrpwa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1lwsp8ks3ge0y8a29z8au7lf2a7yj76fl8cf0ey\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hjh2ae3whwy3vh3vr2wkuplmr7ulftey37qr86\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a0k6vk820wzparmahc63s5df3hyv55w7w5tcxg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1x35vyc7nfd9yvuhkguys90d29gnyey69rr00sk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom160jsnhmqww8vygxfl53xhy4prhrz9sx802g7ru\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wju03rpzjk2htfmjflnwu26za56j8j626qgg8j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hmdrwf4wdfk628rjf3l5m2pc8pzz69hhfn9q04\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13hrwujeg93asvcw33vj8p57ljsh8jphcvn63u2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom180va4atkxkl48drjutc5czpzdjstq08z83qljj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pfytalkr94nf7eu6zhk9amr2s0edal6d5jy78r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uyh25t0dgh4tlpn9pfy8qqza2h6cgy4e5uhw9a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom19250dflpfefayww8gh8pr6cwhqew63nqr8dss4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1twwzlejeru0mug3x9n2qghc4lw2pevjxa8jktz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rc4vaxuea3uj5s8sw6ma2uqnz7rawyvp8q8685\n", + "\tamount: 1boot\n", + "\treceiver: bostrom144kd0eg67ywrl445vamhnqm96wddt3nn6gp2f6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pwuc43696n7475nnmghtzp6xj4yp3pzuy9dxpd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom167ja0k2572r8ra8dgkp6kgd4xzjd9hfjsy75fk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nfqnl2vl8lje0ly508yf73lmj64f0lngz5kwv7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1606r57w9wvw8ty4qase2ultvq2ta52m3qz48rk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17w9yupn8x9twsc2pf92t6mxxntpeq3pau6rcej\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14pf6ya27y5jv27vs005rea2msjrg3h58x4grvw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m48meswlf2savkna9yzws9u7f8qhz6smxcg08j\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tecv5u5zp4w5feeyvtcnc04sal4wky9xjjht9d\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hrx6atfs07gvat8t044tg4ttj9elfgp4s5z36u\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nzany2x2tursk42d42lvztlhdm37zuezv9y0c6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ll59aq5spvcc5mglncfmzezvs5873dkuard3nj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qjqwygux93mffj7vwdparjhh0650w9awsx3qhw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom122rcylaacc0re8a322l4lxzk9l5euk5tx5gwgu\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1vle9txqhyjk5kgj3yxvetz5lfz92rl339667ar\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1eyg2l3hrcw755p2lh9utc3aatu3l0szfl6cq24\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1hnt4sca6e8myh63lgeu5paush36r6jwacv7nf3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a0vw5zrpllwxgddte8a2m4as2tw0d80g3jm2t7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom15v28jarjc7hy8ufxqs7e6m0naj7j9y7d77zm5t\n", + "\tamount: 1boot\n", + "\treceiver: bostrom194csd357ea35k8e4tt5gxgnvs06ugdne95d5wg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wvta6l5pcft2d5xmyt4l77fpmmgzsjad4nvetc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1aq5luk8pwarzqj4c4ezwkytn4l6jxcfdhac22x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1j5u3aylgx2cxfy55dndsd9uzqf658t0g7cxjuy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rmsuk3v53c5v5x66zh5n790kmntlue7h53ldzz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17fc6nvkrq9nuh37yq7sqdway7sg5e0pa00eaql\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12xka8qs6hx8y7zd0kh0n4hapaw2pqgpfszsa9l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1sa9tnk2lugr5jt5hlcr92k78qsxssfhvrjtvx6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14talm6dvaf7d8g7j5xan04dfrgn9py2h96e87q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kle8kv3ptevhtn2kjhdxl7xg0laex5qtvjf4cc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16x33yyxqw55r28rkpw3ul82rp7m3g8ahklsn9q\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t07nltfq7fjwfzaym38p5z4yflaq8apvancs0m\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q5cvelwyh84cnq3ecpg2zkjjndyyhlg8stjc3a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h3t5353wr8hkw929fxgdujxuqk50wlvj3cyjkx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mu70fqsg7d8q7uh73dy34uusxrlnrq6a5ukefp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g5xzwyfv4uchzc2qqykeac62en7exvhu0au3r7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l5dmrycmfketemsfrx4typukwzl95nunvljrxq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom182j4s7kug7rzt5pqnhtjf8w04mcmk7fhxrmqea\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1uk7x0y9kcchlehlg0aam8m75uscnkwf4j4vvj3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17nue4f3nnmrljae2j7ftgywu6rnzy56aq43e5x\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dnkcrj9js270ugx0m8js7p22j72alvhw67wqk5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom16mdwq7yhqzkqavxs73yxkq6vf9qwtgq4vknsa2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1en77aqtxqf2kp6z9nmc8278c7trentxwwua6mm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n5jk57rn25ayn5y7h0kmv5lp0vq2zxrydhlrfr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zq2ppyjzzy7htgc4l8fcu0t79t4wx7krsqqm9g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ye5pvt63n9mwwa2cmpqfl66rxsvlsetrj24dr5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1d8q02w4fxp34a4nqmwkdmpce6mwzuqqgrsltas\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ymwksdlm0xczhhayeqc8z9w0q4jzca8ncze3da\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18h09fkjkd4mrmpjvrnt8qkdhgr5nagvf3h3v4l\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tyrr430k7d7588medqnuwsehtdvqnmj3u5yukp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dnthjlamutvfhzry855648uyscvxcn46nhg9uw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dhpzgvuptk6dcu5zfx99zhsw7m8rvnwm32htz4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nuutshcyxldvrphy8cqyfjhws7km9r7q0fxasr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dqtul0dszxwlm8jcg9f4tuyyqqmxmcx4z890u0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q4zzypewfh07kuygx0f2g62cgw3q72dml86wa3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1s8dwvpfr55jtfhgvqh4dxxggqm4kzk65xkv4xv\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1st7pjkudx3uqylwehxd2nghk8wcqg9s6d9yf5r\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10yhmtymjrfdw8ezad4mcflkw8h2gq9hhapspq6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y28483tmr4592jgruztthfqw4uz7e59qyaputr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n62np8l7c4m7fq6gmtj6rnfyfghxcaelwjffua\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10u85t88ctakyfwc2egdjrkm9k5e9wnqyc4w5sk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18e49n5pgyfjj92su9zngntfs5ll3xlxtxplh2c\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1c6evga5aezsedpecskjtkwwqeaetx5ghrlg5ad\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1m2pxr5mc8ep75ky8j97cylz007yn0thv3ny0zt\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1jjufng2n374v959wf6pysr220rqmn7nftfsd8z\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1pafj988l46c2pf7rq8p2uxddeyknwwtceqrepg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a4d8wgwaw4m2h3w7wx5ytn2y4v9gz7yct39zld\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w3jhpldgwkrfmcnggm30l9v77y06jxgf0p2ync\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1rgr2crm4v90xqe3jm3fgmvwmhcy7dqnp8pkugn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1srkzclwf9afqv70q64rpyj26txldypxqw8mx7p\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1n5cn5c7jn8qvum9wysm4mmjpdels57a9yth3ln\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k40ncwwvncx0jdh2clqamu9jdpy0arhcpa8taf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xncqhley3sef07d2yslre0wg2kf0pdudxeqs5k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1455ak6nehct3yy2sh696vzjrxtvw03wnn248cr\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1cgft9lhqjl5t24rcceuee2gj547rd84fx6ynfy\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l6jc7mxtrtr7wp4ef4vm6389xcvyl8g2y2ruzk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qaxhtjjf5nqjz84x0ccdgldchnaxfvqt0lh66g\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zaustnppdz5rye7xdv8d947cj5ahe8j70v3dvd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom143a6c2ha8xph3jahf3a9lph3k7nvxuhlnsfz3a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1chqz57mkzqz7qvek5rcenj6g9qgffvyukxg7j6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1t5xd44t7rk84cy6mphmmf9eeseldh6ge4fwq0k\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dg9aclr3e5xzted96yzfg96grzdgzchqunwruj\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1adeaheeve3za2fh7ypssmvr9fdnyq9s6nzu5g9\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qvw6mrlfe6lx27evhz559c448rprs7rdvs08pz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g5e7m34cg4n60n35hxcfepsjyehl3f8xuhvzw2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1987c2gvyzh7x2d0dwz3l4uxnl97zc0smehlym8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1dcju0hfw8syxc70m82nytcpnjc9hp2ldal9pr4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1l0r0q95nppp24k3ernc3gp0lm3s2fzq8g0lcgd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ca9zx2x6d38h9nnrrx3f5uugrr44dpcn87q9vx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fju5vmy8gl6dv80ndwln2nm99fff9qepgvjtv2\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1xmgmnrt7dkpjd3x2xzpauyr4f4y34n4v288gzq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1efd98yvgr7wt8wyg272msdn780nm5gdmjv6h99\n", + "\tamount: 1boot\n", + "\treceiver: bostrom13zqprss3zwxx24yyqmzgzxtpvwce4uyzs32gvk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12s3s22hgm49scdmf3dusupst3ws8el4aqzd60a\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1spxqlxa4hazrmw8eml73tvr3q93pr0p8w4zerd\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1q4qvf04mc4cljwfuwpuqvylecee66uyj3sqjaq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10vs43msr0efyl39g6as402feff4sscpvp359jg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1clrxhye4xmzct4vu54z5tmj7hjzdwwqyywd8y6\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1w325awgqudm76ahp7j5jpaz7z84028ecd8gzx0\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1huyqumkwhzv4n8f6tsjmhauzlszgg7uef5kdqf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y56nprd8zyywlhwwpsahztc5jnkz5627t8xrnx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1y78zkp53r3sf02wsfe8kyq7tak7qsue6pql6jm\n", + "\tamount: 1boot\n", + "\treceiver: bostrom10q7exsr0dzgv4hnkdzhw5hvyrckgm97gax9qln\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1nardxv0pjlp0nvmydhqhde7emm5jxltavt6dzz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1p8y2sps6w7kuf7kuclv3v39h07pgcl9dj29euw\n", + "\tamount: 1boot\n", + "\treceiver: bostrom178y9dwu0p47ay4t63yww30en3utjmakqklexgn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1g3ah2xml2y8eynhgque9mz5t9qq34xnhrc2my7\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qtsg0dhhpfe6f5sk0tls4c2zwgz4ujfsr73xdp\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1k4qmukcla9knjf9n29n6qgqkac7h8qne87l8zg\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1v9z6n026dmnc2ctqcsspz4kwufsa7dld2tvzjx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom12847mmxmlmuddpsc6wmgfnxxwex0utfuuqawxl\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1zt02s4rs0479tzan0qatrnvls5mjdca272xys3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qft23zm56lu3zdfuu0r0qf0fm2wdy5mm6ukljq\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1mjr6epmyyujrljsdvmd3qw0dp3p6eksrmsj5yz\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1va3elpg65m28zkdrchjfj5062h47lwne9dhhp8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1qhpvuqpcfj8rxeymcw9h8gdjjtff0xnkacdks5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1fnusxvrj8jhp6rsdtm8jmaqf7jlnww8lkyv0pc\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1yyda5j9ev0zz5njudcs3r8g8ura0jkprpc9uje\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1wdt29zs3527gh0mxts96m96j8cympjztqz8ru3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1kt8r9kmu05vnzm26hqncrnjpm094w2yh99c3er\n", + "\tamount: 1boot\n", + "\treceiver: bostrom14ga6rceps3ejswu4cz8wtlm6mcp9yxam2qe5fn\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h2utv7hp598xudqjv929w0g4kth03xz075khy5\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1z8heqhlrqmn80u0ju9gc2lxtcpy7uq8mms5y3y\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1crzv05xnlxy84nffvcsp099rkct5zwfekk0shk\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1r30pps2fzvsl0ck6hsjyzu2cp4wtynqgdfdu2f\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1a9rajzyp5aexjpmhckq3jtyl9z7um9kgxasvpa\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ful647460rx6fxs2kyew9hpkh9hjpylmv7dag3\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ps7kmqt2694kgh7pdewylc3h0fc6k8l6cql6g8\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1f69cqhrv00d43fh3rtlj895j9ergmg4pvwg0ar\n", + "\tamount: 1boot\n", + "\treceiver: bostrom18umer23xkrg5t4tqwnlavtt4626ehck3ppq989\n", + "\tamount: 1boot\n", + "\treceiver: bostrom17ffah5kepfy3d43an6f2qc0vtj9j4ke49dxvpf\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1tznl2qgcquhcn82ynfrg7p53pkaxv6umlnc0v4\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1h60ms8een5mh78rcr39d6xjpsu9xpzc3mvzrtx\n", + "\tamount: 1boot\n", + "\treceiver: bostrom1ayl920un8mv2a7tk6mxmhm6hhyr6lkt5rnc0mq\n", + "\tamount: 1boot\n", + "\n", + "coin spent\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\tspender: Passport Owner Address\n", + "\tamount: 1boot\n", + "\n", + "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", + "\n", + "transfer\n", + "\trecipient: bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom108l2v6y2cqhtezff5fnytrkuuf2wyhxr6f0a7e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jg7raggv8lmmg5f3z9s8jnwarz36t4e7k478gr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12cqstlmdtmcs8xt9fpzk5z0y2wpe69kr3494ez\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ers3rza08vpkpe0c2alzfsla24qqe4egr6qnmq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1urllwdtekqk497hslza5ss2a8uefay8jf4vf9v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rwssvf6x9dk399gu8na9xx6wz4t0h9ez39nwpg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ym0rlf63p4sjy8qwv6ypnc6apw4stnnlhqvqcn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eajyse3nhlv8g5hutdz8qz3v8ef6m7ksafzamu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tw4zara55m3t9f0jfmeldh83m6f90px2mur764\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ml0zry8k84w7fujs2gr9kaxhw24sflgkt4cn4h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w9ppmfffrl3ywra6m22nez20843my7e7d7u8qw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f6m06mxg6z8pkjwy4m55l7q22a8hu3m57zg5a2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom155u8hrc9x7hfqx8tp7qfyavnw8z2uj2aa4f4xz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wgudpmkpa4ptevxp7mdnz46ngvtj547s6g5k73\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19w6805p95y75zztsuhndtful6shzm5f8t3a09p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lr3h5wq0d50t35nweyw0c9cezz502e9p9eah4y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1efwnvr73gj46al5d623l3vjewwj33sjhdt6n59\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q8pw9tw50ac2teugutjpsaxtgkzyha3qfxy86x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lpkuy0ycz7hcsyqsf6uyz63veenzgqglsgll73\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14rzpmcyqgyssn3zpqpn23a6alqz7phxjnzc569\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m8tswj7jekj69m4e3m2axv2q6sq6fp6xp2kh2d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16sm0lwpvc7z3kuu4tzy2nxl29dy7jhetfvlufc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13jzajd0xr9r3wp7q06cf6j30nrlyy9pjwv083m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1phjvdeyl3vk6ep3nstel42sps23zn8e5n6cjj5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f6g4cg0wsvtkmx9q72f666300cvr9yrcguntqf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13449jard8dccu0vgr48gy0dpzl8mdxrpzqzqyg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mqgd7je05jwgqece6p36z6l3x9ueyjhuy70sny\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kdxlnp5fn84cqsesewtajsta59w79qs49cj93d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jpjj3z6d3fvjc43pup4y8ta68tsv6z9v0tw3cl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10ecp706266r4tcrpslc28kjvy53ks5htn8an0x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ejzpukf6wlapd6zyqdk6yzukxg7j2adersc53\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ymrzvsznuj4r62q500l76egccx92r8s2ulq7lc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mzfzk677truyz0j928dyqecjappdp877y5uff2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mhptlcm09lgxj3t66u0lp8p20srqp2pcrruad4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1accapdtrjuym4exud32lr8p4nlggjwjtacml9q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ra7h6pu6mg9vhnkuc7e26ypn84z568tragqp4m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f7pydzlswt9uu0yykcckm3m29pcdzgfn6nlehs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16p8qw5eanjdwuszvw3t7f5ka27s0qffmm7rygw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wg5qm2u5nemqqd4j3rtrprxes9a0u4nlcesxle\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sfz8gzam2nc80ua543s3lec29pl8atlz9zne9f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ynen3ajmfc26dt0k9evsmrpv6rshj7c76as4km\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m8v83glefkac9fzpxtkprs3ul6pm36j7a9r2pd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t49ufdja5dvglcszkryev7z0t4urplrjxfwzx2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom196jfz7njjztrpzelcqyy6gl08ewwqs36ghmexe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mhhfpd6lszxl5aevl7lulv5rcd20cv4h8mprgd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s2pxnh2wj3cauh28rvhusfnpdluwqpljkkn7g0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hjrcqtpudf0r4dvq0vclcdkmdkwammmjrw9yqs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16rd58u8fj38wuhk7v6kmedafgn2qveqzd4g7wr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hx7h822fe6nlc259gqdc3hzqq3m0xmhe20j3aa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14awfd9hyg8e0nvfx9s8jz28y7styf0qcpdn2k4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xq64gtq6wrpswq7gg6twdn0qfpnwsmunftkfrp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1crgk46ncqvdafe9ht8tm9zkhpwex7yfmvgm8he\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1akyjl3mzuta4n2r47pqtvnanvlr9l6rp0gts6m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yku4y6tu4a0fly4wmuzkxmkctdya5p70ndpttd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w2w7xp2w5f2zflh5zmpkqnsnfvfcfw6em0djhm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jtnfh9ed5uhrxfjzmr6ml3mhaqtm6hly46kl5w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rxtaaa6r8nuztarr5nwmytn7e2gg87j0hvtesz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l5qnqyfc0qyrlaf28j4jfwtam2g5jfeqjc49e0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qp6mm2s62m5c9llm3f6x6w8dye6mewl6wn3esh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vw09vpk07d84r0yjzt4qf690y0943lfaz88wr0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14hngfqt07adjpu7gw7j028h2shhz4cgsal6r7e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jhvuhc6ug25m47asv0wjlf5v5tch47kaavvgf3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1na78h02r9s8jf9ewfgc74c55ll55d24n5k3n3y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m4thcdpptdrgzt96vgpwlz9rr08rfn7lsed4v2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e7ugdx2zdnjr723ewcnlatzp3aj4903ua7nmyt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1trlwh7zxc9x9wegygmltjfdc7kaw3pdhs97khn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1up7ahr8e503yd68v7dcz3tdms26lfmyfmfcx5h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qc9l02jzgzenwg22jvp2p8eq8axq3mnxeqtzgr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rnlucrw7uepqn8752msrgpl9fnt09376kdm7yk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jhvqpcrv9nkphgn9vefeg8j2sxx3ur2edp2yzt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15vz5pyfmkxqpr6ef3kqfgfafmdzxl5g2482l77\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1288t7tczyq5dfsxxhw00j5vdyat6rp6mud8rf0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ftktn7ylny42f60xtw7q0ynm7czjggq7uy9k8a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jqgdejrgw3gyjhge6h7v7xke0jktaclujx7mpk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10pjg3pmgwxxqnrs8sgmy4sfjsuxsnt5nufxseh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aecs2jxyfcg658wlmm00fkd6hg6l370008juu2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19v0ypdujdw5emtzvsxv0qm6g4xqylyy84qgh3t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hpzups62mjh6x3a5fmy0r4wq8y9pas52xpkwcl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1udlkck6kc83v5c6ps4f7n982tzs8ph2jukkmyd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f80d6l2a9xcwhpeylm6pjwem0zjkg7spfwq7w0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m278une08hts7qjf9j53ahx9t4qne8zrd5gtzj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rygdyvvxmwfyc8jvyzmggqaamwugvh2kqlfk2v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j5hqfgfanaqnwfwk6sxk5z9s5nun7e724utn6u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom187l8ul0tyfc059z9j9nuj3cukr79e7favm9lqp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18n5lhtsazn6x2wqys3nkujg3euw0njf6xu0lm6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom189zahp2ktjf8htt6qnslcy684fjghdqrly4jqw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wdgqtyh5cpy3jqxvdluaczftuq7xezfd6hepkc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m9xfgdhgxfvkg7q0y8hmnm6mmhckj5famjc79a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l7uj00glk54pv0ngc0t86dxqxwj9crtktjknx7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d6fqdemud2qve4vt8x2hp5g2qw82y2s2m8wlj8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sl28hvuumlamktjy7sdumunq4j8hws6tu2zwv3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13d2yfggwuwaxc04qx7s4kzs2ctqn84pzr8r30p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mwthp3gncsmusltt7d9a5zfhdkv0xzjcnwsdlr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e243ynzknwegnval4ypk4hwht9ekqs6dqsg2lr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nr9z2ed40taz0228khecwkyh2te88gqdeqaayf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fq2zxuuj2wep2fnpjelnfk9ltemaekwlvw4w7a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c97vq005m89zr5ptrz6w5vdnuj5sguymra5up4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hxlt46h4vkcz96899n756tur34c0w09c6mvdud\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v7jfz80hr5kpalnqq4as7zqmyen9f0d6mc5f3s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom162l0jxk73jhev4cy0ep559xashvuxw4vsfvm0q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ykky5wz550krthh4h79rwgx6v77rtjck8vvhch\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uvd8ue7vg7xztrss8dflewc2krsvggsfe79mkk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1usut02lwdkuj9kl7prdc8d05jmvy4xuxjr2e3e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gsnukdyt6q2qcqqegmrgfylgskv2q2m0fqyqgy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kt6ss4uxgjjt92meq6vgcfpdj8yg3m9vjzmtfp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hnguypk6ys72mxtvzq20pvln9yd70w73yzyf95\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l59usmxnwdk054acstjx9ruk6hufeh7uhsxfvq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ppc948mmdm8zs0wgfl6p8dkc7u79x8s83dj2gs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wh42zsj6pss3at8tvs9ygc99rwzc2pet3wn68l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18qw4xvadrguszsrs4skk0urgrjns8ezcs0jr32\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19z64tjmv730hsstzy8dv39wncngfwyhmgaec5j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10ftwmrzdudgf90rllqf6y4vfur7hyu3cvgzjwq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xtl6fhavh7qe84g5mfukplz8czja5xj7jp4huc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zqdrl7646p2hg5uawr0uft2hp2zy9cl5jem24v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rj2ku0g3g48njlvxnf7r02kvr2394jk6dqr7xp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jh4exx454mqlxfrs9uemfmf9fpgs6p6pkqfte9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15yg95cuf2c2w5pkmca8ftne3x834f37nyrr9n9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n38s345xgkvfuhr47fju2kypv4stzcq5qp4hdx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ns4kl5u0qeyalsyuft3aypyt2qq4vnauq4hm5m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13h4ruzqejps9jhjxt9aynnq504l85xwyh0l948\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xfpnjk9sq2pt6xg9w249qh7yh0zjasr3m6le35\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16yqj7eyyn8r5nf7wk8kc3q47e9nvxtldhg5rp8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uuxvqzhufsq7ktyywczl3fphcgllgntp60j0sd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kpvetsy8alhww0x7mmm72e5zh5jk7xcra3q54r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10wexnytw09vaftdns4u7cs5l7hw5v0cdr0rlva\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qr6r5lm8qlekccfpvzdqnfayp52jwx8gkdf8qu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13e3tcvgqzkq0qrq99uyv4rdap9yd0hmtww7wl2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dzpvg6p938hq3pdqdxh8qw7dk5a9hqmrhmlwpn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zp2753v25w8272xx7eekduvxdyzhjxjm54zlvd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ktscr5yquz92pfj4cep3ex9n2raa7vxvxdjkjl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yt0gv02hctpfxnjs9nzujs7y54ww7sd97rg5m0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom143thgevdns4vwtvwpg2sxmrn04lsdjrqu6aa7n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19hvu420ntm95u6gww4untuvhfcldm9g0nsmxvu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1myta6p6fq0apemvqttcva38e8ls2pj9mwa80lg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom147qdprqrf764pgjr7e8yzvh78clv5lc7spa9ef\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hhwhz4v23a7xl7429l9g45ce583l8me6uhqwvm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19pqzn5nv6g8ktjvschpsh8e2fj55wf3gh9978y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sdqwewn2je8lgy46rfh37vgvh4j7tnkk6450qd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1syw9tduy9ydafctacp6ysv8x4xuqhc7pw06mlj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1se79jq4pz9r6w86wggwd3add9745wk837kvzhc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1meupy9yqm9ufpkyjhr6t6zg4c2wsql53lwnv52\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t7w52lshmwnwrlq0c80cyhtqeydscqnhcv0zl7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xvlrfnja8gzwym9dddldxn2zdfvunanralne86\n", + "\tamount: 1boot\n", + "\trecipient: bostrom186mrlf2fxz69967w8hgvytuuuetr4ede360kmg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10ewhsav9u5hy7knpph89g82ltw354lmnzdfvk5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1utztzpemglp5tg9scccy30t9j7h0lt6pc0mllc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17tf3t3zp5h8vzuma7ztxs0czf9vawsp2ufft6k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f7vamk7tfl97l3laypz0hpd4arvue09wnrdaqr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom185slspflpmmjahglq2p4war9cjmamu780pga3p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1djrktdqjpl686fcv6l3kh3kx93hk6nhu076ps8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yr7pu6xy6md0jckmdyy0u8shn43smxhjjnse0w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ar4dw6yu4w23t6sw35k6m60ny3vqpha5yy6cjr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tes57e782vurv7lc35nk5exepkr5dmge9na6cr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vuh4q00xv7kf8660cw5m9fjsnjn32xvdhnhl9n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tqylvnk48gxpc9qxa27xdppv43j5e0d8c0j2af\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dwzsl2ra9dzdn3ycqnzafarztjlwhpj9wyeptl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gugt3yrelgxz4re7ah0rg7un8rk0ktrz267u86\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l6gfwelufm8e5ydehn848ufymjap8lk764kc05\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vnlncl8cw829redpx3xudt68atxf2nquncykqp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1777p23vm3l89q43h08pzwl80j6rjncnhjmy0g7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1py9x0ku93sg0vkwv3f0wggflumpywy3s9vqnky\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mpjy2zcecndetvrk3a539jgcdj5nvw7s7hdslw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jue6we229cte2vtyly43gr43ghf62292eg4xnd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cc2phnghnf2v46zt2zwx50046aupq0t2wxqcpz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15yknccqnjy5nfesx2y6n2tm47sgvcagd2dz28q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t8g6ajlp458pev2lxevazxgnaf7e6sh65qmvay\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sa3pd5h2c50ynyp8z2srn837qpga0skd4krxxf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15aww3ffak3k3genvakyp95yxc9rn577922cw5p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14q6hjmqevejcwljx23y97xd7rjf539zl57lt79\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13jm6l3d02su92xfrat0yn9hgg9vnktknguh0lh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dqwvqdstxc99azfaale54nry8attsgdjsgj984\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ujfamvs3fezyry54n2nm0cfus3h4k23y77xqfd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1puf5d2pyknnrqqnsp2zcqqwn4kqjhq64kd8tmm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ljcuf3cjuwa7d50z2hexh3qysmukr0cvfq8e3x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kyse5tx494adgulrc8pfq36hzr7ctgtmgc2y8w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d6spjz98vye3ywl5c5c3hllngrs930grnf6pe5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jtxv3npna0mx8ug3448yn3w5kdhe7dkt0kaeh6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1knt5z0ldrk066nf766fryndns49c0j6y7r3452\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dwfjphvkt22gah9rrwtyj8s29wjtmm0cx52fdw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1na0rnvq9nu7ud3lfhqjz9hnwp4u50zxxjnwngk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fzmsyvvwg7k9nmnsefm2qrcmp4h3ex8y0ss5d9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jq78te2x54njgxt5f8zlhjx7gwm8gh4e0l0lat\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m8s80nm0srg0lyakrsfltu4hsdqdxqmpm6t96g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pj0nwtdhehvp8lvydfrrz6ajwlarcg2twc69rd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1smf2e8nm3zhhqu2nqx2fu8d7grzp0l5wjfjee4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l6zuxndgw47g6d0z2c0g6gpz4sxqqkt8u4aks9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eqe8put45qcq4jjd33uvegx5yejrarl789nmm9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kpvvypqvwufegc9w5xhw5fs9cm4zn9z9pfz4p6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dkcglw2vqw902gzxy25hhmnj9qulzwcmn9vdjy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xzwdujmqlqs0qvpd4387fkrn08x0kuvw9tze4k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12650e5d2t7akkzk9uqnrp6d62c93pj6savre8p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13ztgxstgjckmzn6rl93ze8r5reyp3ftd258lyj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dyjgd8k20anu6gzwm0j3dla2anuwkdfl5zxmnl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zg6zxhsvat2qgdn2m3g8g6h2wksr8lm37c0q34\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1479p9sw8ws9dfn27exzd0sycj53fr4yd9lqczl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x8w4ywav9jf6uw2fqkq3aap2vw7kccrrvg7xx5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qd0j70frt0j676k2k6vp652ru9ttc20n8fty8p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ss7wfx05k4uyd2nnpgf4mmy2m9qr9qkrg8c53n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lhzjg702cemly2nux3zr4ccacgmpekzk4ys35v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zmtr6qq652wchtra6p7ktd5fysd5rswzh8g0px\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wlpf7qrgdj8zpeu7at4kh96r6jtlcezlutz0se\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1me2xa8x38h5rzalr7ltty5gzasvgy8nl9r938c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1luhp6nd8c84kgd6w3g8ku0cqgxf85kx3gq9apm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18chdsna72r7gz6tf9smrxrfr8smrsmnzhxuvge\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hxdkna25pcst4dnc8ahwd3hcqzrkee38rwtjvg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h45vr7a88kqf2uaqg6l9um3xwsww804t62kz5r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jsuz82vk5ea7sgqzqk66c3gspsr2hxxn033x5x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19d9s2z9ynt57hesvry326csukasay0v6vjlkzg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17lnytsjz46el8q2w3mpgrwp3c7da0wj0zxyd94\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e85x3cwvfwdra92a6pc8acqf9tqsm6555ukal5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xdymuvmjn5lcqj6cnu5g4gkxg6w4845tuavz44\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yg5tntjdezk50lj4ww7g66uvn2smy89rnnpt8h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mnkrjl4k5m86ryp5l0facw3wtyyzv2mwcwrhdq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom149ster04xytegxwjpuhsq5t50a66yprcvkd68k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h3gd7fzgk8chnkkf39wklvt6f7p55tjrdchp04\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16nlus5elu366xvsnxxv5f8jrkaw7s255yrzm4n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uvfuwdez3tddwypnnx8xzpupem6mt9eamhc764\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w84s4875r6309kumd5vp3gk8gzcgzdnkd2j5ra\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hpyfv5jq4dajuzxx5u8x7pj6neqhh7lsxmrdyg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10n8ekhyu78uu0lukmyarw2nrxfgxfs2f5qtq39\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w2jaqrpca3e9afqww468ergrs4gt6uz6qf05wr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q3cuwppwwe4wdgtwr2ta6gzf2trswwtkslatvj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sc8nrz0mjs5607yfw53duj8vart687n942wwnh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1587u0gmq35em78tjq3knguqlual9t3xy0733js\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l8lrqnvd7upt7jgf4nwkg7gxayn0ee45ngernv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gdnxmtpwrxx0aayd2yurw6xs29c4se54sutuwj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1at9ruald2qv9wqryw2crlrpddwrh6szp82kku9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u69w0lj6au57g2kllsg8a9mj6k4q2xmng3qqly\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jyczuhl6smydhkcjdu67vmap2luefvdd0rtx38\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19745k5rsrpg8066s6v3vlfmxv8p6trlaukuxjq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kyjxn5qk9wc724m62plm9sqcesf7dchdtye8sx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n7aj74kn4gxtm6dqpz8k6tj38047j6jt8ct0a0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zp2zel7p63wa0t46nm86dtze2gvke0hvgu8qlh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jujuladj4g6yt9gfxe56x6tzpyez2r4mtmzqct\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rsfzekled2gy3st8vwlvnfkrl9rumze6mjg06k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hh8zflkhpa4vhfjxflk9p96u7hkqxnvy3kkv0q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ttp5cwf04mxyuv3mtt0zj4f34edm59ez9z4eeq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xh9wr7rjnmegjks40yawuf86qmamgg0llkqme2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom130vjsec2j5hqazxra40r67sepevql2qmgh70sj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ytf7krsc05vx0qm2qfe3u8fk93ajmssxvdrjhw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18m4ware3uwgh3t2677qgdayqn6467tfpdp0uck\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c7jfyedm0rs8d59ag9qqugk4aas0yhxx2e84nk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14nt78p0s9z0zqj6u4yd46ywphse5aca42ex0uz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qd0knc6zqqt34zfrurzxztrnhyrvefhz4g6w5u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h09rqm9r0dyhr23qprvxshgzgn2pd4r6r8j6ty\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vr4ckd95fn90xznv754d825d6ua4259whjp6z0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dgdwvx2sxq9uxd9emmntal2e2f7780jqydn563\n", + "\tamount: 1boot\n", + "\trecipient: bostrom139fnasf0cdp29dlxtrzp5mrkymgmhstwflkdrm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15wx0nvvr6s0lf6c76fxrv8a3f84s24vvql6v8p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f7m6pfwctu89ppd7n5k8lah258y7wqkgav2ess\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ex2ztqs6kp92gyts60r9dlv3xdqwglmurcd8qg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tzkwmthhmncd4wuzrepyqzfh7hw4l3r9x4nzzh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ak9nvl978hqwj99gtaank6tye8ge6a5uz4jvkj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom154d0cfuctglzlzpph6apd3fa7z5ahyqw0qgu53\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dtj4evf9nyqmpeqmduuh5wp2l27h3efqw8tzu8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ndvdasauhxnamlm0d5d0hls4dpgs2w60646chd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1399ghnzcsu4c4pmsrn3s6f2cjmpp8pzqntpeq2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hjx5t09py0v6zpdstxq56ujaes2qgnefnwhnk6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ya93ae0fhr9gvs936lnn3anejqe75sujlahy84\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mcmrc0hrhectljf7q7zgd8gg3zkltfaqxcl0ez\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13yjj5zsda8ezqkpnlt2rrlu5cm78qxqd5vy49f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wt9dua56yn5jjulq85vwzu2gjjta7ymgfufvmr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19rnfvwv3ht79ghw020e4whm9uy8mgajme4jnzr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13ykn6xpwt9p6fw4ll3mc9nnjp633q0q25s8rcd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10rwwedl2srrlscuzecynd0mrpgm200w86n89pr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tlsvw6p5ttl5dc8ennduu3n0arm92npz4mkp0f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l706juna9ev7xs0cc02qr72tle75elaqdk3klg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qglumrn6sakx05m7zu28tqtjsqrh7wswrl688t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17kdulsfwmv8xu76cgmh5r9pmsda49n225a7qnr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v45v0ps445pgyxglgtd0zc5te6v2hzspfhtedj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t87raycs47szpme98xr7fddne36vvaucpxt945\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1543lpstumzljfycfzlvc8f4dddl43w8c5n8n0h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rpdtz6klq799elug3jr5l24lc4xm0wh8vhu6g4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18eun5p4yzehvfpemvs2qzv9per859pjl0jc0m9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19thqztypqkp789z2t0h23pts6yfz9kc5ljwyyw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xufxzjqxsnxdpr3ns04sct7f8qwlt0qeqh8vsm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16m25pc4u4r6d92s0ttqdy36wxeeehwefuhjghv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c3qcwp2t2cxle3qggcwt2vstml95arfyhnqlx9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xzqpzmtyevwdprufjkqxja9lhv57zs27spgpdj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z39qgxxhka88d6p9kgv5sax9p24sagpnmas306\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15tvwrhl65td5agnyu5p37d3fxtx8xxg9gzgup7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cya4mcemewd53lmupahl48j2aq9uujr09d8gsg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10t2cxhkvtcgx82rqypgjeps5sf499gzshr2cjv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tg0t4x4whh4eeyfyqwrfas0kcd62a8zand3t3e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wpwdlv8lk43ptdr95uj2sn23uqc6uq23qsrgqx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n75k5f0jr9380gye3xqxjyq6vnvdzexjh8d827\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tju64qu24r2g4xkh5xw3xuguk26g06p6xsslkd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d0u682yp2xvfg5d2429alec5we50wex2cvran0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17ln09gfej2kqsxg239eql9jxxlrkfucf4dmthj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13cpak2f0vznjfyc7ktxjrex0h2st04cdlpx4ps\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qtfhzaqvqfawj9px9rkm6m4e6rey96mlcvqz4f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hpj3rxpcufdrsnxjmt0atzydw038r3yevvp0h8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom103f3sad30ujj0v0w46zjdq7un8smrf7tw297qv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h6vg9yzrjtf0ynlw9wls6zq66w2xufgg456e6r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lcsfs8uv2773kwjg5glgdrx0rysnv89sdu8n64\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12fpqzh2r2f08z5uwmcmsjcnkvup4ghw5ypgxgk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hpgmw8g063yx8tt47zpcp0s2ugxmu4f8pcr6gv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z7n8k2hgs060c5t28mf6s55cf8yh8ujsw5q3du\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12afea826q8hm0jtcvt0849hv8xj8vxkjfmt2yz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g292unc3rngwfump5w0nuyk4k0v95dp4va6hge\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nvzy0c0ea2ju5u7sfeg9erkxdsk09cg8sswr5z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a79n02hlwpw72mfvccxlrfll3vu2svnwsdsf79\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z9l0h060p68q26f0dg2d25r2xv69yg2msat2q6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18nk8hqp97kqnh0vuyxcqxpr6382nuemyaf3cnx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lzhc0cn4zu0ec8wyay9v4u7j2tvn3seg9u9g70\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hh2l43y6w7e08rnwv7ahqegdndham46w8q4ama\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18tjelq6ugvrxf3948mjpmyjah6ck7w62rqn4sc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y3956wd7rfwdj3lg9jmd58ghz3eme3fjxqjmqg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g403twcepytqz9jqmjay7fytfsq5mmhtdc5g9l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p4r8u7revmkferjyn2yw2ewq0g2pf8cuvc3u90\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vymm8qcrc82l3gmnh9n5r0n3utvc9yv8kyvzs4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jhyys663gl2jfzmp3snvhhlrxv6tzmjd3czze3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1463mq9jf6vt7s6z3f3973e8nkrxuu68fmeaf7h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1afxwqy76py60h2qpclwzfj8t7dz6y3p8s4ghs4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x99wpyms7yj60qx4ux9t6kev655k6l3vyje62n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10flmma4fknqaptfp7tvmx79aryncwdyjsf6d6s\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a5t0ga907jzlmxj4z85mdf7rr7l83fhparw9dd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1584tgd8u70u8qgyg66lwje2g5dad6stwh3hpa6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xeupdlp34f76440l3xrz84j5ulmxnj0eyejc6r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16876x9n92x4znrsjxmwyzevpu5x32s67k08ru9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mh3w6sygrs0z60nzwj44csw6fxxgk9genv28xc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dkzz5xw9ajz84ggxmhvcss30w4k7yw9pnde44p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12m28ku4e7eq3qdgvn69cynel0zvgmy8qp9racf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18d3uw85p8hnva26km6uqtvx83wyghxx9tn67qe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1drcpns50v0wd6w8y44ym7qw3u869xflqyucfk2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ppj2cp8zr9ra5tjen6w2ltphttpzrkx8m8tysr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1spt7k3aw274uw6r4rqmt34zdx3tw8d4kcummqs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1meww3zhk3cm9gtkj037cmcj9a7h0xktlz8zxxm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1djd6lr6la62hplyutahnksd7jwlut25fjna8ng\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zg70t86f6psl9l3d2cwq9rjwk3yzqj9xzlk7rm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13gmrhhkl39rclldwlxve583srejh8qx83y0x9r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1643j3etaa93ufzezrcv2xst420nsv04ec457r7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12llzujqtsjlvrnv07sqkuaan9gdxgqnearun3k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zz0yzrxgs4h5zzqnmvtq9fp49k60dt2m93qcmt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v68ydakjxwhcjczyf3c5tlmcey6xra4z88p7ds\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lr8rjkz0ujsngkxlzhmx9t58rqy3kv6rzv7mun\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1llm38279gsh4p44u7pn0ljv2nk3f84dy9m4s9r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom107r3lxktfmduvcvtjktpy9l7hf6frnv7mzwmad\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c63ahsam0jmxxdhx7g8js30hm7gjq3xzl20dzq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10w5prvhmt5jzwxyp0d0xx2yw0j30y7hz58tma7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jsq0dx7dfrjg340wn3mxskl42t4vzsfapzgt4u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom120prwl5v260ndpm99804tehcjyegy505h7cxr9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1emfauyl90znpravdm9383fmspnu7y0lk4058f4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kc8yvay3pkn7rx8x6242yk5reyzrmmg093j856\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mv0q4ta3rzl5remnj77xs76jv0swk6ld0yjdaw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14kzj5qmcfgtracl6p36a7pfcqwezychfvctfzw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ustjm4ufn27gquys86gwfdkh5dyz7gkz0nswwd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f88qc927722fd933vrpm2n7e3xxtrrzxw68akh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k98acm2z0fgkrcu78u5l0tdjgmgzmxcj0p703t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14veyvk0vcl5u79kk50msvv7nf8e4yak2snvcjh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13ayhj34df09jsygx9g5zprprkv99scvzf279x0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom147sh44f48cdv333y0ghrzxp9d9fp69uh445f7f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1prm69sfehj6fqw4k5mlxz65vvdqlsq5t2rm6m6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xqhe3alyshmnhrpsl8ynknr695ult3vnguev5e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom197nnzn0k74g5tzm6p2x9d7luxvm594ksxrg8f5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xpl3mevj35l6n5ryvtccs7u9kewq4gkg4u4m4y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t98drv88f72rxa0a2pww2amu5t98gfpn9wy9lv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14a3hej8e45fc8hxlxsplry4nes7nfc5thlc5p9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14x2sq6feyxwqe08qnrvv2etlzrq69eexegt2jc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dzgxttwy6j6cnscmhyxdswwrs3q363hlm3ar68\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nkk0w3muwvlg9wyccfrjvm43ll4t8ny44s5htn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wvwx60wxtjnfsfgqtx3wg7exja8vl74xvcfu5j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p87ax0xx69a5l2s5qhzjvfep7mraz95dakdc85\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hjdlj52wdj9ud8ka3hlkctn2dtvcvyakxhjgn8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vd4mg8ju0fe88k68vvt3jqhvquqqhvkhq84sqz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xmytgrvak5pga0zapfzd52hsfmt362q87wwdds\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nauxs58hg3xuvqe43hp27m8qlautqp76adt6hq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14rft4llu0y3vz47909vtlrw05x3n2edtkjjv6h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zj7r5q0md7t8hrfh6py5g7mxeqreth5kwlwhht\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vs8thvn5p24pc6rxy3gleqcwkk2yh0m775fhp7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e39h3q7ugxmmh53tj0uqull3cg7jewqjrkf2gw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10q70x4qrkl77sr8rggzua60jtrxqyy5x9fukkl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fz7u4aa50j86q7l86c4f96qu95mehqd4qr84wq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y3ul7dtz7u0m3zygdsptm6a4qs3v5zq9jzert6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kd37tahxxtwwv8g2fnvxh7ujqgdme8z9hmnut6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ahpcs04a0g37j3gskxuxp7xsq3vfldn07xwp53\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15jnanjdrdhmedpgld2rcqtjg96suu3expmsj6w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k3kds5p8slc64rltwgq5jc49zm46s4qv60qkzj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cwzlxmen9kswsv336muj3f2c3vs32v2xc7wkj0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1grdnehv5y7ftyku9d9eulp6q0lp8wxwa56ke4r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mqu3lhgsfmswdksszfsysj03a8ue2yr67xsy67\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z604xqr2ykfdphrh30hg4ygfxm4zenupvevamc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15pee0fczvsmwglsczsu9e8rfxmap0uz4vxmngu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ghrzsu9xw59ff2enntntluazrtxepyfvah777l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s86d0dfk377sng3rk26dc67n3ft6ea9mvf4ywr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1va4cmwftyp7yqgmdcy3cgev9jknxyupf52dqs3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16jkd5xuhp54krw9h0k2yy5lgzdnzz9fw7kxnsa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom195a457tp5j0uw3t5gna7j9y6cp2cmq76ssue5q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15uzrd87n7s92mgnzyujtde78xzr6gdjfc45rl9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10esk5ta5qtj7v4kaphshvjqah0056ze8pp4ycs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1js5k22fmxcuwza7mluua453k2lsxftl5mtnf0y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s576a8e8w0fp76s5ngp6yleehk7p92zujh5k0q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qnytzndxfxzu44puwdnz8vfrepm5w79u47pmx6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15vyr8mn36wg8lncnyswwa7kdemjaen3ehw2sq8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17pzlvj9ash9ck8rqh8nt0ag9feh4dsjhfzy5tw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tm0qzqepuqqng2jrxs63hu7td3k5pds8ce4ggg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16hhjm2x2h3nekyvawxyecvwa8swdfndhwjalgf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vkzcrfmcyupz4tz7utvd6lh5x80ev7mg2vprrs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t2k9fzlfqps9xfl50kahl32vtl7ahghgh94awh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yj7wd9rpvjpmxv0sn75p7q8zgx8p9996uuhvxx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m82xf3gk7t3g3pgh5tt7k07l5rj822kpqe3ykk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e5wa9naa9z3pzexcl32fw5rye8nmpa3dqpxfng\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ylkkhjx33lmmqd34fhp3lp7h7nppkkh3n9drar\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hru5kp5kmggth9frlj0yhd9mz2lt7hmacdzjhr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dj05hlu3c7w6h3tgwlrnygvx44r30jy6e9nt3g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18g62ucs3helr7qkzlaj9ftzslunawsmhk2v3lz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a4prhqhncu5anhsk9qpk56wejwgpc7y39g2dmj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fs39l7hqmwjrejuf6q9l8zyylm7jxyyw58zpu6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14rg7jk865mgyfw4cmgfkexfaajmn44h7ugsp2c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rqtg2fxxq2zmrdm7y8q97xptu30mx4tkxwrjzg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wqtgdr6kh6rtlyfa9psp2ydt63jqvapfsezsm2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wpjs8efvk3u88zlertrx6jxrh4y9qjnzpxsm2l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eyvv6479sascpdn0twmpvdcwxqp7000mj4v68g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qk2w66fcuju80vgscvflnpnyhx7v0svlc2erdk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12xx60wdjffyew2jljujc9yfdq2xl840fht0lzk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15twc6r4wlyfu5kl6pzf020zey2sydgfk2tpy26\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zs8t7kr3v0qruued6hpkzkkk66j0xk8ppf5376\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dn620sh4sf2mdsu7hcrtpry7geqkf5rfvuut3l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom158hemtpzhj9n2vnrnajpj02emvqujvn0hg5jek\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h49ltj5kudkfw9gaaa4h659ut4t6snrhmdyzqy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n3qcn5zl52rvz22qdv8jajqs39j973zjxgflxm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zxj4g7nlqtnar0rwrh8l44phft88ndglmupaqh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18tnnkf70gv7da0s3asn7ajmnj8wtnz29dpsch0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1je7630jsp7k3hcukxh7ryl0ug0ufy2qqt72vfx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1egsr7fgrj229k2e764rwnl0jpcusyrjaghflwf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yknqmmf3s2d6eve86w98cda90snq2l4u5ssk2f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tguxdhntr0alrjvvp7d3s8nn38rm5jnx6hru40\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14epxq3ep6xhjpzp2xr30r3p5ucrt5pnfg6jn04\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cdsn706qrul2xrwzggwn4rppnckr7grh49jkf0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1je09ur9lv3falh6pttu5g628m6qr7q4ujxsz7z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15ml5nzqmypfhj3273whsht8j2wy4rmyy4vuu8m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12pcsa6pxw4su4alzuqq9s6rxzk3vku6fzekgdz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rp25h7d0vjt8sc6kgrgumjg07p9lnqj5zhgsd0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17c8g0ag36sjhvyx4kkyaywcqnjm9fwfmhdwxzj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12y6kf9jwg762tshw27huzy6sj6d44nux2lrk5d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aszgtmjemy0yn7e04e8eus2acdycweu7lspjp5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nkazcyf55kx6nnxt9n9980ntsnxqwggmks3jjx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mkylpyrl3y9r9h0d9ll7xl3qlwsh499u824x7p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13lpcvqv9xtjxlgpu5e8gvea2gw6v3dym5uc3cr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1af3x48y3xzkwd53z80t0y7vve5eh4wvzlcauyf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ew5ulax86fu4e4d6vcm3c2ypdpy0ar4j9vxadu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yumj5rrgkfhqhsxuskeq6ltqlzn0lw9d44th3v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zj77rg55ulldldx9xhee7836m5xrg8k0jrrvw6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14dtaen48gpm2tt0xpw2vhx78ydtxvsfnktmltp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gjsg5cqcmqhtezq6vah7yw7huqt4fxv3x5vegd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sqsdl3t70y6l8jd9yvvexpu0msjwq6sfwuuxhz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q6m6awn6y0q56h9m8vft293pftd3jkelpdkqye\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19dxpzcth3nqh6er8t2qy5pm9v9dm7f4pjafzwp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l90qazxt6gtsxujr5nryl0989khppwn400wh3r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rrfen8krca6g05554kr7vrllplpeak0ylr48wv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ec3kxzstqt27c5vfkjzm4caxzln6hwwu3xww3h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qde7vv6mah9ttcm0w3n3pmvgsg77eml7luwnm5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nl7awarslsx4qk5pl2jd58ulyvvnt7d7kh0u8a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mkdvj8fh89km46fm2f68lcfwj05n2vy69sy070\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10yv7v3pk9v8lwtz2emntmka9lzk90lkjn87827\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j6fh8566qkmndepk3chd0fg58a39rnnqpcf8sz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vuhhw7k2rlxxna8kfzm9dkpazf62qx7m8pm8dh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17s9xxnkvtgepzv8t9kqmv4q5w9z5jl4eur5cyz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1np3zr4um8agcp0ewhta2xw72q5lh7ydsrjv643\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1un0u4dazcaph6fwe9th4cjt94vjmnednhygtfe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mxhzhxm9929d3xx2wn8nmz8v927p8g7q5axxmc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w9zz2egxqn8tjtgqe0zts0u26ypgwq8kkayzsw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k23wt94pql008qx42yd2mq53j3f5hszd3nf2aq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15pcddut84d9cx7x6pdm4ay7ea5n7l9n9sgpgmt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1646d8d89my2f9akgfhrlnfspfwrq96hvmm5n5v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c9wqjaq3797pxtgq3feu8azjxnecp356g8f5y6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m7cn09p062aucxg9nzlccez7vr245rh2j50xlz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ag3w8v0s7zn3jkzjq2gxdjlznryfdh6dl53lx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12dn2zry7csvf8kjh6zy34aqdsz0hgmxgua7h2l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13sgdrlvd438vtkvlyvf2lgsk0y8j0043trd2y5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nhudyvh2qypjnrcwcsp9cv9950j98flhqk2lrc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom164jrtuxr6xmqxag6j725shfawkh3erl0jczvh2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a993zry4jvzukjpkyywd680zqncwp88f7cwhzl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1987zexmnnzy2yt7stqn72a7rtwnefkh5ver8g5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gk7gldypgvuyvakfs0v7xk50wxnhdepapda8yx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rkxp0fktmtz2fnukuq0atsgnsal7m2l5myk5yz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lmzmdcap0xu4u26a7gt6p7lrsp46sjqczzferp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gt9u5qp678ua6u7ump2xzqs80jhe6peemhegv5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15myxhpga42mxazcrxghulkaxh6rd90jc3ff7e5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fvqwff203m8wdayqdspfxtchxx5nha2j48h8tl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cswandwmq6t2xey5dgdw6q8cmwvhq303ngqad0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x6fqy3hhl776zse9yv2d7gtlc3q2qmk67kmun2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a0w0a8jt00znh8m445ys2mqcktp3n0d8yy0grd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nt9dg6ftg5c94l8d8yw374s5u7cpq6vzg8n37t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ucn5qlemae3jzg5xekgj8598czx30rlmdl5xyq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom146kxjceuvh2z3zw8nzlzq004lf8cwghrz7ff57\n", + "\tamount: 1boot\n", + "\trecipient: bostrom138vl02wr58zlps9rdp0udhf0689gcz3nckk07f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tshc3wf57aqgcc76ufk90qxxsadh37evmwf4q9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ayp0rr0nk9ps6dfdr6cjk7ufme8u2skcjenp5m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19c0xm0msg5lan8juvv5c8090f07ea8plgpw7dz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zr8v8wumevwk8907esvav2af9vgf5dd8upjuer\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lepml32dm8nns3w75dxm0lxy2uusk7cg36t26y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d2qrnkj4specmnyfz222adjk4ya6hunlyrn8l4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1srxqkz3v5xgxm5crz86ekglph4hy65rktr9gqc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wkxhqmjtv5ehmvh4mcvzedx0qamzjywgcsk9ax\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nerxrwfvs5pv4wahgcqcrgra5pvmt7wzgj5x9n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v5jlvzjwtq8yzverda0ythjghrh339d63qvghg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ddqkgak85evc7t25hxg29y49pjhvq50uft9ne8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wttmwvy9augmygu4t5uhgkja6qqd5qdrsw9lf5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12pre70dcmmfkhfpmtvx44cvqk47sm6a4ffrm6e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mrzn0tujzchksfk7tprahv6z2ljpaxypvhtrfn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hm80668tjnvfhjaqumehkavta6enzrgv6q5evn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ghnw4rhmz3d9f76v59qk2rr7st3eve20rlhhfh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zlacynvygqyq0asvwpgngfvpaeu8tn0hxqqc80\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1846hj2cwpx5zzhtrr6rycpdxavc3khzdpyu7ln\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z37f8dhx06lhvv23qjpj9j487qr8appjg3z4px\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sv326su2h42z0wk6ql50we6ngjjuhw6lwtl2kn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15jztqajfzycqxwj6gdmjpzkpf9j20knwhus9ga\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zqaj03yhnf7rk6yg3k69qac2ckmzlfk82r3ezu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r0mhtjcwvce9m2p0nj048fe7vk78jjewk6spta\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hyal3hltqf3kgv3nm0gvy6g26njf3caxwucvez\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dm2cfx34kqxa0qv2z53azqnmm54j3h24z70htz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m86sah6reuww9qgns9hpls3hqfjl7xt3fy75rd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gwyeakhfmzzv7uc6kpcq7la3xfvs8e9xrrmaf2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cdryy97dhustrcnlhscrj0xgzr74srj3nj5waz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17rxvegee5wvau4xenr5xd7h4e6xf4glfd7dfv6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kqmjqq7nuhv0m3qsyxsrhq2p06hznzzt080unl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1clh7s0g4fcd3hsmrpn3h8u5tkuu4gq9sufh2u5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yjk3p6y9ussle8auv4ltncc9jf5gxvjksmzt8e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k28j95n6xg8mls47awsw3f465zlj7g7vrsl7cy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q7fppzwetz46dm3kjlavv8wmx5lz3hd4mmvzhr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zd4vsvw63nfdpqcp87d4ffndn7hypvtx5937fa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ak8hvhg89wzv93hhrwygyen89eq0t09mq6t7mw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lkrk3l3440jn900mswrmtwemrft6wl9q4vfmv2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p65u6r6c87tpednvkklx6vpvy47z27g9075l6h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n860l6satlydu8f5jy8p9qgd9jcvvaca0v9w3x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14usrh0wz3892e0ejdz5v39zp8pvnkknklzwncu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kww4lmskkwkarn78lnpq39u8vvlqjz8xyfe80q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10dqjrua6fj4e55kvca00zxnvlz6w3w5jcatlja\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r77rtpneujhvu5vapzr9zgfyzkxzqxa37g02cv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jp66jmvhjuzlhcvkc5r46adzz3qhuzuf3cmsre\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r8773q93yvx3syve806gwn84p5m90vc8h6gt9p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xuq9cxge2xa3h8wa3c4g8zpvmukervux7tkkmf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nqdjgxm0w0rcquttczfkz35qf8ruwycep6aa7j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r4yd8jw76e723u05sdhp5hmjapnmgcfz8wmjs8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hkzvpy5d0slffpy95d88t2mrzljegxgs3s330r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gh40jm5rs88vwmzq7jzrsxs280334nfcpe7rfu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ghp7r7d42kg03qpas4yuu80e29r9lw5vz677p8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10gw5hkj8fefdd4ykmw3l5kf2lzr976wqnr0x37\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18k5pvnurkurgecky2fhxmrz9he0049htjcrzvr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uc40svsw7c9vkeuy9kst9d7dnh07ll52a80cgd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h604tg0cdg6qyudu67260p7yt34rz53ummwesd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom183m5hxqc2mzqkemwzmjngaurhv0gzqtkawgdkr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l2fnf84salqad0uvxaj6x96gknwgfqmtyc85aq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom107jzh6czthp3g6wfdw0v5r6kffzfz9psn7alhd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zj2dmdvg68cyyktx26h7p2lau3ascc5ncfwda5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jn96fk5mng93x5khyla2fyaasxt6uukde2dm9c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1trxv6xd8grraseepe65fe9kleehm2lvkruls62\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mqk5ttwmsz737hl7ru9e868pzjyuzedr96kd6a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a8qkc7yrt2myupnxrfcqr0az58v3nvm8ertatd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom167prdcuc2yuqyndhwdzn8694w2zj087qmak02w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1clhfmkw0sxz00gesd9wrgc3ucjzka0jqmrrftl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1299vy3xmh2h5vjhe3tk2hqvxrhze396q2m6sr2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13apg8cuu2wr3h4nxfkfd7f3n4xzjx2y7c498t8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dj85hv6vhuapawsuutjncwazd9fzdep7n4y4qf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15ktta2gn0y3u2kaj8wpmnl52zaeq9cz3zdrqpv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q2sdp7t0tvza5lkgunff6jhy3zz7dcazz98jlj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q92zxauvyn3cdvj92m8lcy0m4htmuywhctlyn2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sleajhmcagx7t2595lvjkd0fc4mnkqf3hp8mk6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xdpxp6huxyhgjkfuu4ks5gpdz2ae8hkprtnwuk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yn30w00dh5am8qe2k76unpl3le9l2zspmhwgz7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10cmuwjrz3j395xnw2v6eq4zds5884h38mph66g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x9zc3upqdk4ekg8lsgmfzpvahw6rl6n6g9wsnv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ru04705nhefk7y6vcupw39r7z692cgranu4fn4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1llvjz79vljztvdxxv42v7ygpj8w9xvs8adekxg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17zf822nk6amrhwjppsce6x8hrm5seh6z4nrxz3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jqqk6xfhl6wvufethy0u98c5l9l2ehuc46k4d4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m0vcq26ngz2fe722r5ad4kqs7hmud2zmvqj3pp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wdu4df7dpavre275rh0g4h4l4qmv3r8ue0296n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xxs9cprp30rhwnuwf60lk3j7ezt2qaq8lqt3ra\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vnlxlr3pqvtzae824f64vuwzg44r3yh6met5dl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e79vnk6253zjm7g8xpj0jscqsrqgc334ujr05d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1thr7ncw04460dhc04k8fsy6k6rk7d0ch0k8e3c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16lsp5vsl4zsvxzdrgw6463lllwwke80l27ay6r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pwcxxs7s3hhsj2es8lr434nj7cm503j3e2kxud\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x7r929ergxmnldyllx5ut60ad09lkpz79t30xd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g8rpt36e06k74l6xawq8f8caqhkrckvdrsdpsu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom133t09qukxm2w9swz0jqvjf55u0ee7rw8k9ar57\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mcql43ajjzpx5338m0eax48x299eanvvekpmlj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12vd4yulwfpu8yp94muujml87vptek95vh4qpjt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zvz9pvz5rg3jxvmnc7jk4rst4gur9dh9jnfpql\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15eywjl0q3nu57c7e8wvq3vvqksyvauhujd0frn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19zxup45matutmr7km2q95zu5sj9th05gapew02\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18247s0krgklmnpym9gg2htue09w3ryyrl82qta\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ta9nh4dgg0yz8n6ud26ludnkm3udqsed9ajl0p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ny9tv6ceta002ra95wj49pap9jaar97cxhvatw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1epwh9a4kxj0wgjcuzsd3x6c5f8z6yq6dddzgt8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l8jkqrhqsfjajwptka8cmhp78czse9twc939vz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qa69fwg4mm7mmxetnxw9895mk8jdmgqddyp85a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1294fqdjf9ny4yz2gwwsf82m0nz8mhw9pkf8v05\n", + "\tamount: 1boot\n", + "\trecipient: bostrom182k8w3fvf8upq5qv3cdxwss53h0aulkersc9wl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zpyat9rjd7hhntxefkpdr32ln32jd4fut27qgq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16g3u356lqt5c9xgd2smywjlmms0lh9rf2qzxmp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16rcyh4sqy236978t3hhtmr3lz9a6ecfhk4qy4h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13lkuh3qtylfqef725247egt9m39z6dlqgpts4a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17mv03y0d60eqt0nlvfzt7ef8ww0wwmrkfc36av\n", + "\tamount: 1boot\n", + "\trecipient: bostrom128h0g8wdwnxl3fm4n6lm3t6ur0qsxpz6rsdgyw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n2gzxvd2l6q3dpf4nr4ad68c2frdmh02hpadtt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gsku49a5hk0xffzufjgmnvhqdmjwjkp9mgd0kp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom175mvm2zzhnxmnmx7uhl03ew7juu4prnh03eewd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cuzeaj68w30tdmeddk3z0rp3a6yrtur9cqe84r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1e6ez4utc86twa2zvrgdpwphjkfdc8kngt2k87k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zjd2h2vag2yr9v7yxqzyf4lrtpp6uqftu8kdgs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wpnnc9qujlrmqa53cdkxvwjtqfcldx6999mxtz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xhvng4wtsasahd7la63rw4zs7r5h6lj9ju8h2y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a9746qh0yckrdm44ggn7ffjeaqk6cg5mjhhk6p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c67cl04s7v389e3qvf3tqc43243e8j2lr0uj0n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1973rfrlnr8h5t3czvcmr3my30epzyncz35e863\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dgehjlmzuee5s3f43gkg50g8c7vnv2xwuz93hk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n2ye3gr4fz9v2rsrszzxlfp92qd9qkquxvmgfr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom163hcm7zrjvvkxh6hqynn6htt0ydm0q6phg3gld\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v3rvhe2c94mxknurxf5e6zku2lqsp05ac70yl2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qac2nzvhfm2m56c0metuur4a3m86rqx37esaxn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1za673jt96ht95ahzg0ym5y2wt588qge3d6ewtt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nly4f92fwvw0kn7cu2l2z5x5cszyhd7j9zjepf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q3cwxhsk932p2gqa4ly4skzhvqdf7ln7sm5aq4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1djgujch09p46j5uauu02jzjs3usm8ypgcverg8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j2h7e0ezc4a6pxenrhssulhgut9297ju02gfcv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yvzmnuc3ktka0j9za990406thlx4unvyhcf4k6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1urc4c608lylnjvkxqu87rqwed84d0sv566d8qh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uwclv3vwne73maquxyc2veygmwcdhk3m5dnfsa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hjacq2945sq87w87uak3m36qzp6fus9tqk57t0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1apqdw8gkc3gfegxrs9xvkcf3hqkajprsuvglgh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1465zpre34d4al4xynrdcdc0ndgkxa5gec2xwlj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1akmsa6qmw7kuknqgmwjhldrdzqq9fdfgtu9cpv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kgs5t0crexnmym5jkhe4qsy4g0pmaf6tdz3f0h\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1993l4k9r8rw0klkl2h984gkrvahufp0ju4lecv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18zkahqumd3gnv7x4z3wd5g696xg3hg8yfmrdju\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17qgrk4k2gkuz0w5yw8gjx09xxzqr9yhc2efhll\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c8jk2s6kg8240dz2p0k6rdc3taclmgf0jgv25a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uyqjzjgvhw9nem6v7k8fpyl3eqdjcyssma5l4g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1983aztr0m20dkhtu2mux8dga4sr7djzp2gl0zy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s0l6mz4syf73nttpvgednzqrky06n77rue00mx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t529mr4g3vvruxyj5f5emqwmy3sfpwl4kx2xfh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19gssn2lq3tzaxyslsmnk842a2fea2wf8nhlqwp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18u2ym7xzq2380cnylfr3xc28k5chhnz7vqz39r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1u00j39as2w0lek5vsumqejkjym5xcj2vpff5hf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pwfnrwl3xklghtpkgj62ceuz8qv6g7ffytpcw3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dvqx9ymj04ptah0zrgy6zwzfqhpx3jq823haz5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k8u45uvulhrqw00y29cxz7wmslgvncl23z5pum\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ydgdshxcxfu75xxe6taenm25yhxzmh9e20ws2x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c2gl9v3vr7ytcknelydyqy2q2nsafs79gmcla4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z4syl3dyjfgdf5qwfhfywahgtzmted4ykcj3ye\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15m66jpacg6s0mltxp97zhmyrgy4q7t042q558v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom135hdd9fx50fp4zmgu0yceprvehemfgf45puhgn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mldfnr6g94u05x5dd7vrekxfwnuqjrs5cjexen\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14882mrs7j7ckj4ezj8n7jp04x3uruw2rh9p4q4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14xjv0vm9q3vvjfcvza39d6d7dr9ek3pfa3aq76\n", + "\tamount: 1boot\n", + "\trecipient: bostrom100l7vy2q98jc26jr5q0xtstfcvzsf38f5mgvlk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1llf9n2n6k2zq8j6e62me50telgnn7486cngcw7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18ltqp9q84c4uay5uhved965sudm6p9xupc4q58\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xtsrkgrpvfv6gu05wespzz4ush6lyxx7g58j0g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qf8j7u3vp29y583gegm0ueky5w2z3qhvr2mc05\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r8gj5gcgpycy0hd8f68hhl6p9m76hsmmp2ns4u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h7fjhemzv0tav88ukcrwyad25mpqt3kejx9ylj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1znmxxsmj8qr63rgudfjtcta4929ejx34sdcsu5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19l3pjdtc7e0w9rpq7x7e6hfcugsr3pm5uu4r4y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom144mzx0yvv3m7zmmasshy2z8fve78nyyfe9ztkg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vd2wdqtq7xgte6t37a8v48l5agrv99p9dlytll\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14dvqseeus9ldmqq2ulstywk4jrnrm8nmdxw8j0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10xkgctcm4unscwk4u0pus7v4de5ujjhtk50edr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vkezuk5cxzsw0ttp9a4xnqlltdxyujvytj8s6u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12sdkv4r4neh3kcqkzqxgjd7nce0xaan0cj7ccn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15d4y9g3snrfjtt6zud0fpya0xlpe489xr7g0xj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19q44jvn9jsrl522yzvvu79z7gxyz56pc4jj7c2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19dmklklc02tj5gqe7yujt779mugj2jz75tyz75\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zpwxe2taxgfe8pvzelk58lmjltd3xm9mzfnzj9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qtym8svxutx4ushgkhtq8n7vtqxgfw6w7afsdd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nz8uul76337l45eagqa9qsvwv8rc4fed3lpayu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1papr2wv72pgeqfkdp5h0zglyerhtl7030pxxdv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w9m7t4w3eepvgvkrx0f5sk5kmc9ewmxg3h0dzu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ufxf2fea0szu5axdxr9va7hws2qs2u7dprwhe0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rgytlgw77rav6jdxnmz5t003dq9eltc3jte9fe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ghphv58hqg0l2p243tm6zfejusytua50qrvsf0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tk3qa8wv2kgldydx2m6cpt50djvzd464vntvx3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1shsexllfzhtpm8yck8rev2km2jcqsvj8fz7d56\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14ee358vyah372q6zpssy9ahv2r7ntktmtwggnh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v77sl2n5lrj5h5re5tr2xuwgacgzldrpw87mr2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13duj03pgv05rcyznpye6a42ndttftac4pke2t8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uqslrnal68pcax88rwl7lzns7spknjvs7w4695\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gq5gc270vcw90t8g649kf6ladfw4eal6m0dz2q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wda6pzrf039hf2w8w6ycuwgkv8vz7vnsusaup9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13eqk6t88z627axxh4826ymv7qpkzdd7krdkytx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom186heuqhd9mgcjcuc29kxea6xxt5jyzejfl44mw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12adzskrcp3r2807hrccsywhpe0u0s3yenz2ml8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom176xymac7v5fqzdq4g6w866pwe2mz58k38sajtt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom192an0y55wkcf7y8rn4prgr3txh58rjwd5sae48\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1scct945twm58q0wumwgpcajrhnxvsv6x6kel6e\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ec3htzwfh7c7px0r92sxnasm739fxp57pup690\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t73hpf807u3w0hw7k89uqytv28tqpu5xxflys2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xe4ujzj6d0v7kk60hjfkquczn9yn9eaa5gnyk4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lvvtgrzx7k0fny974xsy5fkl2kjt4ludhayx4l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17lakf5nj3994lg3weq6yz7awun35f4cwycpqp9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17pgax2jpcs742ar3w5c4kl8m94dxmjxdhj23qe\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wtnql9yjzl3gmlkazqu8fn3s8uhfw0y4a9r34n\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pteez4dj3k388x62wnp2wql2tzfahhfgztl5f0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom138w676c7slnl06c3rwjg85k859w0fgne09hwmz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rcpd4mexd50sds77nuqsm3rpm28q3x0ehzy5e5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h60dgcsrthrn87c0q5muv6xqfn0wfxnv78quw2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gfywzf0t94qj7ww9mr36vkze3glkryzpkju4n6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dz9kcccnsxv29w42s0mjqrn49wew0zz5kyy7fs\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dpqhlhpep3d4kekj88tc7j3cy85a6efze6252w\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c92plp5k6umwdzjj2wqzqe49p2lengha4pgnd9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kf5j82k38x8e8slesekfqqus66p5urvvmqzk0l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18v63m3rex0dyu95z224avdtjkkfqtvm0uccp2t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom105fm5wgs5cuk2dkrx9fc8e992rml370tczpf39\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13w70u5w4g4xzszmt46l4ed6rcgl6felvfysthk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12rd2epqqmdjcljg030kjd2rp03jn53pap7nvlx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15r9mdmq0t4je96mhvgslr9vuc5fgvcnur0duna\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r4vrdpgpzc8ph0flf6hx8wharlc65dt2jlquae\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1gwjtnuw9vw9r8t2w68yjxdw6akpyfwryexxdml\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j05ny50lvr65rrtlc6055gxkkqm0s64k9lpz3v\n", + "\tamount: 1boot\n", + "\trecipient: bostrom187ype7a39ndm4uefpz070euxepau2gfmp29evx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v9ksnjky4k4cvf75tldetlp23hhcq7xe2pek8l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pqz2v3gxhpaenju2t3vz72k6zhrtzy68w2evyt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1asgguk28456fndxt9xflsw4qw75pvthnh04lhr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rekhml3k4e53peq8gdz3h5zm3r0mmfmg2c8mr7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10wwzshz0qdw64yavy3qy4w4ag2cgjpg7m8tmvv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1233pp9cyarfqgmrfm0et3mrrklzcw3h9rexl4c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h94k5fk0lsmgl2kzd3n3ev8yaafj8xp5z5e878\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yg7d72t54nnq36sd28xg67zsp8kr42nj9nezdw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sr0pst2py6kaydtx3jmj5g68zfzydggyt4exk8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12gspvdc68sc8ttc3yx6ureh9edep04qtuxxaqn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19ueyuvv2c29pzy2r3n2ss2e0qy2ngrag6fk3kt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1acm8lpnt89sg0yjzsq7kcnsnyg69tkn5n7p5vd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z5fz2r0c7vwqr98gqs998qdmc2q9ts7kw38xk2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vd9xfq8j80w06k9sejhkkzqldxkf5d0xxlgr2f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ffyf0w6eckqmrmxk4vxj90xs7vzm0azml87vgh\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ss5cp4s4lcarmpcheu49zhuzwv7ra5smeyxdus\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ncyud3yqg7wtmhg9q32pwq48x5vnpwk0nuyf2m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom176f52ltwtesjcjxjwavdsll7ez3amlrt62ken2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tjvna8mcl0kt7z8u03x679z2a93jmcywhckk53\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ztrfjfyzkqpza7lm7gcsz8288rcvrxqt2hfw6g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dlfy0988t0flr3fl3ahw5xsz2cl99s7gmwp5ly\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rd0zcf9apypjq0etrewuyfzalz4j0ztsgfyc6x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom167v8y9mkftnjqwjgy3jn37nrs9l6laymg5pm65\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vy5fe0yruyqjzp3x9tshdawwstmulcj0xc7szc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uka7m9se5yc063mq2hefvh59x77etqlctddhk6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wrpa0jrff6l9c7rsfgz2q7y8kz75fgajxc6dp6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18sj3048pwllv2h9tslkga0mu5zcayx47pxjxh9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15d27jfacymvmw8myjjmmxaa7muhyvncdpdtn7d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10kk9h8vt7spk9cn8kx5vjn8ecytegjly2x9yf3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fm6xhmhwkyltt0wmu6ns8ph62gjgh597lf4u29\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l3jeq5c3z86kk6ydj7gyr37xlmffdlj5d2thpd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom185jzl69wwwmxnqjg5ppfsal7202gwrt007kj2q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w80e5rk6sdwmhx393vjr4z8g7aaqukmd5lhz4c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xnspez6qm0g98ss6udejdusz5ktv2rjlmhfp4u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12qtjz0rtgsk6m3kf649lgqxaa8c08pngsrrpwa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1lwsp8ks3ge0y8a29z8au7lf2a7yj76fl8cf0ey\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hjh2ae3whwy3vh3vr2wkuplmr7ulftey37qr86\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a0k6vk820wzparmahc63s5df3hyv55w7w5tcxg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1x35vyc7nfd9yvuhkguys90d29gnyey69rr00sk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom160jsnhmqww8vygxfl53xhy4prhrz9sx802g7ru\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wju03rpzjk2htfmjflnwu26za56j8j626qgg8j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hmdrwf4wdfk628rjf3l5m2pc8pzz69hhfn9q04\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13hrwujeg93asvcw33vj8p57ljsh8jphcvn63u2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom180va4atkxkl48drjutc5czpzdjstq08z83qljj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pfytalkr94nf7eu6zhk9amr2s0edal6d5jy78r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uyh25t0dgh4tlpn9pfy8qqza2h6cgy4e5uhw9a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom19250dflpfefayww8gh8pr6cwhqew63nqr8dss4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1twwzlejeru0mug3x9n2qghc4lw2pevjxa8jktz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rc4vaxuea3uj5s8sw6ma2uqnz7rawyvp8q8685\n", + "\tamount: 1boot\n", + "\trecipient: bostrom144kd0eg67ywrl445vamhnqm96wddt3nn6gp2f6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pwuc43696n7475nnmghtzp6xj4yp3pzuy9dxpd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom167ja0k2572r8ra8dgkp6kgd4xzjd9hfjsy75fk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nfqnl2vl8lje0ly508yf73lmj64f0lngz5kwv7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1606r57w9wvw8ty4qase2ultvq2ta52m3qz48rk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17w9yupn8x9twsc2pf92t6mxxntpeq3pau6rcej\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14pf6ya27y5jv27vs005rea2msjrg3h58x4grvw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m48meswlf2savkna9yzws9u7f8qhz6smxcg08j\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tecv5u5zp4w5feeyvtcnc04sal4wky9xjjht9d\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hrx6atfs07gvat8t044tg4ttj9elfgp4s5z36u\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nzany2x2tursk42d42lvztlhdm37zuezv9y0c6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ll59aq5spvcc5mglncfmzezvs5873dkuard3nj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qjqwygux93mffj7vwdparjhh0650w9awsx3qhw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom122rcylaacc0re8a322l4lxzk9l5euk5tx5gwgu\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1vle9txqhyjk5kgj3yxvetz5lfz92rl339667ar\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1eyg2l3hrcw755p2lh9utc3aatu3l0szfl6cq24\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1hnt4sca6e8myh63lgeu5paush36r6jwacv7nf3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a0vw5zrpllwxgddte8a2m4as2tw0d80g3jm2t7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom15v28jarjc7hy8ufxqs7e6m0naj7j9y7d77zm5t\n", + "\tamount: 1boot\n", + "\trecipient: bostrom194csd357ea35k8e4tt5gxgnvs06ugdne95d5wg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wvta6l5pcft2d5xmyt4l77fpmmgzsjad4nvetc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1aq5luk8pwarzqj4c4ezwkytn4l6jxcfdhac22x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1j5u3aylgx2cxfy55dndsd9uzqf658t0g7cxjuy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rmsuk3v53c5v5x66zh5n790kmntlue7h53ldzz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17fc6nvkrq9nuh37yq7sqdway7sg5e0pa00eaql\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12xka8qs6hx8y7zd0kh0n4hapaw2pqgpfszsa9l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1sa9tnk2lugr5jt5hlcr92k78qsxssfhvrjtvx6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14talm6dvaf7d8g7j5xan04dfrgn9py2h96e87q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kle8kv3ptevhtn2kjhdxl7xg0laex5qtvjf4cc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16x33yyxqw55r28rkpw3ul82rp7m3g8ahklsn9q\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t07nltfq7fjwfzaym38p5z4yflaq8apvancs0m\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q5cvelwyh84cnq3ecpg2zkjjndyyhlg8stjc3a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h3t5353wr8hkw929fxgdujxuqk50wlvj3cyjkx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mu70fqsg7d8q7uh73dy34uusxrlnrq6a5ukefp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g5xzwyfv4uchzc2qqykeac62en7exvhu0au3r7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l5dmrycmfketemsfrx4typukwzl95nunvljrxq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom182j4s7kug7rzt5pqnhtjf8w04mcmk7fhxrmqea\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1uk7x0y9kcchlehlg0aam8m75uscnkwf4j4vvj3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17nue4f3nnmrljae2j7ftgywu6rnzy56aq43e5x\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dnkcrj9js270ugx0m8js7p22j72alvhw67wqk5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom16mdwq7yhqzkqavxs73yxkq6vf9qwtgq4vknsa2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1en77aqtxqf2kp6z9nmc8278c7trentxwwua6mm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n5jk57rn25ayn5y7h0kmv5lp0vq2zxrydhlrfr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zq2ppyjzzy7htgc4l8fcu0t79t4wx7krsqqm9g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ye5pvt63n9mwwa2cmpqfl66rxsvlsetrj24dr5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1d8q02w4fxp34a4nqmwkdmpce6mwzuqqgrsltas\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ymwksdlm0xczhhayeqc8z9w0q4jzca8ncze3da\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18h09fkjkd4mrmpjvrnt8qkdhgr5nagvf3h3v4l\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tyrr430k7d7588medqnuwsehtdvqnmj3u5yukp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dnthjlamutvfhzry855648uyscvxcn46nhg9uw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dhpzgvuptk6dcu5zfx99zhsw7m8rvnwm32htz4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nuutshcyxldvrphy8cqyfjhws7km9r7q0fxasr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dqtul0dszxwlm8jcg9f4tuyyqqmxmcx4z890u0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q4zzypewfh07kuygx0f2g62cgw3q72dml86wa3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1s8dwvpfr55jtfhgvqh4dxxggqm4kzk65xkv4xv\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1st7pjkudx3uqylwehxd2nghk8wcqg9s6d9yf5r\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10yhmtymjrfdw8ezad4mcflkw8h2gq9hhapspq6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y28483tmr4592jgruztthfqw4uz7e59qyaputr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n62np8l7c4m7fq6gmtj6rnfyfghxcaelwjffua\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10u85t88ctakyfwc2egdjrkm9k5e9wnqyc4w5sk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18e49n5pgyfjj92su9zngntfs5ll3xlxtxplh2c\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1c6evga5aezsedpecskjtkwwqeaetx5ghrlg5ad\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1m2pxr5mc8ep75ky8j97cylz007yn0thv3ny0zt\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1jjufng2n374v959wf6pysr220rqmn7nftfsd8z\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1pafj988l46c2pf7rq8p2uxddeyknwwtceqrepg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a4d8wgwaw4m2h3w7wx5ytn2y4v9gz7yct39zld\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w3jhpldgwkrfmcnggm30l9v77y06jxgf0p2ync\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1rgr2crm4v90xqe3jm3fgmvwmhcy7dqnp8pkugn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1srkzclwf9afqv70q64rpyj26txldypxqw8mx7p\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1n5cn5c7jn8qvum9wysm4mmjpdels57a9yth3ln\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k40ncwwvncx0jdh2clqamu9jdpy0arhcpa8taf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xncqhley3sef07d2yslre0wg2kf0pdudxeqs5k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1455ak6nehct3yy2sh696vzjrxtvw03wnn248cr\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1cgft9lhqjl5t24rcceuee2gj547rd84fx6ynfy\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l6jc7mxtrtr7wp4ef4vm6389xcvyl8g2y2ruzk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qaxhtjjf5nqjz84x0ccdgldchnaxfvqt0lh66g\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zaustnppdz5rye7xdv8d947cj5ahe8j70v3dvd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom143a6c2ha8xph3jahf3a9lph3k7nvxuhlnsfz3a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1chqz57mkzqz7qvek5rcenj6g9qgffvyukxg7j6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1t5xd44t7rk84cy6mphmmf9eeseldh6ge4fwq0k\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dg9aclr3e5xzted96yzfg96grzdgzchqunwruj\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1adeaheeve3za2fh7ypssmvr9fdnyq9s6nzu5g9\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qvw6mrlfe6lx27evhz559c448rprs7rdvs08pz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g5e7m34cg4n60n35hxcfepsjyehl3f8xuhvzw2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1987c2gvyzh7x2d0dwz3l4uxnl97zc0smehlym8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1dcju0hfw8syxc70m82nytcpnjc9hp2ldal9pr4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1l0r0q95nppp24k3ernc3gp0lm3s2fzq8g0lcgd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ca9zx2x6d38h9nnrrx3f5uugrr44dpcn87q9vx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fju5vmy8gl6dv80ndwln2nm99fff9qepgvjtv2\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1xmgmnrt7dkpjd3x2xzpauyr4f4y34n4v288gzq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1efd98yvgr7wt8wyg272msdn780nm5gdmjv6h99\n", + "\tamount: 1boot\n", + "\trecipient: bostrom13zqprss3zwxx24yyqmzgzxtpvwce4uyzs32gvk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12s3s22hgm49scdmf3dusupst3ws8el4aqzd60a\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1spxqlxa4hazrmw8eml73tvr3q93pr0p8w4zerd\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1q4qvf04mc4cljwfuwpuqvylecee66uyj3sqjaq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10vs43msr0efyl39g6as402feff4sscpvp359jg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1clrxhye4xmzct4vu54z5tmj7hjzdwwqyywd8y6\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1w325awgqudm76ahp7j5jpaz7z84028ecd8gzx0\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1huyqumkwhzv4n8f6tsjmhauzlszgg7uef5kdqf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y56nprd8zyywlhwwpsahztc5jnkz5627t8xrnx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1y78zkp53r3sf02wsfe8kyq7tak7qsue6pql6jm\n", + "\tamount: 1boot\n", + "\trecipient: bostrom10q7exsr0dzgv4hnkdzhw5hvyrckgm97gax9qln\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1nardxv0pjlp0nvmydhqhde7emm5jxltavt6dzz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1p8y2sps6w7kuf7kuclv3v39h07pgcl9dj29euw\n", + "\tamount: 1boot\n", + "\trecipient: bostrom178y9dwu0p47ay4t63yww30en3utjmakqklexgn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1g3ah2xml2y8eynhgque9mz5t9qq34xnhrc2my7\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qtsg0dhhpfe6f5sk0tls4c2zwgz4ujfsr73xdp\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1k4qmukcla9knjf9n29n6qgqkac7h8qne87l8zg\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1v9z6n026dmnc2ctqcsspz4kwufsa7dld2tvzjx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom12847mmxmlmuddpsc6wmgfnxxwex0utfuuqawxl\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1zt02s4rs0479tzan0qatrnvls5mjdca272xys3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qft23zm56lu3zdfuu0r0qf0fm2wdy5mm6ukljq\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1mjr6epmyyujrljsdvmd3qw0dp3p6eksrmsj5yz\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1va3elpg65m28zkdrchjfj5062h47lwne9dhhp8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1qhpvuqpcfj8rxeymcw9h8gdjjtff0xnkacdks5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1fnusxvrj8jhp6rsdtm8jmaqf7jlnww8lkyv0pc\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1yyda5j9ev0zz5njudcs3r8g8ura0jkprpc9uje\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1wdt29zs3527gh0mxts96m96j8cympjztqz8ru3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1kt8r9kmu05vnzm26hqncrnjpm094w2yh99c3er\n", + "\tamount: 1boot\n", + "\trecipient: bostrom14ga6rceps3ejswu4cz8wtlm6mcp9yxam2qe5fn\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h2utv7hp598xudqjv929w0g4kth03xz075khy5\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1z8heqhlrqmn80u0ju9gc2lxtcpy7uq8mms5y3y\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1crzv05xnlxy84nffvcsp099rkct5zwfekk0shk\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1r30pps2fzvsl0ck6hsjyzu2cp4wtynqgdfdu2f\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1a9rajzyp5aexjpmhckq3jtyl9z7um9kgxasvpa\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ful647460rx6fxs2kyew9hpkh9hjpylmv7dag3\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ps7kmqt2694kgh7pdewylc3h0fc6k8l6cql6g8\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1f69cqhrv00d43fh3rtlj895j9ergmg4pvwg0ar\n", + "\tamount: 1boot\n", + "\trecipient: bostrom18umer23xkrg5t4tqwnlavtt4626ehck3ppq989\n", + "\tamount: 1boot\n", + "\trecipient: bostrom17ffah5kepfy3d43an6f2qc0vtj9j4ke49dxvpf\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1tznl2qgcquhcn82ynfrg7p53pkaxv6umlnc0v4\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1h60ms8een5mh78rcr39d6xjpsu9xpzc3mvzrtx\n", + "\tamount: 1boot\n", + "\trecipient: bostrom1ayl920un8mv2a7tk6mxmhm6hhyr6lkt5rnc0mq\n", + "\tamount: 1boot\n", + "Gas used: 14,888,929\n", + "Tx hash: 4FCC5FF4226E7E51306233AC8A91B4B6926353397738E5C5A3376A316C5D23C1\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(contract_execution_json=send_output[0])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Create Passports, Proof Addresses and Claim Gift" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 23, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of tasks: 200,000\n", + "Number of threads: 100:>,\n" + ] + }, + { + "data": { + "text/plain": " 0%| | 0/192000 [00:00\\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60934 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 61001 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60984 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60950 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60973 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60931 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60981 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 61012 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60983 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60980 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60951 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60935 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60948 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60996 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60933 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60971 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60955 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60978 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60972 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60982 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60969 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199444 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199436 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199136 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b\"Error: Cannot connect to host lcd.space-pussy-1.cybernode.ai:443 ssl:default [Connect call failed ('116.203.5.149', 443)]\\n\\n\"\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199415 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199451 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199434 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199472 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 175, in execute_contract\\n _tx = _wallet.create_and_sign_tx(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 123, in create_and_sign_tx\\n res = self.account_number_and_sequence()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 84, in account_number_and_sequence\\n res = self.lcd.auth.account_info(self.key.acc_address)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/auth.py\", line 23, in account_info\\n result = await self._c._get(f\"/cosmos/auth/v1beta1/accounts/{address}\")\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 328, in _get\\n result = await super()._get(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 120, in _get\\n async with self.session.get(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199433 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 175, in execute_contract\\n _tx = _wallet.create_and_sign_tx(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 123, in create_and_sign_tx\\n res = self.account_number_and_sequence()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 84, in account_number_and_sequence\\n res = self.lcd.auth.account_info(self.key.acc_address)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/auth.py\", line 23, in account_info\\n result = await self._c._get(f\"/cosmos/auth/v1beta1/accounts/{address}\")\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 328, in _get\\n result = await super()._get(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 120, in _get\\n async with self.session.get(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199430 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199456 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199468 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199492 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199460 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199435 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199408 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199491 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199489 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199490 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199134 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b\"Error: Cannot connect to host lcd.space-pussy-1.cybernode.ai:443 ssl:default [Connect call failed ('116.203.5.149', 443)]\\n\\n\"\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199476 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199454 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199458 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199463 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199449 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199488 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", + "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", + "\n" + ] + } + ], + "source": [ + "def execute_participation(row_index: int) -> bool:\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address}')\n", + " if _output:\n", + " return _output\n", + " else:\n", + " return _error\n", + "\n", + "NUMBER_OF_THREADS = 100\n", + "\n", + "tasks = list(range(NUMBER_OF_ACTIVATED_PARTICIPANTS))\n", + "print(f'Number of tasks: {len(tasks):>,}')\n", + "print(f'Number of threads: {NUMBER_OF_THREADS:>,}')\n", + "\n", + "\n", + "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res_participation = list(tqdm(pool.imap(execute_participation, tasks), total=len(tasks)))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 41, + "outputs": [], + "source": [ + "with open('temp/contract_participation_execution_log_10000.txt', 'r') as f:\n", + " data = json.load(f)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 42, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", "text": [ "\n", "Events\n", "\n", - "cyberlinks\n", - "\tNickname -> Cosmos Address\n", - "\tCosmos Address -> Nickname\n", - "\tneuron: Proof Subgraph Contract\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", + "\n", + "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Name Subgraph Contract\n", + "\treply contract: Avatar Subgraph Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: mint\n", + "\tminter: Passport Contract\n", + "\towner: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", + "\ttoken_id: 319041\n", + "Gas used: 342,370\n", + "Tx hash: FE9B54C9E5C895D9353312B8BBF0CE012D7757B10F28CD3899EEDADDDEBCCBD9\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['create'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 43, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Proof Subgraph Contract\n", + "\n", + "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Proof Subgraph Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: proof_address\n", + "\tnickname: john16521126159991\n", + "\taddress: 0xdc431e04a2ce31e90bfbd6382d81b14ee8cb4059\n", + "Gas used: 237,523\n", + "Tx hash: 8156E96D4BB51547B7C0E5ED5917129E52323AAD4C7653A86F02D3F18C662F89\n" + ] + } + ], + "source": [ + "contract_utils.parse_contract_execution_json(data['proof_ethereum'], row=claims_with_proofs_df.loc[1,:])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 44, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ "\n", + "Events\n", "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Proof Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16517597490\n", - "\taddress: terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9\n", - "Gas used: 285,198\n", - "Tx hash: 6F48F5C93D32EF5C3F0CA1A494D34198BF55E9CA6BE5957EAC32071325591BFA\n" + "\tnickname: john16521126159991\n", + "\taddress: osmo136zz7jck89ug4r0g9wxdnp97h26ul6xyny7nnl\n", + "Gas used: 240,855\n", + "Tx hash: 555AFEB1DC5F13D78678BAA8FF4C508B7404888D2FB5F62702B561D15BD1F7BC\n" ] } ], @@ -2630,7 +7864,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 45, "outputs": [ { "name": "stdout", @@ -2638,9 +7872,37 @@ "text": [ "\n", "Events\n", - "account sequence mismatch, expected 5, got 4: incorrect account sequence\n", - "Gas used: 67,733\n", - "Tx hash: 6EB9BA76D0C7C235D2D249C8347E6603449ABE65E657C2FA1506EA1EFBE06F4A\n" + "\n", + "coin received\n", + "\treceiver: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", + "\tamount: 100000boot\n", + "\n", + "coin spent\n", + "\tspender: Treasury Contract\n", + "\tamount: 100000boot\n", + "\n", + "execute\n", + "\texecute contract: Gift Contract\n", + "\texecute contract: Treasury Contract\n", + "\n", + "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "transfer\n", + "\trecipient: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", + "\tsender: Treasury Contract\n", + "\tamount: 100000boot\n", + "\n", + "wasm\n", + "\t_contract_address: Gift Contract\n", + "\taction: claim\n", + "\toriginal: osmo136zz7jck89ug4r0g9wxdnp97h26ul6xyny7nnl\n", + "\ttarget: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", + "\tamount: 301,969\n", + "\t_contract_address: Treasury Contract\n", + "\taction: execute\n", + "\towner: Gift Contract\n", + "Gas used: 401,953\n", + "Tx hash: ECEB867CA0374AF777B5333384F4EA26FC6EBA13C6B557B7D808E442C84BF983\n" ] } ], @@ -2668,23 +7930,23 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 29, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 100000\n", + "Number of tasks: 200000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/100000 [00:00,}')\n", + "print(f'Number of threads: {NUMBER_OF_THREADS:>,}')\n", "\n", "\n", "with Pool(processes=NUMBER_OF_THREADS) as pool:\n", @@ -2719,7 +7981,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 30, "outputs": [], "source": [ "with open('temp/contract_release_execution_log_1.txt', 'r') as f:\n", @@ -2734,7 +7996,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 31, "outputs": [ { "name": "stdout", @@ -2744,36 +8006,36 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", - "\tamount: 32891boot\n", + "\treceiver: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", + "\tamount: 22496boot\n", "\n", "coin spent\n", "\tspender: Treasury Contract\n", - "\tamount: 32891boot\n", + "\tamount: 22496boot\n", "\n", "execute\n", "\texecute contract: Gift Contract\n", "\texecute contract: Treasury Contract\n", "\n", - "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", + "\trecipient: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", "\tsender: Treasury Contract\n", - "\tamount: 32891boot\n", + "\tamount: 22496boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", - "\tgift_address: 0xb13349fc01611fb3d5eaa220ce20d7935503bfdb\n", + "\taddress: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", + "\tgift_address: 0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da\n", "\tstage: 9\n", - "\tamount: 32,891\n", + "\tamount: 22,496\n", "\t_contract_address: Treasury Contract\n", "\taction: execute\n", "\towner: Gift Contract\n", - "Gas used: 230,190\n", - "Tx hash: 355BBB42ADA98FDA99AFF40DB58DA406E8590AFC915A1FF3708251A4BE125C23\n" + "Gas used: 230,533\n", + "Tx hash: DC96F11362215BCA80C34CBD0597124C6AAD7836D0D631183773B4BBC75BA68E\n" ] } ], @@ -2789,7 +8051,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 32, "outputs": [ { "name": "stdout", @@ -2799,36 +8061,36 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", - "\tamount: 32871boot\n", + "\treceiver: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", + "\tamount: 22491boot\n", "\n", "coin spent\n", "\tspender: Treasury Contract\n", - "\tamount: 32871boot\n", + "\tamount: 22491boot\n", "\n", "execute\n", "\texecute contract: Gift Contract\n", "\texecute contract: Treasury Contract\n", "\n", - "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", + "\trecipient: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", "\tsender: Treasury Contract\n", - "\tamount: 32871boot\n", + "\tamount: 22491boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", - "\tgift_address: terra16jeqp7f4s97g0rkq3wqdwwr34ntn2f5055u8e9\n", + "\taddress: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", + "\tgift_address: cosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409\n", "\tstage: 9\n", - "\tamount: 32,871\n", + "\tamount: 22,491\n", "\t_contract_address: Treasury Contract\n", "\taction: execute\n", "\towner: Gift Contract\n", - "Gas used: 230,374\n", - "Tx hash: B188F92030CBACDBC26E230438BFC22A92E1CB2260C47B9345E9CFCAF0B8F9F7\n" + "Gas used: 230,778\n", + "Tx hash: 3764AA0D04C112D0ABFE8582AD36190CEA618ECC972091E267114DE9E1614D2F\n" ] } ], @@ -2857,7 +8119,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 33, "outputs": [], "source": [ "def get_passport_id(bostrom_address: str) -> str:\n", @@ -2873,7 +8135,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 34, "outputs": [ { "data": { @@ -2881,7 +8143,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "f89bd54752e44881bbb742bac1cb2b09" + "model_id": "dd29026653bb47fb83a5687dac099563" } }, "metadata": {}, @@ -2899,25 +8161,26 @@ "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", "\tneuron: Name Subgraph Contract\n", "\n", + "\tNickname -> Avatar\n", + "\tAvatar -> Nickname\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Avatar Subgraph Contract\n", + "message from bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom16jeqp7f4s97g0rkq3wqdwwr34ntn2f503rj59z\n", + "\tsender: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 17\n", - "Gas used: 387,001\n", - "Tx hash: D7FA27D76C9FB6DF503623AD064BEC9E1F79B83036CB56053F855922E12D36B8\n" + "\ttoken_id: 309120\n", + "Gas used: 424,079\n", + "Tx hash: FAD94B4EE42D8BE78DC4391CB7D062DF281A2527F123700BED9294A61A97C90E\n" ] } ], @@ -2956,7 +8219,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 35, "outputs": [ { "data": { @@ -2964,7 +8227,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "3b9ed9d0b552433c858904b63901ffa2" + "model_id": "6ada9012e6d745bdbc8dd5a789aa5b9e" } }, "metadata": {}, @@ -2992,15 +8255,15 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom1uxa2sxtv7npaj6863fez5ccv2qfwszf2w7wga5\n", - "\ttoken_id: 101\n", - "Gas used: 392,366\n", - "Tx hash: FB209489737B8CDBB7E642C6ACC55EE894053A2A799F3C5C247050E73267AEEA\n" + "\tsender: bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7\n", + "\ttoken_id: 309055\n", + "Gas used: 382,926\n", + "Tx hash: 1F7865D1A3241500C9D65B9C916C2F74C08692063D055FFD709545CEDB5E8F62\n" ] } ], @@ -3055,7 +8318,7 @@ "\n", "### Add tests for subgraph contract\n", "#### update_owner\n", - "#### update_executer +\n" + "#### update_executer +" ], "metadata": { "collapsed": false, @@ -3063,6 +8326,18 @@ "name": "#%% md\n" } } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } } ], "metadata": { From 7e70a60036975746b6d78c9879facc94955f8752 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Thu, 12 May 2022 13:37:30 +0800 Subject: [PATCH 47/69] - add `update_name`, `update_avatar` and `remove_address` Passport contract functions --- .../generate_test_data/contract_utils.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 955594e..24741c1 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -238,6 +238,30 @@ def burn_passport(self, claim_row: pd.Series, token_id: str, display_data: bool gas=400000, display_data=display_data) + def update_name(self, claim_row: pd.Series, new_nickname: str, display_data: bool = False): + return self.execute_contract( + execute_msg={'update_name': {'new_nickname': new_nickname, 'old_nickname': claim_row['nickname']}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=500000, + display_data=display_data) + + def update_avatar(self, claim_row: pd.Series, new_avatar: str, display_data: bool = False): + return self.execute_contract( + execute_msg={'update_avatar': {'new_avatar': new_avatar, 'nickname': claim_row['nickname']}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=500000, + display_data=display_data) + + def remove_address(self, claim_row: pd.Series, removed_address: str, display_data: bool = False): + return self.execute_contract( + execute_msg={'remove_address': {'address': removed_address, 'nickname': claim_row['nickname']}}, + contract_address=self.name_dict['Passport Contract'], + mnemonic=claim_row['cosmos_seed'], + gas=500000, + display_data=display_data) + def get_contract_name(self, contract_address: str) -> str: try: return self.address_dict[contract_address] From 5e6117cebc487c5f4caf70cc6bf34e8d3161bd3d Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Fri, 13 May 2022 20:44:34 +0800 Subject: [PATCH 48/69] - Add tests for update names, avatars and remove proofed addresses --- ..._and_passport_contracts_load_testing.ipynb | 8308 ++--------------- 1 file changed, 860 insertions(+), 7448 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index 92cb183..e515050 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -31,7 +31,7 @@ "from eth_account.messages import encode_defunct\n", "import json\n", "import random\n", - "from time import time\n", + "from time import time, sleep\n", "import ipfshttpclient\n", "from tqdm.notebook import tqdm\n", "from base64 import b64encode\n", @@ -45,12 +45,12 @@ "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 2_000_000\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 200_000\n", - "INITIAL_BALANCE = str(110_000_000_000)\n", + "NUMBER_OF_PARTICIPANTS = 100\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 20\n", + "INITIAL_BALANCE = str(110_000_000)\n", "COEF_UP = str(13)\n", "COEF_DOWN = str(7)\n", - "TARGET_CLAIM = str(100_000)\n", + "TARGET_CLAIM = str(2)\n", "CLAIM_AMOUNT_LIST = [int(round(20_000 * random.random(), -3)) + 20_000 for _ in range(NUMBER_OF_PARTICIPANTS)]\n", "\n", "NUMBER_OF_THREADS = 100\n", @@ -115,17 +115,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 2000000\n", + "Number of tasks: 100\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/2000000 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
028000john16521126150QmZ6SJnBFk2b53Gt2ektwsp7ECWP6km2i27UoKybR1q4GX0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d0xd7190e045f87b1287efa6ef1198ebbeecf2e9ba95d63...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3lcosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0chead maximum daring merit shoulder toast bone ...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l...0x55a59e770124f8a240a6dfe4199167093f32f8c06c93...{'pub_key': 'A3DPjRBjtIHuj+EleMfBftzEf+Uotgj6s...eyJwdWJfa2V5IjoiQTNEUGpSQmp0SUh1aitFbGVNZkJmdH...
125000john16521126151QmYmXFtpG48H5E12zTVs1Le979cQgB6QT8KBdx6t1Wf7ms0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da0xbf32cafd205fde13b5add27e899e6c36e75a85473b6c...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3zcosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409title oval ten able delay target tag orphan go...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z...0xb13e85182b680b7c10a21eac40f6d17a5eb50835b7b0...{'pub_key': 'A1lHzZScCEr+Hi1QGv/M0qxxjl4B/YEP8...eyJwdWJfa2V5IjoiQTFsSHpaU2NDRXIrSGkxUUd2L00wcX...
231000john16521126152QmZDhn45Tup8GnUd4LQHfCtF2Hf9frxXHJ5k7Gm4XK6R2J0x802e5043a53b8833353bd97e9be85359d05fa5a10x5afaa05bffed2385e03a80dd25dd84215c8ee846cbb0...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2tpeanut thing retreat tool pattern limb pet tub...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7...0x3e97255fd5e618a226fbfbd1eb4720447a24e036f054...{'pub_key': 'A8bfcVcw0FBGkuWqFiLv8GzPnohSt2zPT...eyJwdWJfa2V5IjoiQThiZmNWY3cwRkJHa3VXcUZpTHY4R3...
340000john16521126153QmaauStuBTuHUKDveQ5dHsBC4Fo7SZFsgGecXsbwXcoyAh0x3b1cf67d050e257a1a05eb17f3c346e131cf38950x28876dc39babed2bbf212786b3f8adc08195ac967f92...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyevcosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8traise cruise fancy text enrich tower anxiety s...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev...0x0cf6b34983d62ad2a3443da27515c232da5c4ed19c41...{'pub_key': 'AsglEaBaS1Y7UAel9r7T0jPhrEeXfAdI/...eyJwdWJfa2V5IjoiQXNnbEVhQmFTMVk3VUFlbDlyN1Qwal...
433000john16521126154QmSAUL7hfidipezWxBG9RqCwZaCxmrkQQyHzeqnGQ6zRJv0x107481469e6faf29cafc4f7a13265962b83e46670x2cf4bf87498e6591a96e2e47fc9035ffba8c86179db6...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27pseed rebuild sick drive conduct junior soap ca...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5...0x9c4ee685f2c1a0acfd1c758eee4397492d69037a5642...{'pub_key': 'A9BSJkUEagjdxipS01BCl00tCidT4yJWA...eyJwdWJfa2V5IjoiQTlCU0prVUVhZ2pkeGlwUzAxQkNsMD...
\n" + "text/plain": " amount nickname avatar \\\n0 39000 john16524446570 QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G73 \n1 22000 john16524446571 QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY \n2 28000 john16524446572 QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw \n3 27000 john16524446573 QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe \n4 37000 john16524446574 QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh2 \n\n ethereum_address \\\n0 0x77733286f58e09dd27229a4c43aa8c589c055b09 \n1 0x38c94ad36f6d99affde350f6d458dd851be95c88 \n2 0xafcfc121796b6c1ee89e432a15793f2efa7e130c \n3 0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa \n4 0xeabaee4f86d50c6fbb4f5925e649c864d684d6cc \n\n ethereum_private_key \\\n0 0xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c... \n1 0x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484... \n2 0x7a6ae4502055818a38cb4f19103f77f65036904ff609... \n3 0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a... \n4 0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90... \n\n bostrom_address \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4 \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4 \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv \n\n cosmos_address \\\n0 cosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latp \n1 cosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63t \n2 cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sj \n3 cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjj \n4 osmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3le \n\n cosmos_seed \\\n0 fiber awkward industry race design bird transf... \n1 wink box during grief liquid maid faint donate... \n2 half famous helmet oil expand gold barely stor... \n3 hold predict empower display clog panic entire... \n4 strong air mosquito police behind pear warfare... \n\n message \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x... \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v... \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4... \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4... \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv... \n\n ethereum_message_signature \\\n0 0x30d7ee1f90e75cbb42180b675658190f7afce4846157... \n1 0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd... \n2 0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f... \n3 0x5e7608320377526131ef41a46c4a71c6e5df98d874e3... \n4 0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K... \n1 {'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/... \n2 {'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe... \n3 {'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3... \n4 {'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU... \n1 eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn... \n2 eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0... \n3 eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE... \n4 eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
039000john16524446570QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G730x77733286f58e09dd27229a4c43aa8c589c055b090xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4xcosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latpfiber awkward industry race design bird transf...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x...0x30d7ee1f90e75cbb42180b675658190f7afce4846157...{'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K...eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU...
122000john16524446571QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY0x38c94ad36f6d99affde350f6d458dd851be95c880x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0vcosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63twink box during grief liquid maid faint donate...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v...0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd...{'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/...eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn...
228000john16524446572QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw0xafcfc121796b6c1ee89e432a15793f2efa7e130c0x7a6ae4502055818a38cb4f19103f77f65036904ff609...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sjhalf famous helmet oil expand gold barely stor...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4...0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f...{'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe...eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0...
327000john16524446573QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjjhold predict empower display clog panic entire...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4...0x5e7608320377526131ef41a46c4a71c6e5df98d874e3...{'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3...eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE...
437000john16524446574QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh20xeabaee4f86d50c6fbb4f5925e649c864d684d6cc0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhvosmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3lestrong air mosquito police behind pear warfare...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv...0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec...{'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp...eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3...
\n
" }, "execution_count": 2, "metadata": {}, @@ -247,17 +247,60 @@ "cell_type": "code", "execution_count": 4, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of addresses: 200\n", + "Number of activated participants: 20\n", + "Number of threads: 30\n", + "Bash size: 2,000\n", + "Number of tasks: 1\n" + ] + }, { "data": { - "text/plain": "[{'address': '0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d', 'amount': '28000'},\n {'address': 'cosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0c',\n 'amount': '28000'},\n {'address': '0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da', 'amount': '25000'},\n {'address': 'cosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409',\n 'amount': '25000'},\n {'address': '0x802e5043a53b8833353bd97e9be85359d05fa5a1', 'amount': '31000'},\n {'address': 'osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2t', 'amount': '31000'},\n {'address': '0x3b1cf67d050e257a1a05eb17f3c346e131cf3895', 'amount': '40000'},\n {'address': 'cosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8t',\n 'amount': '40000'},\n {'address': '0x107481469e6faf29cafc4f7a13265962b83e4667', 'amount': '33000'},\n {'address': 'osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27p', 'amount': '33000'},\n {'address': '0x02de46973caa7617965aed6a94dd105d5d2143b8', 'amount': '37000'},\n {'address': 'osmo108l2v6y2cqhtezff5fnytrkuuf2wyhxr3pg7kv', 'amount': '37000'},\n {'address': '0x723e0d8428401fd69df8d083798c127b3f2b6bfd', 'amount': '31000'},\n {'address': 'terra1jg7raggv8lmmg5f3z9s8jnwarz36t4e7nzs55y',\n 'amount': '31000'},\n {'address': '0x2bf22ce7dd4ae60055e6bfd83a040676dd9449e7', 'amount': '34000'},\n {'address': 'terra12cqstlmdtmcs8xt9fpzk5z0y2wpe69kr5ztx99',\n 'amount': '34000'},\n {'address': '0xaf7357a9b622d7c988a8ebd60642205593484dea', 'amount': '33000'},\n {'address': 'terra1ers3rza08vpkpe0c2alzfsla24qqe4egxdwq88',\n 'amount': '33000'},\n {'address': '0x1ce9aab78a4d15eac9d4264fe116ce31bfb4b6e8', 'amount': '35000'},\n {'address': 'cosmos1urllwdtekqk497hslza5ss2a8uefay8j2xc6mt',\n 'amount': '35000'},\n {'address': '0xcb78ba5aa86f0b79b34be9008c8515a3c24e28ed', 'amount': '39000'},\n {'address': 'cosmos1rwssvf6x9dk399gu8na9xx6wz4t0h9ezjk8al0',\n 'amount': '39000'},\n {'address': '0xea7e3753cfc2ac98d952dbc494fecc1c2b94138b', 'amount': '31000'},\n {'address': 'cosmos1ym0rlf63p4sjy8qwv6ypnc6apw4stnnl5ncnx5',\n 'amount': '31000'},\n {'address': '0x299698eac24d058e469580043d641721e1626bc8', 'amount': '37000'},\n {'address': 'osmo1eajyse3nhlv8g5hutdz8qz3v8ef6m7kskp97nf', 'amount': '37000'},\n {'address': '0xb8ba42056f46f3d2f57fd112124eab3bf3ed6c9f', 'amount': '25000'},\n {'address': 'cosmos1tw4zara55m3t9f0jfmeldh83m6f90px2c0hdyj',\n 'amount': '25000'},\n {'address': '0xb6dd0f00c58c41010ccecebf7e85be8ade316b84', 'amount': '39000'},\n {'address': 'terra1ml0zry8k84w7fujs2gr9kaxhw24sflgkwzkqfs',\n 'amount': '39000'},\n {'address': '0x8e4955d181428e8049cdfb51ef6619520952e4a9', 'amount': '40000'},\n {'address': 'osmo1w9ppmfffrl3ywra6m22nez20843my7e7xkmygm', 'amount': '40000'},\n {'address': '0xd386d402803b3d30a1fe91ab12bf4ecf36fafada', 'amount': '38000'},\n {'address': 'osmo1f6m06mxg6z8pkjwy4m55l7q22a8hu3m5420h4l', 'amount': '38000'},\n {'address': '0x2bac0e44f0b304afd7559f47a76ba7e507e5cb72', 'amount': '29000'},\n {'address': 'terra155u8hrc9x7hfqx8tp7qfyavnw8z2uj2acz8x69',\n 'amount': '29000'},\n {'address': '0x861ea6f9ab29ce0624ae6cee3c4d58793676f8e4', 'amount': '32000'},\n {'address': 'terra1wgudpmkpa4ptevxp7mdnz46ngvtj547sll69zk',\n 'amount': '32000'},\n {'address': '0xcba7f88b74d6495932e7009809d35033ef34abaa', 'amount': '39000'},\n {'address': 'osmo19w6805p95y75zztsuhndtful6shzm5f8qe6vd5', 'amount': '39000'},\n {'address': '0x4594e1719f51353415b71c144b082e67d2de4619', 'amount': '36000'},\n {'address': 'osmo1lr3h5wq0d50t35nweyw0c9cezz502e9pw365a3', 'amount': '36000'},\n {'address': '0x060f8da021c1258c66fc4883760360dbf9331100', 'amount': '38000'},\n {'address': 'osmo1efwnvr73gj46al5d623l3vjewwj33sjhxrasus', 'amount': '38000'},\n {'address': '0x0660bd6701348029b9d9aec04dd19817809e71a2', 'amount': '39000'},\n {'address': 'terra1q8pw9tw50ac2teugutjpsaxtgkzyha3qv325xp',\n 'amount': '39000'},\n {'address': '0x4db4d263d9f4f9a13a1f8898fa192f5103fe47be', 'amount': '39000'},\n {'address': 'osmo1lpkuy0ycz7hcsyqsf6uyz63veenzgqglmqcuky', 'amount': '39000'},\n {'address': '0xe02147f2179be1e84875f7ec373ff46cfc150a3a', 'amount': '31000'},\n {'address': 'osmo14rzpmcyqgyssn3zpqpn23a6alqz7phxjc2lhjs', 'amount': '31000'},\n {'address': '0x4207c0165a56f01c19424ec9197cc8cf4c564854', 'amount': '23000'},\n {'address': 'terra1m8tswj7jekj69m4e3m2axv2q6sq6fp6xyacyk2',\n 'amount': '23000'},\n {'address': '0xb9ea27bb2418d9d55316d6074c322aa4a578d117', 'amount': '22000'},\n {'address': 'cosmos16sm0lwpvc7z3kuu4tzy2nxl29dy7jhet2lt0hl',\n 'amount': '22000'},\n {'address': '0xa61df7d7f1278ee1c43613bd5296479782241860', 'amount': '25000'},\n {'address': 'terra13jzajd0xr9r3wp7q06cf6j30nrlyy9pjtmp5du',\n 'amount': '25000'},\n {'address': '0x5288ec5c18d1b5ebd3cf1826a405f2c8103ec43f', 'amount': '23000'},\n {'address': 'cosmos1phjvdeyl3vk6ep3nstel42sps23zn8e5sfvpvn',\n 'amount': '23000'},\n {'address': '0x6e81adf77129c32255a9ea4073feebe5ea5e53bc', 'amount': '27000'},\n {'address': 'osmo1f6g4cg0wsvtkmx9q72f666300cvr9yrcr55ggu', 'amount': '27000'},\n {'address': '0x826354e61e6b81ba8d7fead90bf5608c0a440c7f', 'amount': '32000'},\n {'address': 'osmo13449jard8dccu0vgr48gy0dpzl8mdxrpfg9rva', 'amount': '32000'},\n {'address': '0x9ec5ce6aec17213caf2ecd0f876c77ff67e3fdf4', 'amount': '25000'},\n {'address': 'cosmos1mqgd7je05jwgqece6p36z6l3x9ueyjhu8dmrdr',\n 'amount': '25000'},\n {'address': '0xd646b7d45873cdfd65660f72e161ecb8f1a6d325', 'amount': '21000'},\n {'address': 'osmo1kdxlnp5fn84cqsesewtajsta59w79qs4ws4xec', 'amount': '21000'},\n {'address': '0x0318c1306c896ad94fb6d81a44dcfbe757d94691', 'amount': '21000'},\n {'address': 'terra1jpjj3z6d3fvjc43pup4y8ta68tsv6z9v2uqzyc',\n 'amount': '21000'},\n {'address': '0x913df70bb70ca640b01df5da2d33c1275a293df5', 'amount': '26000'},\n {'address': 'cosmos10ecp706266r4tcrpslc28kjvy53ks5hts5fq3p',\n 'amount': '26000'},\n {'address': '0x461907bdcd9d5c0749b66c35f8ed134aa56740e7', 'amount': '25000'},\n {'address': 'terra18ejzpukf6wlapd6zyqdk6yzukxg7j2adu57tgk',\n 'amount': '25000'},\n {'address': '0xc46644ab656e4069d45bdf67198de42ec29556dc', 'amount': '32000'},\n {'address': 'terra1ymrzvsznuj4r62q500l76egccx92r8s2egwdrl',\n 'amount': '32000'},\n {'address': '0xc6114fe87db2a809f066d3c1da855da15d7c56a6', 'amount': '22000'},\n {'address': 'terra1mzfzk677truyz0j928dyqecjappdp877prj64d',\n 'amount': '22000'},\n {'address': '0x583d63453534ef07cc38659e6e9a63cad9f06f6c', 'amount': '32000'},\n {'address': 'osmo1mhptlcm09lgxj3t66u0lp8p20srqp2pcgtm79q', 'amount': '32000'},\n {'address': '0x0fc3877e4c37f3d8de189e250fb42b76ea2303ca', 'amount': '21000'},\n {'address': 'osmo1accapdtrjuym4exud32lr8p4nlggjwjtksuud4', 'amount': '21000'},\n {'address': '0xf4db998b81891051e7c619001a74b3391dde636f', 'amount': '29000'},\n {'address': 'osmo1ra7h6pu6mg9vhnkuc7e26ypn84z568trkq8zaw', 'amount': '29000'},\n {'address': '0x2ea4faf3c867a64813cf050eb2cdce47fce31b32', 'amount': '29000'},\n {'address': 'cosmos1f7pydzlswt9uu0yykcckm3m29pcdzgfneqt2fh',\n 'amount': '29000'},\n {'address': '0x1e849a9ee445820b228f5c393fe6bd5dc93a33f1', 'amount': '33000'},\n {'address': 'terra16p8qw5eanjdwuszvw3t7f5ka27s0qffm7fdh5f',\n 'amount': '33000'},\n {'address': '0x183047d621e4028eba3138d719bf16b71fb754b1', 'amount': '22000'},\n {'address': 'osmo1wg5qm2u5nemqqd4j3rtrprxes9a0u4nln3h9hv', 'amount': '22000'},\n {'address': '0x009d88c5e7dd480c2e4e1555b1ab121bae0c8475', 'amount': '32000'},\n {'address': 'cosmos1sfz8gzam2nc80ua543s3lec29pl8atlzx382mw',\n 'amount': '32000'},\n {'address': '0x14c765516efb896384c952e6c8700d34688c4bdb', 'amount': '39000'},\n {'address': 'osmo1ynen3ajmfc26dt0k9evsmrpv6rshj7c734hk7w', 'amount': '39000'},\n {'address': '0x8a523afceb4d0707fdba84d216d8f5762ae329a0', 'amount': '39000'},\n {'address': 'terra1m8v83glefkac9fzpxtkprs3ul6pm36j7cjdea2',\n 'amount': '39000'},\n {'address': '0x807c060b667cba58b0a5c6cb8590a1aaf6a9aada', 'amount': '40000'},\n {'address': 'osmo1t49ufdja5dvglcszkryev7z0t4urplrjdpfpwl', 'amount': '40000'},\n {'address': '0xa876890d6c3e060dbc694253de698c1cae44757b', 'amount': '29000'},\n {'address': 'osmo196jfz7njjztrpzelcqyy6gl08ewwqs36rlu6wv', 'amount': '29000'},\n {'address': '0xdf05dd6371f5f1af733043df0bffdd0dd10abaaa', 'amount': '20000'},\n {'address': 'cosmos1mhhfpd6lszxl5aevl7lulv5rcd20cv4hyg4sk2',\n 'amount': '20000'},\n {'address': '0x96c93551a50c3a5684adf09db51666a91a5f1773', 'amount': '21000'},\n {'address': 'cosmos1s2pxnh2wj3cauh28rvhusfnpdluwqplj498dkg',\n 'amount': '21000'},\n {'address': '0xb68d531585c4838697032bfca490ad1978903d21', 'amount': '21000'},\n {'address': 'terra1hjrcqtpudf0r4dvq0vclcdkmdkwammmjxethuh',\n 'amount': '21000'},\n {'address': '0x1d56199fc52c909c64318ee8c5a2701e2af150ca', 'amount': '21000'},\n {'address': 'osmo16rd58u8fj38wuhk7v6kmedafgn2qveqzxa0axk', 'amount': '21000'},\n {'address': '0xc8db653585c6e5ff1dfdf6f3691f215ebf15757c', 'amount': '36000'},\n {'address': 'terra1hx7h822fe6nlc259gqdc3hzqq3m0xmhe0cuzp6',\n 'amount': '36000'},\n {'address': '0x51324f08fc23df9748f76484af1f8055e68a0566', 'amount': '40000'},\n {'address': 'osmo14awfd9hyg8e0nvfx9s8jz28y7styf0qc295f7q', 'amount': '40000'},\n {'address': '0x92869cfe944bbf40d082d68e7a1020a622bffb71', 'amount': '38000'},\n {'address': 'terra1xq64gtq6wrpswq7gg6twdn0qfpnwsmunvuc6lx',\n 'amount': '38000'},\n {'address': '0x035da7feb32372989943e0f7ae83ac6a8552f924', 'amount': '37000'},\n {'address': 'terra1crgk46ncqvdafe9ht8tm9zkhpwex7yfmfl45t7',\n 'amount': '37000'},\n {'address': '0xc351cd1cee9ef1f8f4d9da2fb713b75da1a88d0a', 'amount': '22000'},\n {'address': 'osmo1akyjl3mzuta4n2r47pqtvnanvlr9l6rpyqvnjw', 'amount': '22000'},\n {'address': '0x088423e67a1704fd1cf0362e2b92dbcd12bf8c1d', 'amount': '27000'},\n {'address': 'osmo1yku4y6tu4a0fly4wmuzkxmkctdya5p70c9xgrc', 'amount': '27000'},\n {'address': '0x008e36a4e1c3056650ca7a82b6a713e60e409863', 'amount': '36000'},\n {'address': 'cosmos1w2w7xp2w5f2zflh5zmpkqnsnfvfcfw6ecuepfu',\n 'amount': '36000'},\n {'address': '0xd4cebeef617f26092f49f7e7392ded0005729aaa', 'amount': '34000'},\n {'address': 'terra1jtnfh9ed5uhrxfjzmr6ml3mhaqtm6hlysdcvgf',\n 'amount': '34000'},\n {'address': '0x073656c3734a3cc801ab0969e0630e7240320fc9', 'amount': '35000'},\n {'address': 'cosmos1rxtaaa6r8nuztarr5nwmytn7e2gg87j05ll2w9',\n 'amount': '35000'},\n {'address': '0x2e74412753298a53d43bf881e17731c673ebf9cb', 'amount': '33000'},\n {'address': 'osmo1l5qnqyfc0qyrlaf28j4jfwtam2g5jfeqesjx36', 'amount': '33000'},\n {'address': '0xb6707a64751916d91d96b4ec098979fb6b5bcc6c', 'amount': '29000'},\n {'address': 'cosmos1qp6mm2s62m5c9llm3f6x6w8dye6mewl6dq92ws',\n 'amount': '29000'},\n {'address': '0xcbb0303017b9d9442d1fed074f9c6540fbb43824', 'amount': '34000'},\n {'address': 'osmo1vw09vpk07d84r0yjzt4qf690y0943lfaf0qdt6', 'amount': '34000'},\n {'address': '0xf4e1361d8c05d4a6e448458806096a0828973c5a', 'amount': '32000'},\n {'address': 'cosmos14hngfqt07adjpu7gw7j028h2shhz4cgs7vwsq7',\n 'amount': '32000'},\n {'address': '0x724925e51f46231bf4a1a7bdc4d1121a6578003f', 'amount': '30000'},\n {'address': 'osmo1jhvuhc6ug25m47asv0wjlf5v5tch47kakyttpy', 'amount': '30000'},\n {'address': '0x87187fab6df7a0c7e7986c9a25635aa3cb36bef8', 'amount': '34000'},\n {'address': 'terra1na78h02r9s8jf9ewfgc74c55ll55d24n3plqdr',\n 'amount': '34000'},\n {'address': '0xb7aaefae6924d82a779bb339e7355b9de253e0e6', 'amount': '32000'},\n {'address': 'osmo1m4thcdpptdrgzt96vgpwlz9rr08rfn7lm32kyl', 'amount': '32000'},\n {'address': '0x3483a906d8cfd7a71166426cbb96e7ea35cc8e69', 'amount': '33000'},\n {'address': 'osmo1e7ugdx2zdnjr723ewcnlatzp3aj4903ukk5cv7', 'amount': '33000'},\n {'address': '0xd33f604250031e5b9b71551f48999dda220b6d48', 'amount': '25000'},\n {'address': 'terra1trlwh7zxc9x9wegygmltjfdc7kaw3pdh4js9t5',\n 'amount': '25000'},\n {'address': '0x508b2e0d20cdf5f2e4f61b5b4a14801ee191dbf7', 'amount': '27000'},\n {'address': 'cosmos1up7ahr8e503yd68v7dcz3tdms26lfmyfc6v42s',\n 'amount': '27000'},\n {'address': '0xe49d4fa0409c03b1339ec8d2459ba31ed4687b77', 'amount': '35000'},\n {'address': 'cosmos1qc9l02jzgzenwg22jvp2p8eq8axq3mnx6nl3ky',\n 'amount': '35000'},\n {'address': '0xee567f635de45ea5d83664fc6b5b60f608eb3f2e', 'amount': '28000'},\n {'address': 'terra1rnlucrw7uepqn8752msrgpl9fnt09376n64dc3',\n 'amount': '28000'},\n {'address': '0x3487920ac36ff29e0b1b2c36ac5265a2174a301f', 'amount': '38000'},\n {'address': 'osmo1jhvqpcrv9nkphgn9vefeg8j2sxx3ur2exfd827', 'amount': '38000'},\n {'address': '0x0580996a28583980b50c325672caae99bf24d6dc', 'amount': '31000'},\n {'address': 'osmo15vz5pyfmkxqpr6ef3kqfgfafmdzxl5g270dukt', 'amount': '31000'},\n {'address': '0xc1b9cdd80229d5cafb4fd655d05cdc3e320ec21e', 'amount': '27000'},\n {'address': 'osmo1288t7tczyq5dfsxxhw00j5vdyat6rp6mh9qqp6', 'amount': '27000'},\n {'address': '0x4c1b5c42e5b37d3c5e1263a7ab55601cfff39c41', 'amount': '24000'},\n {'address': 'cosmos1ftktn7ylny42f60xtw7q0ynm7czjggq7lh39e6',\n 'amount': '24000'},\n {'address': '0xaaad99aeaad4f347753178bad6374dfbf78aefe4', 'amount': '25000'},\n {'address': 'terra1jqgdejrgw3gyjhge6h7v7xke0jktacluh3sga3',\n 'amount': '25000'},\n {'address': '0x428a3ec1c520d80efb7fb562a6da70d19e027aed', 'amount': '31000'},\n {'address': 'osmo10pjg3pmgwxxqnrs8sgmy4sfjsuxsnt5nhppn3z', 'amount': '31000'},\n {'address': '0x7010c46022fd28bc49a96f9a77b3ded62f292fb5', 'amount': '40000'},\n {'address': 'osmo1aecs2jxyfcg658wlmm00fkd6hg6l3700y04l5l', 'amount': '40000'},\n {'address': '0x10eaa79156699bb908c5203779e37e3f1a40dd11', 'amount': '40000'},\n {'address': 'cosmos19v0ypdujdw5emtzvsxv0qm6g4xqylyy8knuy0v',\n 'amount': '40000'},\n {'address': '0xdf3757c171b51fb8aa87fa40403d2afb66b006c8', 'amount': '26000'},\n {'address': 'osmo1hpzups62mjh6x3a5fmy0r4wq8y9pas52df3ds2', 'amount': '26000'},\n {'address': '0x132a0c4878443a77fa35e0f84aa701e4619d0404', 'amount': '23000'},\n {'address': 'osmo1udlkck6kc83v5c6ps4f7n982tzs8ph2jh73cvc', 'amount': '23000'},\n {'address': '0x9898f6dc70e11699338c8f814d3cc181c04f2707', 'amount': '21000'},\n {'address': 'osmo1f80d6l2a9xcwhpeylm6pjwem0zjkg7spzx8ax6', 'amount': '21000'},\n {'address': '0x69edb4780f65181c6eada7603cb6255fd3d50b4f', 'amount': '40000'},\n {'address': 'cosmos1m278une08hts7qjf9j53ahx9t4qne8zrw8ucu4',\n 'amount': '40000'},\n {'address': '0x9f1b95c221da536557999c1bf8eaccf7333bee0b', 'amount': '36000'},\n {'address': 'cosmos1rygdyvvxmwfyc8jvyzmggqaamwugvh2krva95t',\n 'amount': '36000'},\n {'address': '0x04566914271daf804a1ba1866f2f6e3b54838675', 'amount': '36000'},\n {'address': 'osmo1j5hqfgfanaqnwfwk6sxk5z9s5nun7e7275vsjf', 'amount': '36000'},\n {'address': '0xc45d0a9e1e335e8f3534291c87492d96f0ad0b9b', 'amount': '37000'},\n {'address': 'cosmos187l8ul0tyfc059z9j9nuj3cukr79e7fa0g3v7x',\n 'amount': '37000'},\n {'address': '0xdec00c9f0a116900a1c210e384b2915ee6f53777', 'amount': '30000'},\n {'address': 'cosmos18n5lhtsazn6x2wqys3nkujg3euw0njf690mv9a',\n 'amount': '30000'},\n {'address': '0x8dd2f48e85e5fae44c0a6f5d156bdae5fe059013', 'amount': '30000'},\n {'address': 'cosmos189zahp2ktjf8htt6qnslcy684fjghdqruhpp7f',\n 'amount': '30000'},\n {'address': '0xc713aa7ab2baab85f42c80827e6d0599eead59d9', 'amount': '30000'},\n {'address': 'cosmos1wdgqtyh5cpy3jqxvdluaczftuq7xezfdeydjgl',\n 'amount': '30000'},\n {'address': '0xd9e6c99697e00744bfacf190a3fcb44a17228cd9', 'amount': '31000'},\n {'address': 'osmo1m9xfgdhgxfvkg7q0y8hmnm6mmhckj5fas6ladg', 'amount': '31000'},\n {'address': '0x980e0c6bd6e1708ff2bc1d36208d9370240e28c1', 'amount': '21000'},\n {'address': 'cosmos1l7uj00glk54pv0ngc0t86dxqxwj9crtkgpzqce',\n 'amount': '21000'},\n {'address': '0x6492ce63a99579bcfe5f210515767d9e8af6aa3e', 'amount': '37000'},\n {'address': 'osmo1d6fqdemud2qve4vt8x2hp5g2qw82y2s2s0fu6j', 'amount': '37000'},\n {'address': '0x3402020a6f9f7551bb8b52cd870f06485acae0f3', 'amount': '26000'},\n {'address': 'terra1sl28hvuumlamktjy7sdumunq4j8hws6teavask',\n 'amount': '26000'},\n {'address': '0xa382e05fc89e5f895601310b2afea35d7d6ddbc2', 'amount': '34000'},\n {'address': 'osmo13d2yfggwuwaxc04qx7s4kzs2ctqn84pzg0yj85', 'amount': '34000'},\n {'address': '0x003991a846776b5572bbbf89999fbddcd782b26a', 'amount': '29000'},\n {'address': 'cosmos1mwthp3gncsmusltt7d9a5zfhdkv0xzjcsay7py',\n 'amount': '29000'},\n {'address': '0x14b83f9aac2163e28191cdba5ac648cd902d6631', 'amount': '31000'},\n {'address': 'osmo1e243ynzknwegnval4ypk4hwht9ekqs6dtc0fhk', 'amount': '31000'},\n {'address': '0xfbe484fea817eb22afdb803a10ae94906fb42c62', 'amount': '20000'},\n {'address': 'terra1nr9z2ed40taz0228khecwkyh2te88gqduhnwcw',\n 'amount': '20000'},\n {'address': '0x97f3586233de7b54b2a1dcd67aa0dcf8c165b2f2', 'amount': '24000'},\n {'address': 'osmo1fq2zxuuj2wep2fnpjelnfk9ltemaekwl8xjdkg', 'amount': '24000'},\n {'address': '0x0a7e603bbe6655693685ee13a2cc74cbc67c9b02', 'amount': '30000'},\n {'address': 'cosmos1c97vq005m89zr5ptrz6w5vdnuj5sguymqwq0lj',\n 'amount': '30000'},\n {'address': '0xb658089b9e8feab4dce7bf189321618f712f023b', 'amount': '31000'},\n {'address': 'cosmos1hxlt46h4vkcz96899n756tur34c0w09cegc7z2',\n 'amount': '31000'},\n {'address': '0x1610993d1bfaf89cd85d2006d3514db4877cbbe2', 'amount': '33000'},\n {'address': 'terra1v7jfz80hr5kpalnqq4as7zqmyen9f0d67066dh',\n 'amount': '33000'},\n {'address': '0x2b6151c5371d0c08bd0ea0027bc37df44ff2f257', 'amount': '27000'},\n {'address': 'cosmos162l0jxk73jhev4cy0ep559xashvuxw4vn6cg38',\n 'amount': '27000'},\n {'address': '0x1c148e183262144f73a23e3494511978aede03c0', 'amount': '34000'},\n {'address': 'terra1ykky5wz550krthh4h79rwgx6v77rtjckzmzyys',\n 'amount': '34000'},\n {'address': '0x395044cfbd3aa745095066f1906d4cb11180bcd4', 'amount': '22000'},\n {'address': 'terra1uvd8ue7vg7xztrss8dflewc2krsvggsfuftg23',\n 'amount': '22000'},\n {'address': '0x83acd9a1b8b2f0942987d0adbd78ce8834919684', 'amount': '25000'},\n {'address': 'osmo1usut02lwdkuj9kl7prdc8d05jmvy4xuxetd6ev', 'amount': '25000'},\n {'address': '0xed40bf445495739297a348defe6b22032eddc457', 'amount': '32000'},\n {'address': 'osmo1gsnukdyt6q2qcqqegmrgfylgskv2q2m0zgrrq3', 'amount': '32000'},\n {'address': '0x44a30d81f9342563e387c2db81f529b10045f3c1', 'amount': '23000'},\n {'address': 'cosmos1kt6ss4uxgjjt92meq6vgcfpdj8yg3m9v330chx',\n 'amount': '23000'},\n {'address': '0x73092f77250de97adb136c6733501694f29897b3', 'amount': '37000'},\n {'address': 'cosmos1hnguypk6ys72mxtvzq20pvln9yd70w7383s6mn',\n 'amount': '37000'},\n {'address': '0x94c13e21282ac6acc1c716f72a3d80849c53b19d', 'amount': '36000'},\n {'address': 'osmo1l59usmxnwdk054acstjx9ruk6hufeh7uucp2y4', 'amount': '36000'},\n {'address': '0x3a62723e1bb71edd0d441f7fbbdd545b6d4ea8ab', 'amount': '30000'},\n {'address': 'osmo1ppc948mmdm8zs0wgfl6p8dkc7u79x8s8694fq9', 'amount': '30000'},\n {'address': '0x79963c5441ddbcdb4748217e1c3fbf51c2ed4cbb', 'amount': '27000'},\n {'address': 'osmo1wh42zsj6pss3at8tvs9ygc99rwzc2pet6x5e02', 'amount': '27000'},\n {'address': '0x8c62602e00e751962be51802b69fe1c47506b65d', 'amount': '22000'},\n {'address': 'terra18qw4xvadrguszsrs4skk0urgrjns8ezc4cusdd',\n 'amount': '22000'},\n {'address': '0xb2c3360e69ae04b99be67e9bcaad9d98f144eb62', 'amount': '36000'},\n {'address': 'osmo19z64tjmv730hsstzy8dv39wncngfwyhmr47mu8', 'amount': '36000'},\n {'address': '0x4417a9b1d206073d8bb2ca6a43326cc93ea3aa8b', 'amount': '35000'},\n {'address': 'osmo10ftwmrzdudgf90rllqf6y4vfur7hyu3c8q93x4', 'amount': '35000'},\n {'address': '0xe513549dd02ade9e9a76ed1a38c54330aba41acd', 'amount': '33000'},\n {'address': 'cosmos1xtl6fhavh7qe84g5mfukplz8czja5xj73jpyzl',\n 'amount': '33000'},\n {'address': '0x0ef02d3e28907ec642b202478ccbb7848c581365', 'amount': '24000'},\n {'address': 'cosmos1zqdrl7646p2hg5uawr0uft2hp2zy9cl5320ett',\n 'amount': '24000'},\n {'address': '0x1ff65c704d5feaf5de0a856c80d9124ff086d12f', 'amount': '30000'},\n {'address': 'osmo1rj2ku0g3g48njlvxnf7r02kvr2394jk6xgyaw5', 'amount': '30000'},\n {'address': '0x4ff19450a88912e5f51791ef49b8342f520b6e43', 'amount': '36000'},\n {'address': 'osmo1jh4exx454mqlxfrs9uemfmf9fpgs6p6pagwg3s', 'amount': '36000'},\n {'address': '0x3dee5e00149c236ca7979dd40b1a0c8bebb207f0', 'amount': '26000'},\n {'address': 'osmo15yg95cuf2c2w5pkmca8ftne3x834f37n0tyxms', 'amount': '26000'},\n {'address': '0x3c2e0815ea5b6cc9de4756c5cf680010f109ac9b', 'amount': '21000'},\n {'address': 'cosmos1n38s345xgkvfuhr47fju2kypv4stzcq5rjpynp',\n 'amount': '21000'},\n {'address': '0x3d2d0b5035983bc0a8dbf97b2ed1a1c8c974b664', 'amount': '20000'},\n {'address': 'osmo1ns4kl5u0qeyalsyuft3aypyt2qq4vnautascuw', 'amount': '20000'},\n {'address': '0xf5a77bf95fd3b56c29c3c70d9589a5d8943b7959', 'amount': '20000'},\n {'address': 'terra13h4ruzqejps9jhjxt9aynnq504l85xwyjc3kfq',\n 'amount': '20000'},\n {'address': '0x536ae2be2780e0dddf3537710208d3d231fdefd4', 'amount': '28000'},\n {'address': 'terra1xfpnjk9sq2pt6xg9w249qh7yh0zjasr37d32dn',\n 'amount': '28000'},\n {'address': '0x7e7e007c949f088a85216cb9aaeb569f5615fed1', 'amount': '38000'},\n {'address': 'terra16yqj7eyyn8r5nf7wk8kc3q47e9nvxtldjl6saq',\n 'amount': '38000'},\n {'address': '0xf4fb233e6ef17052e23e65d5a80d317a31fe60fc', 'amount': '25000'},\n {'address': 'cosmos1uuxvqzhufsq7ktyywczl3fphcgllgntpeuxuw2',\n 'amount': '25000'},\n {'address': '0x33646fb77b651d82f7ab04652d9a5f1d767e718f', 'amount': '23000'},\n {'address': 'osmo1kpvetsy8alhww0x7mmm72e5zh5jk7xcrke8hak', 'amount': '23000'},\n {'address': '0x36042189fe3a7615e791af1072bdcda71d27f25f', 'amount': '30000'},\n {'address': 'osmo10wexnytw09vaftdns4u7cs5l7hw5v0cdg8yuyg', 'amount': '30000'},\n {'address': '0x4648ed2f8a801f964d12df1f4991a7a6e508b7a1', 'amount': '32000'},\n {'address': 'terra1qr6r5lm8qlekccfpvzdqnfayp52jwx8gn685um',\n 'amount': '32000'},\n {'address': '0xb15f9481cdfca32bf895743daf6a9d02d700884e', 'amount': '35000'},\n {'address': 'terra13e3tcvgqzkq0qrq99uyv4rdap9yd0hmttesard',\n 'amount': '35000'},\n {'address': '0x5da7fdc49c0cb8709a36f10c17edd86ca93b6eb6', 'amount': '28000'},\n {'address': 'terra1dzpvg6p938hq3pdqdxh8qw7dk5a9hqmrjv3aa5',\n 'amount': '28000'},\n {'address': '0xe9e807cf4634508c4996c5fb10fadc172d1b4c59', 'amount': '40000'},\n {'address': 'osmo1zp2753v25w8272xx7eekduvxdyzhjxjmla9uyc', 'amount': '40000'},\n {'address': '0xa87f2c41b21d2683ed58c592c787bf19ac454f9c', 'amount': '31000'},\n {'address': 'osmo1ktscr5yquz92pfj4cep3ex9n2raa7vxvd94462', 'amount': '31000'},\n {'address': '0x8f75953e6fcfa99ab21ec386e7b3d16eeda0b1cd', 'amount': '22000'},\n {'address': 'osmo1yt0gv02hctpfxnjs9nzujs7y54ww7sd94t0hn6', 'amount': '22000'},\n {'address': '0xef84ff27f222ec162a786bd00962f05c89b6676c', 'amount': '39000'},\n {'address': 'terra143thgevdns4vwtvwpg2sxmrn04lsdjrqednwz5',\n 'amount': '39000'},\n {'address': '0x17942b1fc43147f88e6be3aa9f7b43aba2cddaa6', 'amount': '23000'},\n {'address': 'terra19hvu420ntm95u6gww4untuvhfcldm9g0k844sm',\n 'amount': '23000'},\n {'address': '0xb5914f3630584913f0b70a5dec36a2f61132634c', 'amount': '33000'},\n {'address': 'cosmos1myta6p6fq0apemvqttcva38e8ls2pj9mdwnup0',\n 'amount': '33000'},\n {'address': '0x991dd6d7e10fa495397033a39341d7ba6820442e', 'amount': '26000'},\n {'address': 'osmo147qdprqrf764pgjr7e8yzvh78clv5lc7mf6x3u', 'amount': '26000'},\n {'address': '0x09ed0cb8f8d6d4df95da6d804e338540b9c099aa', 'amount': '34000'},\n {'address': 'cosmos1hhwhz4v23a7xl7429l9g45ce583l8me6ly5aju',\n 'amount': '34000'},\n {'address': '0x914049b92b4f259cfc1f964c06dd467788c49f50', 'amount': '23000'},\n {'address': 'cosmos19pqzn5nv6g8ktjvschpsh8e2fj55wf3g5k3der',\n 'amount': '23000'},\n {'address': '0x1e9ebe4e55660407c3ae8fa1f614dbb5e480e3d2', 'amount': '37000'},\n {'address': 'terra1sdqwewn2je8lgy46rfh37vgvh4j7tnkklz6uu2',\n 'amount': '37000'},\n {'address': '0xe332bb4e705df867e25ad9a2c7f40fb8d9bcfa1d', 'amount': '31000'},\n {'address': 'cosmos1syw9tduy9ydafctacp6ysv8x4xuqhc7pduwgp4',\n 'amount': '31000'},\n {'address': '0x3e2045caa651e202a27626efc42c72d2775223cb', 'amount': '34000'},\n {'address': 'osmo1se79jq4pz9r6w86wggwd3add9745wk8347tpld', 'amount': '34000'},\n {'address': '0x7f78ed283b30bcd2ae2ace55e4227b2597919019', 'amount': '24000'},\n {'address': 'cosmos1meupy9yqm9ufpkyjhr6t6zg4c2wsql53ua8l2d',\n 'amount': '24000'},\n {'address': '0xc25ef688ed9a7ba2f96c1bbb725fe3698d173729', 'amount': '31000'},\n {'address': 'osmo1t7w52lshmwnwrlq0c80cyhtqeydscqnhnygpht', 'amount': '31000'},\n {'address': '0x91bb9e2ef7afeae55ea02c9e8e0caf1f3384d8c5', 'amount': '26000'},\n {'address': 'terra1xvlrfnja8gzwym9dddldxn2zdfvunanrcga2ma',\n 'amount': '26000'},\n {'address': '0x6d51e2d88326f9d331d9bfe9816a99cb14fb53ae', 'amount': '31000'},\n {'address': 'terra186mrlf2fxz69967w8hgvytuuuetr4ede5dp980',\n 'amount': '31000'},\n {'address': '0x4e7d3d873374e899ce922f12cb8e55bf86133eaa', 'amount': '25000'},\n {'address': 'cosmos10ewhsav9u5hy7knpph89g82ltw354lmnp7algn',\n 'amount': '25000'},\n {'address': '0xa686d9ca158867b7dad72f62d2b5174c266fed00', 'amount': '26000'},\n {'address': 'cosmos1utztzpemglp5tg9scccy30t9j7h0lt6pmu0vpl',\n 'amount': '26000'},\n {'address': '0x3cf3e1101ab7b46b55cdbd414a0e585e70cfb7d5', 'amount': '31000'},\n {'address': 'cosmos17tf3t3zp5h8vzuma7ztxs0czf9vawsp2l6acy3',\n 'amount': '31000'},\n {'address': '0x0d0a300db4d2eb225b5206fdea3d4f7a57203d91', 'amount': '34000'},\n {'address': 'cosmos1f7vamk7tfl97l3laypz0hpd4arvue09wssew7y',\n 'amount': '34000'},\n {'address': '0x57e3578a754d53493ff2fa619a6314221ed1e7f5', 'amount': '39000'},\n {'address': 'terra185slspflpmmjahglq2p4war9cjmamu782kxwdx',\n 'amount': '39000'},\n {'address': '0xc568ca05d68ea60022e8fb238f13de6b0e50f643', 'amount': '35000'},\n {'address': 'cosmos1djrktdqjpl686fcv6l3kh3kx93hk6nhuvdwjwq',\n 'amount': '35000'},\n {'address': '0xcf684b6d1ab5bbaf789fe1736e00dde141440fac', 'amount': '27000'},\n {'address': 'terra1yr7pu6xy6md0jckmdyy0u8shn43smxhjhy72nf',\n 'amount': '27000'},\n {'address': '0xbee307bcc69f69c19ceb5c0b624ca0963335f77c', 'amount': '39000'},\n {'address': 'cosmos1ar4dw6yu4w23t6sw35k6m60ny3vqpha58hwtvy',\n 'amount': '39000'},\n {'address': '0x0886ca6486d0ef60a8da5e46ad0f9be26fa39c0f', 'amount': '36000'},\n {'address': 'osmo1tes57e782vurv7lc35nk5exepkr5dmgewm6esk', 'amount': '36000'},\n {'address': '0xbd791203e6d89c8c1c9010f3cc105875340f69b7', 'amount': '33000'},\n {'address': 'cosmos1vuh4q00xv7kf8660cw5m9fjsnjn32xvd5qrvm5',\n 'amount': '33000'},\n {'address': '0xd30b198fbf3cdfdb46dce343b36cb83d511b55ab', 'amount': '39000'},\n {'address': 'terra1tqylvnk48gxpc9qxa27xdppv43j5e0d8acuepw',\n 'amount': '39000'},\n {'address': '0x89f3d13705304cb8689ea1240c66799ef181f87b', 'amount': '33000'},\n {'address': 'terra1dwzsl2ra9dzdn3ycqnzafarztjlwhpj9tnhjhc',\n 'amount': '33000'},\n {'address': '0x314e94e76a60ab473eb20f189205be9bfaacb06a', 'amount': '37000'},\n {'address': 'terra1gugt3yrelgxz4re7ah0rg7un8rk0ktrz0ds0ma',\n 'amount': '37000'},\n {'address': '0x55740f3d9aeca4551853c8c8480bb083430a8b47', 'amount': '35000'},\n {'address': 'cosmos1l6gfwelufm8e5ydehn848ufymjap8lk7exzt3n',\n 'amount': '35000'},\n {'address': '0xb238ab2a960d998ac5ed2d195e3e4b16d5694038', 'amount': '35000'},\n {'address': 'terra1vnlncl8cw829redpx3xudt68atxf2nquk029ux',\n 'amount': '35000'},\n {'address': '0xf4a40d61abbece8a98a4898ef42fd3b1cf27aa61', 'amount': '24000'},\n {'address': 'osmo1777p23vm3l89q43h08pzwl80j6rjncnhenrvqt', 'amount': '24000'},\n {'address': '0xfbd9c0dcb96a505ba56db15370f160a444178735', 'amount': '31000'},\n {'address': 'cosmos1py9x0ku93sg0vkwv3f0wggflumpywy3sxl5qgr',\n 'amount': '31000'},\n {'address': '0x2115bbd6e87411718863fc324f82c35c142d7f91', 'amount': '22000'},\n {'address': 'osmo1mpjy2zcecndetvrk3a539jgcdj5nvw7s4l2nhm', 'amount': '22000'},\n {'address': '0xd846dcbf90d54e63be1354345e01db7cadb8ce61', 'amount': '24000'},\n {'address': 'cosmos1jue6we229cte2vtyly43gr43ghf622926mp4d2',\n 'amount': '24000'},\n {'address': '0x8a21040096a73672ca1dfbb871c2f0f4280f0867', 'amount': '35000'},\n {'address': 'cosmos1cc2phnghnf2v46zt2zwx50046aupq0t2d45tl9',\n 'amount': '35000'},\n {'address': '0xb36527a081cffcf8fc626229a9b3afa0b0438ba3', 'amount': '35000'},\n {'address': 'osmo15yknccqnjy5nfesx2y6n2tm47sgvcagdp99f04', 'amount': '35000'},\n {'address': '0xeb30a8561ab280ba6360e4fa4dc935113e00dc26', 'amount': '22000'},\n {'address': 'cosmos1t8g6ajlp458pev2lxevazxgnaf7e6sh6hn0lrr',\n 'amount': '22000'},\n {'address': '0xf2c9ff9af981035a21ba86f8a9c947a7563265e8', 'amount': '27000'},\n {'address': 'osmo1sa3pd5h2c50ynyp8z2srn837qpga0skd77y9wu', 'amount': '27000'},\n {'address': '0xdd3608c014e89d4840974a9bc342beb79f93df4e', 'amount': '36000'},\n {'address': 'osmo15aww3ffak3k3genvakyp95yxc9rn5779pzldu5', 'amount': '36000'},\n {'address': '0x3829b802dc765caff0f289d6ff0318082b9554cf', 'amount': '37000'},\n {'address': 'cosmos14q6hjmqevejcwljx23y97xd7rjf539zlhdtcqz',\n 'amount': '37000'},\n {'address': '0xd7dd2b9fb32e90b06c521d3ca260e54ccf18fcb6', 'amount': '29000'},\n {'address': 'terra13jm6l3d02su92xfrat0yn9hgg9vnktkndteurs',\n 'amount': '29000'},\n {'address': '0xb15c5e1ffdd4f291211a2e4f228d5f81fd974a1d', 'amount': '30000'},\n {'address': 'cosmos1dqwvqdstxc99azfaale54nry8attsgdjnmxkej',\n 'amount': '30000'},\n {'address': '0x2c117e32b335d93a9c04595236b8e9b60627d3f5', 'amount': '27000'},\n {'address': 'cosmos1ujfamvs3fezyry54n2nm0cfus3h4k23yadjnh2',\n 'amount': '27000'},\n {'address': '0xcec4aee035d4cfc43e42c6dfbb341fd2d7f3c56e', 'amount': '26000'},\n {'address': 'osmo1puf5d2pyknnrqqnsp2zcqqwn4kqjhq64a9qgnw', 'amount': '26000'},\n {'address': '0x8348de919263f84a70513759e305ceeff1efa92d', 'amount': '20000'},\n {'address': 'osmo1ljcuf3cjuwa7d50z2hexh3qysmukr0cvzgq6en', 'amount': '20000'},\n {'address': '0xff693bb1dd447d07612be8291fbc93aa3c266b11', 'amount': '33000'},\n {'address': 'osmo1kyse5tx494adgulrc8pfq36hzr7ctgtmrsd80m', 'amount': '33000'},\n {'address': '0x9dbd22349adc315a0478464766665e460a887bb7', 'amount': '28000'},\n {'address': 'osmo1d6spjz98vye3ywl5c5c3hllngrs930grcpaz3p', 'amount': '28000'},\n {'address': '0xba58e7da0ac0354498fa8f57fc57cd91f2100297', 'amount': '26000'},\n {'address': 'osmo1jtxv3npna0mx8ug3448yn3w5kdhe7dkty766l0', 'amount': '26000'},\n {'address': '0x885a510eac4568590b9a1ce7366d612c5f2e9b71', 'amount': '23000'},\n {'address': 'cosmos1knt5z0ldrk066nf766fryndns49c0j6yas9x2d',\n 'amount': '23000'},\n {'address': '0xf5fbe20218584295dcfdc4f3cadd2e500e85653a', 'amount': '38000'},\n {'address': 'cosmos1dwfjphvkt22gah9rrwtyj8s29wjtmm0c9876nf',\n 'amount': '38000'},\n {'address': '0x21ffac3d8aca6937c0ce98872f67c08932503199', 'amount': '22000'},\n {'address': 'osmo1na0rnvq9nu7ud3lfhqjz9hnwp4u50zxxemfsqr', 'amount': '22000'},\n {'address': '0x774965796e6d9c5d7c4dffdb672b779fe672248f', 'amount': '32000'},\n {'address': 'cosmos1fzmsyvvwg7k9nmnsefm2qrcmp4h3ex8yvry8nz',\n 'amount': '32000'},\n {'address': '0x06e56f218636950424f06a3ec16058540e3bace8', 'amount': '35000'},\n {'address': 'osmo1jq78te2x54njgxt5f8zlhjx7gwm8gh4eyhgu47', 'amount': '35000'},\n {'address': '0xf858ecb527b93abba330a0e688516a1f1a32d3e9', 'amount': '36000'},\n {'address': 'terra1m8s80nm0srg0lyakrsfltu4hsdqdxqmp7d9kx0',\n 'amount': '36000'},\n {'address': '0x595938d2c587d6b78811e3ddc49458a629d5a455', 'amount': '38000'},\n {'address': 'cosmos1pj0nwtdhehvp8lvydfrrz6ajwlarcg2tdtwka2',\n 'amount': '38000'},\n {'address': '0x985534ac1b76119077568069747157613b69f7b1', 'amount': '32000'},\n {'address': 'osmo1smf2e8nm3zhhqu2nqx2fu8d7grzp0l5wep463q', 'amount': '32000'},\n {'address': '0x1bb0bb19d9ef68144840ce81c6b07138b7683018', 'amount': '34000'},\n {'address': 'cosmos1l6zuxndgw47g6d0z2c0g6gpz4sxqqkt8lxf9wz',\n 'amount': '34000'},\n {'address': '0x23ebc31d1f52a49e64c00ae6a31b0b29d0b59633', 'amount': '37000'},\n {'address': 'cosmos1eqe8put45qcq4jjd33uvegx5yejrarl7yk8g9z',\n 'amount': '37000'},\n {'address': '0x2e69cbe60ea4b1f1569cf97ad62054f4810e4af6', 'amount': '28000'},\n {'address': 'terra1kpvvypqvwufegc9w5xhw5fs9cm4zn9z9y7vxaa',\n 'amount': '28000'},\n {'address': '0xee4e04f4c46febe6b4749e2609f1cea010d3fbe2', 'amount': '26000'},\n {'address': 'osmo1dkcglw2vqw902gzxy25hhmnj9qulzwcmcdtw63', 'amount': '26000'},\n {'address': '0xcf6173e71755c1d86bf2097ae12eb47269d0a3d6', 'amount': '29000'},\n {'address': 'osmo1xzwdujmqlqs0qvpd4387fkrn08x0kuvwwr96ar', 'amount': '29000'},\n {'address': '0x56b0adeb977757b5b19e6e732e21a43c6ad763bd', 'amount': '35000'},\n {'address': 'cosmos12650e5d2t7akkzk9uqnrp6d62c93pj6s7lh2ex',\n 'amount': '35000'},\n {'address': '0x4ce40e3be0a1279b0511f8a0ca22afcc3cfc901d', 'amount': '23000'},\n {'address': 'terra13ztgxstgjckmzn6rl93ze8r5reyp3ftd0rfvc4',\n 'amount': '23000'},\n {'address': '0xf3d7b35dd3f98cf16bdc2954ed0ab8b00ddf8ee1', 'amount': '22000'},\n {'address': 'terra1dyjgd8k20anu6gzwm0j3dla2anuwkdfl34gg0c',\n 'amount': '22000'},\n {'address': '0xb6ec66f924ed1e9be2ee7d722cb8708af17740df', 'amount': '24000'},\n {'address': 'cosmos1zg6zxhsvat2qgdn2m3g8g6h2wksr8lm3atmn0j',\n 'amount': '24000'},\n {'address': '0xef2473204d230a15341ed57ba3b6f86c90ed8af6', 'amount': '23000'},\n {'address': 'osmo1479p9sw8ws9dfn27exzd0sycj53fr4ydwh8m22', 'amount': '23000'},\n {'address': '0x4b65cbfcf520613ce5f31de65aa739cef89e743d', 'amount': '27000'},\n {'address': 'terra1x8w4ywav9jf6uw2fqkq3aap2vw7kccrrfls46n',\n 'amount': '27000'},\n {'address': '0xbea801659ff28d741c23cea8ddd02cec20393cf6', 'amount': '33000'},\n {'address': 'osmo1qd0j70frt0j676k2k6vp652ru9ttc20nvpv805', 'amount': '33000'},\n {'address': '0xc1154f8986aa1d3e89c3821341ddb367399e8c27', 'amount': '37000'},\n {'address': 'terra1ss7wfx05k4uyd2nnpgf4mmy2m9qr9qkrdsk8d5',\n 'amount': '37000'},\n {'address': '0xec5e0ec57b5b5473e78df7f2dd7bf9e143b71d84', 'amount': '31000'},\n {'address': 'cosmos1lhzjg702cemly2nux3zr4ccacgmpekzkkhyz2t',\n 'amount': '31000'},\n {'address': '0x2fc507c16d5dd138a5b3fe87871f51678f6f8d1b', 'amount': '30000'},\n {'address': 'osmo1zmtr6qq652wchtra6p7ktd5fysd5rswzu00vfn', 'amount': '30000'},\n {'address': '0x64a04ec9067230b8b4656a94431947becd27c7ba', 'amount': '34000'},\n {'address': 'terra1wlpf7qrgdj8zpeu7at4kh96r6jtlcezleuvuv7',\n 'amount': '34000'},\n {'address': '0x1ad457ed3ba35d84972f4eeec8621dd18759cff8', 'amount': '24000'},\n {'address': 'terra1me2xa8x38h5rzalr7ltty5gzasvgy8nlq5tzml',\n 'amount': '24000'},\n {'address': '0x7ff14140820206a2bb08ef9d5d91467a30406595', 'amount': '23000'},\n {'address': 'osmo1luhp6nd8c84kgd6w3g8ku0cqgxf85kx3rgz7fw', 'amount': '23000'},\n {'address': '0x950d86276b52989def97d11f4ef7e45492ccadc1', 'amount': '23000'},\n {'address': 'osmo18chdsna72r7gz6tf9smrxrfr8smrsmnzuwm0qv', 'amount': '23000'},\n {'address': '0x40e16f5b013819a5db6752bd5e68e4a7720d2f27', 'amount': '25000'},\n {'address': 'cosmos1hxdkna25pcst4dnc8ahwd3hcqzrkee38qalpj0',\n 'amount': '25000'},\n {'address': '0x678f6b95027a6cf3703d9954d8587a3dce5baa96', 'amount': '29000'},\n {'address': 'cosmos1h45vr7a88kqf2uaqg6l9um3xwsww804teez32y',\n 'amount': '29000'},\n {'address': '0xa3f052dd425c065685a6f7b629b67de6bd836e63', 'amount': '25000'},\n {'address': 'cosmos1jsuz82vk5ea7sgqzqk66c3gspsr2hxxnvz942p',\n 'amount': '25000'},\n {'address': '0xbffb60e59cbcdb1763b86cb5e7a414d885f9f19d', 'amount': '34000'},\n {'address': 'cosmos19d9s2z9ynt57hesvry326csukasay0v60pt9u0',\n 'amount': '34000'},\n {'address': '0x7980a2dded75d84d41355a254320165ff91a4ac7', 'amount': '33000'},\n {'address': 'osmo17lnytsjz46el8q2w3mpgrwp3c7da0wj0fwrwdq', 'amount': '33000'},\n {'address': '0x31f17f5c19b4c1d8391d61333464ae2f9930979b', 'amount': '26000'},\n {'address': 'cosmos1e85x3cwvfwdra92a6pc8acqf9tqsm655h0zwpn',\n 'amount': '26000'},\n {'address': '0xf1cd8f523f3ff2d07b20529110a2fae54784da7f', 'amount': '26000'},\n {'address': 'osmo1xdymuvmjn5lcqj6cnu5g4gkxg6w4845th4tpaq', 'amount': '26000'},\n {'address': '0x1d4c920c982b89db6cfc3e86292594e407dbad0b', 'amount': '38000'},\n {'address': 'terra1yg5tntjdezk50lj4ww7g66uvn2smy89rky0cms',\n 'amount': '38000'},\n {'address': '0x76e2606d8e63c655ed1241dbf1f5c78ec2938f96', 'amount': '26000'},\n {'address': 'osmo1mnkrjl4k5m86ryp5l0facw3wtyyzv2mwnxy594', 'amount': '26000'},\n {'address': '0xb26a771a2509679b13199a7f45532fa64d63aca0', 'amount': '34000'},\n {'address': 'cosmos149ster04xytegxwjpuhsq5t50a66yprc09efe3',\n 'amount': '34000'},\n {'address': '0xaf766bd1607a389c6de677e7e87e30381f48dbe3', 'amount': '24000'},\n {'address': 'terra1h3gd7fzgk8chnkkf39wklvt6f7p55tjrg0ejnj',\n 'amount': '24000'},\n {'address': '0xf05b6b220786ae324b320bc4d353c82f91b6e525', 'amount': '31000'},\n {'address': 'cosmos16nlus5elu366xvsnxxv5f8jrkaw7s2558skgt5',\n 'amount': '31000'},\n {'address': '0x624eb1db5e0b9f36d3ab058e8d0692a978e71777', 'amount': '33000'},\n {'address': 'cosmos1uvfuwdez3tddwypnnx8xzpupem6mt9eacyvdyj',\n 'amount': '33000'},\n {'address': '0x875c58873bc80e4c0eeb2c7aa2da83600687cfd5', 'amount': '23000'},\n {'address': 'terra1w84s4875r6309kumd5vp3gk8gzcgzdnkgau8l6',\n 'amount': '23000'},\n {'address': '0xd855c7926a33872a9da8d9d3570218205adcd30d', 'amount': '35000'},\n {'address': 'cosmos1hpyfv5jq4dajuzxx5u8x7pj6neqhh7ls9gh760',\n 'amount': '35000'},\n {'address': '0xfbad548c2d0bff41d4608aecf2d157ab8116be3d', 'amount': '38000'},\n {'address': 'terra10n8ekhyu78uu0lukmyarw2nrxfgxfs2f3h9ndz',\n 'amount': '38000'},\n {'address': '0x947db0e8b57c25d2cc322b1f461e4e236fd215a2', 'amount': '26000'},\n {'address': 'osmo1w2jaqrpca3e9afqww468ergrs4gt6uz6tpghxk', 'amount': '26000'},\n {'address': '0x7d5fbc71c37cc6d7944dc6300e1e179d24da5883', 'amount': '40000'},\n {'address': 'terra1q3cuwppwwe4wdgtwr2ta6gzf2trswwtk4gncs4',\n 'amount': '40000'},\n {'address': '0x0f49bed3a51effa2378307b6cad095b2858d46fe', 'amount': '32000'},\n {'address': 'terra1sc8nrz0mjs5607yfw53duj8vart687n9saqa0s',\n 'amount': '32000'},\n {'address': '0xb7567c7c14f5b190a66d77d59497cb4a72a3ca60', 'amount': '35000'},\n {'address': 'terra1587u0gmq35em78tjq3knguqlual9t3xy2flzwh',\n 'amount': '35000'},\n {'address': '0x2344a0deccb24c4d30ae6b570d3bf702f41465ef', 'amount': '27000'},\n {'address': 'terra1l8lrqnvd7upt7jgf4nwkg7gxayn0ee45klhs0t',\n 'amount': '27000'},\n {'address': '0x2eeecaefb774f480f815591fab719c37bee70bce', 'amount': '21000'},\n {'address': 'terra1gdnxmtpwrxx0aayd2yurw6xs29c4se544t90j4',\n 'amount': '21000'},\n {'address': '0xede57416285e5ae0156de917b0126192aa203813', 'amount': '39000'},\n {'address': 'terra1at9ruald2qv9wqryw2crlrpddwrh6szpzac9qz',\n 'amount': '39000'},\n {'address': '0x13e13cf0515828708e395f5493334362419f71d5', 'amount': '40000'},\n {'address': 'osmo1u69w0lj6au57g2kllsg8a9mj6k4q2xmnre8rh3', 'amount': '40000'},\n {'address': '0x6fd6176e0fe084633f588e0e487be87d01f8477f', 'amount': '21000'},\n {'address': 'terra1jyczuhl6smydhkcjdu67vmap2luefvdd2594dq',\n 'amount': '21000'},\n {'address': '0x51be114666c634cef04fd7f76b3e33348b9f6c78', 'amount': '26000'},\n {'address': 'osmo19745k5rsrpg8066s6v3vlfmxv8p6trlah7m964', 'amount': '26000'},\n {'address': '0x079d4416a532fe81cd0c950f79515a9420a0cf5a', 'amount': '37000'},\n {'address': 'cosmos1kyjxn5qk9wc724m62plm9sqcesf7dchdghd5wp',\n 'amount': '37000'},\n {'address': '0x5f9fcd87e542f951b87110cd65a9203e88a27061', 'amount': '33000'},\n {'address': 'osmo1n7aj74kn4gxtm6dqpz8k6tj38047j6jtvsvv46', 'amount': '33000'},\n {'address': '0xb715b412d36977a26c0613bc9c2c70897922900d', 'amount': '21000'},\n {'address': 'osmo1zp2zel7p63wa0t46nm86dtze2gvke0hvr5qrhz', 'amount': '21000'},\n {'address': '0x53580818dcde664d922135c85823b7203d921e07', 'amount': '24000'},\n {'address': 'osmo1jujuladj4g6yt9gfxe56x6tzpyez2r4mqn9rs7', 'amount': '24000'},\n {'address': '0x98ea78373d9b87f58abe50ce49bf9200c9020e3c', 'amount': '35000'},\n {'address': 'cosmos1rsfzekled2gy3st8vwlvnfkrl9rumze6cpuuy3',\n 'amount': '35000'},\n {'address': '0xa7d101952e308af0f081b5952fcdc841b9a57c95', 'amount': '27000'},\n {'address': 'osmo1hh8zflkhpa4vhfjxflk9p96u7hkqxnvy673084', 'amount': '27000'},\n {'address': '0xbb8f240b00888848876eb114b22250a10233d22c', 'amount': '20000'},\n {'address': 'osmo1ttp5cwf04mxyuv3mtt0zj4f34edm59ezw2j634', 'amount': '20000'},\n {'address': '0x3d29610afcf10534c467fb62e106b199184dc319', 'amount': '37000'},\n {'address': 'osmo1xh9wr7rjnmegjks40yawuf86qmamgg0l578c3l', 'amount': '37000'},\n {'address': '0x59ebd3f35b5feee13c02cdacdd78e65a77d9725a', 'amount': '27000'},\n {'address': 'cosmos130vjsec2j5hqazxra40r67sepevql2qmty2uw4',\n 'amount': '27000'},\n {'address': '0xcc5a72ff2bc5d3ec23ab0f5cd2945de138112a47', 'amount': '22000'},\n {'address': 'terra1ytf7krsc05vx0qm2qfe3u8fk93ajmssxf6dptf',\n 'amount': '22000'},\n {'address': '0xdfab9777ac0a8835ffa927a2f7dc0fa149d2f54d', 'amount': '33000'},\n {'address': 'terra18m4ware3uwgh3t2677qgdayqn6467tfpgkp0y3',\n 'amount': '33000'},\n {'address': '0xa7cdfdca701ff9f0e70449ec0a697ef60e76656b', 'amount': '29000'},\n {'address': 'osmo1c7jfyedm0rs8d59ag9qqugk4aas0yhxxp3qkmr', 'amount': '29000'},\n {'address': '0xd5cbdd23f1f1b1c62be924f3171a81f6b4fbcdd8', 'amount': '22000'},\n {'address': 'osmo14nt78p0s9z0zqj6u4yd46ywphse5aca4p3pv5h', 'amount': '22000'},\n {'address': '0x8b9ae981fcf4955d98023ec92eaf7c99af6a7113', 'amount': '34000'},\n {'address': 'cosmos1qd0knc6zqqt34zfrurzxztrnhyrvefhzkmwa2m',\n 'amount': '34000'},\n {'address': '0x43696a62f4d82bbb7f50dff27691276958a21068', 'amount': '21000'},\n {'address': 'osmo1h09rqm9r0dyhr23qprvxshgzgn2pd4r6g04er3', 'amount': '21000'},\n {'address': '0x720df56c6d2a255ba1acb8adbb1edd8fc455fc51', 'amount': '35000'},\n {'address': 'cosmos1vr4ckd95fn90xznv754d825d6ua4259w5p4fug',\n 'amount': '35000'},\n {'address': '0x95ff808394de6b3f215c2466caf16af3313a617b', 'amount': '40000'},\n {'address': 'osmo1dgdwvx2sxq9uxd9emmntal2e2f7780jq095hjy', 'amount': '40000'},\n {'address': '0xfec307ec104269af90fe8ba39c0b9f0589816bc3', 'amount': '28000'},\n {'address': 'osmo139fnasf0cdp29dlxtrzp5mrkymgmhstwzh3wtw', 'amount': '28000'},\n {'address': '0x61f6d3aec7f7fd85751b66295741554085cf8008', 'amount': '37000'},\n {'address': 'osmo15wx0nvvr6s0lf6c76fxrv8a3f84s24vvtha005', 'amount': '37000'},\n {'address': '0xc657d9248f4d4c60f9facad51d42d7548d8e3e40', 'amount': '24000'},\n {'address': 'terra1f7m6pfwctu89ppd7n5k8lah258y7wqkgcmy2vh',\n 'amount': '24000'},\n {'address': '0xd5a613ad0063510221a7a4dcff630efe3da4afd2', 'amount': '20000'},\n {'address': 'osmo1ex2ztqs6kp92gyts60r9dlv3xdqwglmugs2yga', 'amount': '20000'},\n {'address': '0xe79bb313b67f674dbf408910ddaccb8bbeb0fb87', 'amount': '31000'},\n {'address': 'cosmos1tzkwmthhmncd4wuzrepyqzfh7hw4l3r99x83us',\n 'amount': '31000'},\n {'address': '0x097819fb6b199e2f24522389e7f58960d0157a26', 'amount': '38000'},\n {'address': 'osmo1ak9nvl978hqwj99gtaank6tye8ge6a5ufa4078', 'amount': '38000'},\n {'address': '0x2af9e3968d9634d3102192714fe81ee1481f0cfc', 'amount': '22000'},\n {'address': 'cosmos154d0cfuctglzlzpph6apd3fa7z5ahyqwvnu02k',\n 'amount': '22000'},\n {'address': '0x5137eb7027f97423b426deea59f68fd1db7abedd', 'amount': '28000'},\n {'address': 'cosmos1dtj4evf9nyqmpeqmduuh5wp2l27h3efqd5l3zq',\n 'amount': '28000'},\n {'address': '0x058be1061afd5e96386bb7b0e741b6ba572672da', 'amount': '39000'},\n {'address': 'terra1ndvdasauhxnamlm0d5d0hls4dpgs2w60lz5tt2',\n 'amount': '39000'},\n {'address': '0xfe65da01e0483d97c0705dea7f551c948cb757fd', 'amount': '29000'},\n {'address': 'osmo1399ghnzcsu4c4pmsrn3s6f2cjmpp8pzqcrx6gl', 'amount': '29000'},\n {'address': '0xbd94824a8624a156f911db711cf01eb6207e73e0', 'amount': '26000'},\n {'address': 'osmo1hjx5t09py0v6zpdstxq56ujaes2qgnefcxss70', 'amount': '26000'},\n {'address': '0x5164885cd45326ad23e32a306ef0ee4e47430db2', 'amount': '29000'},\n {'address': 'terra1ya93ae0fhr9gvs936lnn3anejqe75suj62ehmj',\n 'amount': '29000'},\n {'address': '0xa5a0d59f2d240a3153806e55a8a78f55acdaaf5f', 'amount': '33000'},\n {'address': 'cosmos1mcmrc0hrhectljf7q7zgd8gg3zkltfaq9ttu89',\n 'amount': '33000'},\n {'address': '0xfeb24f8b30fe5a01882e39d1ef84f00ec1cee324', 'amount': '35000'},\n {'address': 'osmo13yjj5zsda8ezqkpnlt2rrlu5cm78qxqdlyrkdu', 'amount': '35000'},\n {'address': '0x66ef4be3be0d487cb7eba5bef3a0990a56464431', 'amount': '36000'},\n {'address': 'osmo1wt9dua56yn5jjulq85vwzu2gjjta7ymgz5w0nk', 'amount': '36000'},\n {'address': '0xfb6f3d9ae8656616192a1f9a4da48528c5d6e3d5', 'amount': '25000'},\n {'address': 'terra19rnfvwv3ht79ghw020e4whm9uy8mgajmuzuq7y',\n 'amount': '25000'},\n {'address': '0x9b0f133bf2c37729f46ac517cc719bed8f2ff039', 'amount': '23000'},\n {'address': 'cosmos13ykn6xpwt9p6fw4ll3mc9nnjp633q0q2hrnsx2',\n 'amount': '23000'},\n {'address': '0xe8e128ebc64a48f82853d346abea01859d7d2d4c', 'amount': '36000'},\n {'address': 'terra10rwwedl2srrlscuzecynd0mrpgm200w8lyfkay',\n 'amount': '36000'},\n {'address': '0xba241850f5d66b7c741bf507a3fda6808d0009b4', 'amount': '35000'},\n {'address': 'osmo1tlsvw6p5ttl5dc8ennduu3n0arm92npz7n3z8u', 'amount': '35000'},\n {'address': '0x768933663a01f908840c7d525f5e92dcbaaf1a5e', 'amount': '36000'},\n {'address': 'osmo1l706juna9ev7xs0cc02qr72tle75elaqx7k4ha', 'amount': '36000'},\n {'address': '0x5127ad11e8ed8b612cad19c9094fc2a2f3b4f396', 'amount': '39000'},\n {'address': 'cosmos1qglumrn6sakx05m7zu28tqtjsqrh7wswqvw5ev',\n 'amount': '39000'},\n {'address': '0x60ef6ad0986f4abf2b8325018ec3e3759b0b9fc3', 'amount': '23000'},\n {'address': 'osmo17kdulsfwmv8xu76cgmh5r9pmsda49n22l4ermk', 'amount': '23000'},\n {'address': '0x29240880c3d6ec18a1cf41b1b2dd5b3b91395ef6', 'amount': '28000'},\n {'address': 'osmo1v45v0ps445pgyxglgtd0zc5te6v2hzspzlv698', 'amount': '28000'},\n {'address': '0x02fc6d7d8ae706a4a70e8f39250bbffe6a69410f', 'amount': '36000'},\n {'address': 'osmo1t87raycs47szpme98xr7fddne36vvauc2wvxap', 'amount': '36000'},\n {'address': '0x7f18ff32eb5b3bf39e6c681b6c3bdbfcfb328df6', 'amount': '35000'},\n {'address': 'cosmos1543lpstumzljfycfzlvc8f4dddl43w8chqnq3s',\n 'amount': '35000'},\n {'address': '0x146a717652156f4c385bc8bd5eac462d8325df57', 'amount': '20000'},\n {'address': 'osmo1rpdtz6klq799elug3jr5l24lc4xm0wh88lmeqq', 'amount': '20000'},\n {'address': '0xd704c315fa90939fb9e65541e3fdb9bab7eebf31', 'amount': '38000'},\n {'address': 'terra18eun5p4yzehvfpemvs2qzv9per859pjl29ku8z',\n 'amount': '38000'},\n {'address': '0x8efeeefee2dee9d7af9cccc8ae41a5b630988d2f', 'amount': '22000'},\n {'address': 'osmo19thqztypqkp789z2t0h23pts6yfz9kc556f8vm', 'amount': '22000'},\n {'address': '0xad58021cfcc9e775d3c4ef92279b8819d4500a7f', 'amount': '40000'},\n {'address': 'cosmos1xufxzjqxsnxdpr3ns04sct7f8qwlt0qerynlwu',\n 'amount': '40000'},\n {'address': '0x9bbfe781e1d2a63754a45c5f852b5c495d28026a', 'amount': '31000'},\n {'address': 'osmo16m25pc4u4r6d92s0ttqdy36wxeeehwefhl4tle', 'amount': '31000'},\n {'address': '0xd6652f917ab103864d02d7008a94b177a5e8696b', 'amount': '36000'},\n {'address': 'osmo1c3qcwp2t2cxle3qggcwt2vstml95arfyum8uws', 'amount': '36000'},\n {'address': '0xcb81f85f0d449255f53412eb304d44361dde4248', 'amount': '37000'},\n {'address': 'osmo1xzqpzmtyevwdprufjkqxja9lhv57zs27mf0z98', 'amount': '37000'},\n {'address': '0xf106b43da1e7b1af0d49095ee3b020a77724ab01', 'amount': '23000'},\n {'address': 'osmo1z39qgxxhka88d6p9kgv5sax9p24sagpns4hj80', 'amount': '23000'},\n {'address': '0xe8a727ce2d563322e9a10865158eaf312897755f', 'amount': '20000'},\n {'address': 'cosmos15tvwrhl65td5agnyu5p37d3fxtx8xxg9t3u0le',\n 'amount': '20000'},\n {'address': '0x9142174bb3f15dc2e2e8cfa3b5d40be813353075', 'amount': '35000'},\n {'address': 'osmo1cya4mcemewd53lmupahl48j2aq9uujr0w9qtca', 'amount': '35000'},\n {'address': '0xf5bfb769b04166c2951bbcec00f88d2aa58d8eeb', 'amount': '22000'},\n {'address': 'osmo10t2cxhkvtcgx82rqypgjeps5sf499gzsutdm6e', 'amount': '22000'},\n {'address': '0x2ee8cfbb2ce349b0e5191af2b2b1de5012c55868', 'amount': '24000'},\n {'address': 'osmo1tg0t4x4whh4eeyfyqwrfas0kcd62a8zac9kgev', 'amount': '24000'},\n {'address': '0xf6ddb532a8a768f4174d1cf0d4952b4c689a674b', 'amount': '21000'},\n {'address': 'terra1wpwdlv8lk43ptdr95uj2sn23uqc6uq2398dmup',\n 'amount': '21000'},\n {'address': '0x70dd16eb26da9f0a241010221c1d1dd610ca0393', 'amount': '21000'},\n {'address': 'cosmos1n75k5f0jr9380gye3xqxjyq6vnvdzexj55e55e',\n 'amount': '21000'},\n {'address': '0x8551023317ba480fd5263ca8897d619f383ae0e1', 'amount': '26000'},\n {'address': 'osmo1tju64qu24r2g4xkh5xw3xuguk26g06p6dchu7c', 'amount': '26000'},\n {'address': '0xde5f8f52063c76cd1d0a0022052842a5ff7aa527', 'amount': '26000'},\n {'address': 'osmo1d0u682yp2xvfg5d2429alec5we50wex2nyy7m6', 'amount': '26000'},\n {'address': '0x10ef0f615ed66f7fa60887c019174f75e5d47242', 'amount': '37000'},\n {'address': 'cosmos17ln09gfej2kqsxg239eql9jxxlrkfucfk70cf4',\n 'amount': '37000'},\n {'address': '0xa9f6a44ec8345c68659f5033d7bd0c0c061974ff', 'amount': '26000'},\n {'address': 'cosmos13cpak2f0vznjfyc7ktxjrex0h2st04cdujjxlh',\n 'amount': '26000'},\n {'address': '0xd5a9d2a75f775d159b314c8c1cdd122298e8673c', 'amount': '32000'},\n {'address': 'terra1qtfhzaqvqfawj9px9rkm6m4e6rey96mlamw3fw',\n 'amount': '32000'},\n {'address': '0xd957fc4f4116a1a4efb648559cd0e55db27d9650', 'amount': '34000'},\n {'address': 'osmo1hpj3rxpcufdrsnxjmt0atzydw038r3ye8yxvlj', 'amount': '34000'},\n {'address': '0x9a0e3e616cc0f4b820c9d13af2cd715fc2097d74', 'amount': '21000'},\n {'address': 'cosmos103f3sad30ujj0v0w46zjdq7un8smrf7tde3d7t',\n 'amount': '21000'},\n {'address': '0x11447c8b70fe826a1bd01cf1ed4feadd8928e273', 'amount': '39000'},\n {'address': 'terra1h6vg9yzrjtf0ynlw9wls6zq66w2xufggsr52xy',\n 'amount': '39000'},\n {'address': '0x1afeeb6b95dedf20ae5023c3fdbbf0a9c9f280cf', 'amount': '33000'},\n {'address': 'terra1lcsfs8uv2773kwjg5glgdrx0rysnv89sgtfqxj',\n 'amount': '33000'},\n {'address': '0x543dec161deeda50d2f3492d9e2c87862a98814f', 'amount': '39000'},\n {'address': 'terra12fpqzh2r2f08z5uwmcmsjcnkvup4ghw5pkx453',\n 'amount': '39000'},\n {'address': '0x8a18b710194abc60cec003f0982949d52ae6a39f', 'amount': '20000'},\n {'address': 'cosmos1hpgmw8g063yx8tt47zpcp0s2ugxmu4f8zthfkt',\n 'amount': '20000'},\n {'address': '0x651e5c5879ea47fa27c8942073d395093d64a3ac', 'amount': '20000'},\n {'address': 'cosmos1z7n8k2hgs060c5t28mf6s55cf8yh8ujsd85znm',\n 'amount': '20000'},\n {'address': '0x8d11c3ac8e36754ce8e4286ee06ffcb0d35b7bbe', 'amount': '34000'},\n {'address': 'cosmos12afea826q8hm0jtcvt0849hv8xj8vxkj2gle69',\n 'amount': '34000'},\n {'address': '0x9b044527b5bc39ecbd4ffa32b5cd5880b0393464', 'amount': '37000'},\n {'address': 'terra1g292unc3rngwfump5w0nuyk4k0v95dp4f25y57',\n 'amount': '37000'},\n {'address': '0x5a6eaf2311214714cd84e417e2d1a02984be8679', 'amount': '22000'},\n {'address': 'terra1nvzy0c0ea2ju5u7sfeg9erkxdsk09cg848qsg9',\n 'amount': '22000'},\n {'address': '0x35ac186cc082407d9917d396e49b20239676addb', 'amount': '28000'},\n {'address': 'osmo1a79n02hlwpw72mfvccxlrfll3vu2svnwm9h2ks', 'amount': '28000'},\n {'address': '0x46c7990d2baf05a679e2c8d7df33ae4747f4ee82', 'amount': '23000'},\n {'address': 'osmo1z9l0h060p68q26f0dg2d25r2xv69yg2mm4vfg0', 'amount': '23000'},\n {'address': '0x2ee03beff3d037618e02a3b89e2d76cac0870a1f', 'amount': '35000'},\n {'address': 'osmo18nk8hqp97kqnh0vuyxcqxpr6382nuemykpkmmn', 'amount': '35000'},\n {'address': '0xbb6a0edc40d50c15368932995230a89db736bbf2', 'amount': '24000'},\n {'address': 'osmo1lzhc0cn4zu0ec8wyay9v4u7j2tvn3segw5ztk6', 'amount': '24000'},\n {'address': '0x2f2a8d37e8e4f45f8e65a49d18b32269adf81695', 'amount': '37000'},\n {'address': 'cosmos1hh2l43y6w7e08rnwv7ahqegdndham46wynpw96',\n 'amount': '37000'},\n {'address': '0xd0b647cb5680e64f8f61dafd5398a7e009118711', 'amount': '25000'},\n {'address': 'cosmos18tjelq6ugvrxf3948mjpmyjah6ck7w62qn8xwl',\n 'amount': '25000'},\n {'address': '0x1358cd5d7d4207e04cab033f3795b3876412333b', 'amount': '38000'},\n {'address': 'cosmos1y3956wd7rfwdj3lg9jmd58ghz3eme3fj9nxg70',\n 'amount': '38000'},\n {'address': '0xa68d84e70da19547ce9db1be452db2cfe41de623', 'amount': '40000'},\n {'address': 'cosmos1g403twcepytqz9jqmjay7fytfsq5mmhtwtqmmc',\n 'amount': '40000'},\n {'address': '0x5376dc4894dbf140f727c39ae86d28a6b7f4b041', 'amount': '39000'},\n {'address': 'terra1p4r8u7revmkferjyn2yw2ewq0g2pf8cuf0l0eg',\n 'amount': '39000'},\n {'address': '0xf078f0a8c00d55b9117bd8233783f296611ac49e', 'amount': '27000'},\n {'address': 'terra1vymm8qcrc82l3gmnh9n5r0n3utvc9yv8nnz3vj',\n 'amount': '27000'},\n {'address': '0x8fea4b5129a39a5dc9a7b2532c23976fe2e38e6d', 'amount': '30000'},\n {'address': 'osmo1jhyys663gl2jfzmp3snvhhlrxv6tzmjd6s9p3y', 'amount': '30000'},\n {'address': '0x0c63b0a1ad1de87b625978c825278f9b4b9c544a', 'amount': '20000'},\n {'address': 'terra1463mq9jf6vt7s6z3f3973e8nkrxuu68f7wn6zs',\n 'amount': '20000'},\n {'address': '0x8113e14b1739623961cf7f980ce2e373a04995ab', 'amount': '39000'},\n {'address': 'osmo1afxwqy76py60h2qpclwzfj8t7dz6y3p8ma05cq', 'amount': '39000'},\n {'address': '0x25d0ff7e1833ec5c016f98058fac8637cafaae97', 'amount': '35000'},\n {'address': 'osmo1x99wpyms7yj60qx4ux9t6kev655k6l3v067ezx', 'amount': '35000'},\n {'address': '0xd62cdc9c40ec6644241039edfbfe650bcc8e639e', 'amount': '29000'},\n {'address': 'terra10flmma4fknqaptfp7tvmx79aryncwdyj4757xh',\n 'amount': '29000'},\n {'address': '0xc243e55d2c0daf16833ba34638201294efa087fb', 'amount': '34000'},\n {'address': 'terra1a5t0ga907jzlmxj4z85mdf7rr7l83fhpc5qk32',\n 'amount': '34000'},\n {'address': '0xbdf9fdcfbf8207b08f1b23e3c38dec3ca2b60731', 'amount': '29000'},\n {'address': 'cosmos1584tgd8u70u8qgyg66lwje2g5dad6stw5zrjra',\n 'amount': '29000'},\n {'address': '0xadd44e2f55f28f8bd3c7f7a0335e70aa122abe4b', 'amount': '37000'},\n {'address': 'osmo1xeupdlp34f76440l3xrz84j5ulmxnj0e034mjk', 'amount': '37000'},\n {'address': '0x23040f7f36dda443acc63d97345164dab48215d7', 'amount': '28000'},\n {'address': 'osmo16876x9n92x4znrsjxmwyzevpu5x32s67a8qq5s', 'amount': '28000'},\n {'address': '0x0c332dcdedc91fed6845cb93f3e6d7b50a60db9f', 'amount': '39000'},\n {'address': 'osmo1mh3w6sygrs0z60nzwj44csw6fxxgk9gecydywd', 'amount': '39000'},\n {'address': '0xd1cf07355b3feb081a5cfb04e23b5e4fd62cff07', 'amount': '37000'},\n {'address': 'cosmos1dkzz5xw9ajz84ggxmhvcss30w4k7yw9ps7dxtx',\n 'amount': '37000'},\n {'address': '0x9154a00ac9950754414834a8c71252b3ef34fcc1', 'amount': '34000'},\n {'address': 'terra12m28ku4e7eq3qdgvn69cynel0zvgmy8qyjdwyw',\n 'amount': '34000'},\n {'address': '0x45520eb6773d39983eb91d2b046ff8c947e3efc3', 'amount': '34000'},\n {'address': 'cosmos18d3uw85p8hnva26km6uqtvx83wyghxx9gqwd77',\n 'amount': '34000'},\n {'address': '0x43e85a9e8ea668cad940f1cb6f84e6f8b0a32b4c', 'amount': '28000'},\n {'address': 'terra1drcpns50v0wd6w8y44ym7qw3u869xflqptk62d',\n 'amount': '28000'},\n {'address': '0xc3d707c03c1b638946578083e39ba5c97c80d84c', 'amount': '28000'},\n {'address': 'terra1ppj2cp8zr9ra5tjen6w2ltphttpzrkx87s9hvy',\n 'amount': '28000'},\n {'address': '0x7a5f29588176f76d3d5eba65081990b9ae5848fe', 'amount': '26000'},\n {'address': 'cosmos1spt7k3aw274uw6r4rqmt34zdx3tw8d4km00g7h',\n 'amount': '26000'},\n {'address': '0x5155bcca981ce7b2be123bf28091e82c0403a453', 'amount': '20000'},\n {'address': 'cosmos1meww3zhk3cm9gtkj037cmcj9a7h0xktlp5k4cu',\n 'amount': '20000'},\n {'address': '0x71d21eccf1cd86ef022fd1232be60d0a352cdf66', 'amount': '26000'},\n {'address': 'osmo1djd6lr6la62hplyutahnksd7jwlut25fem6yma', 'amount': '26000'},\n {'address': '0x2b81336056d50f7afb171af158a12cd852cdeb54', 'amount': '27000'},\n {'address': 'terra1zg70t86f6psl9l3d2cwq9rjwk3yzqj9x8gcdlu',\n 'amount': '27000'},\n {'address': '0x0cb9a82dea2f5e266858f451ffc0bbc346b16bee', 'amount': '36000'},\n {'address': 'terra13gmrhhkl39rclldwlxve583srejh8qx85np4ey',\n 'amount': '36000'},\n {'address': '0x9923dca435a0ab5ace679c76f92f773a725217fa', 'amount': '40000'},\n {'address': 'osmo1643j3etaa93ufzezrcv2xst420nsv04enanatt', 'amount': '40000'},\n {'address': '0x0b6d1bb393190e13aea3e676f78c08e7ae3b153a', 'amount': '38000'},\n {'address': 'cosmos12llzujqtsjlvrnv07sqkuaan9gdxgqne7sgq03',\n 'amount': '38000'},\n {'address': '0xfaf14f495053409d2318914215bdaadb60086154', 'amount': '38000'},\n {'address': 'cosmos1zz0yzrxgs4h5zzqnmvtq9fp49k60dt2mxz5t9v',\n 'amount': '38000'},\n {'address': '0x09e93f5937c9525375551c65431642d301452b5c', 'amount': '23000'},\n {'address': 'osmo1v68ydakjxwhcjczyf3c5tlmcey6xra4zv0xa99', 'amount': '23000'},\n {'address': '0xa1f27b3fd2ebbda646da7489224fde0780cd3381', 'amount': '33000'},\n {'address': 'terra1lr8rjkz0ujsngkxlzhmx9t58rqy3kv6r8msgq5',\n 'amount': '33000'},\n {'address': '0x4e6f26ece3ee7664edb4d41a52f796e71ff9ab93', 'amount': '38000'},\n {'address': 'cosmos1llm38279gsh4p44u7pn0ljv2nk3f84dyxgprmy',\n 'amount': '38000'},\n {'address': '0xef81aca42bd8d8c82608f14035172d435099025a', 'amount': '23000'},\n {'address': 'terra107r3lxktfmduvcvtjktpy9l7hf6frnv774qgp2',\n 'amount': '23000'},\n {'address': '0xd24d076060a4612a6c41ebc432db54519619e5a5', 'amount': '35000'},\n {'address': 'terra1c63ahsam0jmxxdhx7g8js30hm7gjq3xz6ap778',\n 'amount': '35000'},\n {'address': '0xa099010b6658fd6d077983ccf3286b5cffd59351', 'amount': '32000'},\n {'address': 'terra10w5prvhmt5jzwxyp0d0xx2yw0j30y7hz3s9gpe',\n 'amount': '32000'},\n {'address': '0x7386d4c15d2f0b94b67ec94fcbb3d24925e29691', 'amount': '28000'},\n {'address': 'osmo1jsq0dx7dfrjg340wn3mxskl42t4vzsfa220gaf', 'amount': '28000'},\n {'address': '0x3fb0b0ce596f3b3ec4689a05f6660129450b9af4', 'amount': '32000'},\n {'address': 'terra120prwl5v260ndpm99804tehcjyegy505jfk4lz',\n 'amount': '32000'},\n {'address': '0x54b7572fce9afc1e4d111be44f4167be31b4ceec', 'amount': '24000'},\n {'address': 'osmo1emfauyl90znpravdm9383fmspnu7y0lk78nypq', 'amount': '24000'},\n {'address': '0x0dbc30e055c17fd5868d8a477462b206c2ec09f3', 'amount': '34000'},\n {'address': 'osmo1kc8yvay3pkn7rx8x6242yk5reyzrmmg0we4yu0', 'amount': '34000'},\n {'address': '0x9d6fabf49bb5faeaea55d8106090f2c3e33937ec', 'amount': '23000'},\n {'address': 'osmo1mv0q4ta3rzl5remnj77xs76jv0swk6ldyv4w4m', 'amount': '23000'},\n {'address': '0x36ee52c7798f6227550c44136e540a66aa3f944e', 'amount': '35000'},\n {'address': 'cosmos14kzj5qmcfgtracl6p36a7pfcqwezychf0tl6uf',\n 'amount': '35000'},\n {'address': '0x811c19180d88b92e59703623d547c3fcab05f166', 'amount': '21000'},\n {'address': 'cosmos1ustjm4ufn27gquys86gwfdkh5dyz7gkzvqyas2',\n 'amount': '21000'},\n {'address': '0x0fbd5b6547c98170b144c1a20ef2949b8aeb1de0', 'amount': '20000'},\n {'address': 'osmo1f88qc927722fd933vrpm2n7e3xxtrrzx9jq77z', 'amount': '20000'},\n {'address': '0x3499cec91c81d4e204db632b57aba09f9ca885b5', 'amount': '26000'},\n {'address': 'terra1k98acm2z0fgkrcu78u5l0tdjgmgzmxcj2ksudv',\n 'amount': '26000'},\n {'address': '0xf4d986ef8a04d06561a1fcf9920d7f991b9273fd', 'amount': '31000'},\n {'address': 'terra14veyvk0vcl5u79kk50msvv7nf8e4yak24yztws',\n 'amount': '31000'},\n {'address': '0x6302db48f4e16c927c385c637135febc10059412', 'amount': '24000'},\n {'address': 'osmo13ayhj34df09jsygx9g5zprprkv99scvzzzexw6', 'amount': '24000'},\n {'address': '0x8f7e9f4feacda5f321bb1827e9abaae04434d6f1', 'amount': '24000'},\n {'address': 'cosmos147sh44f48cdv333y0ghrzxp9d9fp69uhkxq6qw',\n 'amount': '24000'},\n {'address': '0x40714677d19b3a2560c33d273f81fa9130d0a113', 'amount': '27000'},\n {'address': 'terra1prm69sfehj6fqw4k5mlxz65vvdqlsq5t054f8a',\n 'amount': '27000'},\n {'address': '0x5ed7a4acac690dc64375d3501f471a29df65ef8d', 'amount': '27000'},\n {'address': 'cosmos1xqhe3alyshmnhrpsl8ynknr695ult3vnt0dl27',\n 'amount': '27000'},\n {'address': '0x023be372d76c54280d8bb18d20ae109e0f016862', 'amount': '24000'},\n {'address': 'terra197nnzn0k74g5tzm6p2x9d7luxvm594ksr5x54n',\n 'amount': '24000'},\n {'address': '0x5eea845bfc582083c3a5e5900a06d2096bead1b9', 'amount': '22000'},\n {'address': 'cosmos1xpl3mevj35l6n5ryvtccs7u9kewq4gkgk0pgtr',\n 'amount': '22000'},\n {'address': '0x1997f7066bbc248eb48ce4b60788292c90caf470', 'amount': '37000'},\n {'address': 'cosmos1t98drv88f72rxa0a2pww2amu5t98gfpnxaskpt',\n 'amount': '37000'},\n {'address': '0x735eedd2dea49e5fac51da820feb6e0f857e9b27', 'amount': '30000'},\n {'address': 'cosmos14a3hej8e45fc8hxlxsplry4nes7nfc5t5vv8lz',\n 'amount': '30000'},\n {'address': '0xabea12a39a1627c75edf9b0e96d4c4602e78022d', 'amount': '29000'},\n {'address': 'cosmos14x2sq6feyxwqe08qnrvv2etlzrq69eex6mlevl',\n 'amount': '29000'},\n {'address': '0x4a369f225730e72b0e3923729ee341e928c37756', 'amount': '37000'},\n {'address': 'cosmos1dzgxttwy6j6cnscmhyxdswwrs3q363hlczfsyq',\n 'amount': '37000'},\n {'address': '0x6df66699ef8cd70ab8e002396f4d34c9fa58db1b', 'amount': '24000'},\n {'address': 'osmo1nkk0w3muwvlg9wyccfrjvm43ll4t8ny47cn5rx', 'amount': '24000'},\n {'address': '0x38f3e91f0a32aa160536b7d89158219b5493ca4f', 'amount': '25000'},\n {'address': 'terra1wvwx60wxtjnfsfgqtx3wg7exja8vl74xf080g4',\n 'amount': '25000'},\n {'address': '0x58461a6e394f9bf6519b74479a8804621d5e5c67', 'amount': '37000'},\n {'address': 'cosmos1p87ax0xx69a5l2s5qhzjvfep7mraz95d79eten',\n 'amount': '37000'},\n {'address': '0xb254b5d3a9dee4cfb1a0a132d8a611edac4e9304', 'amount': '32000'},\n {'address': 'cosmos1hjdlj52wdj9ud8ka3hlkctn2dtvcvyak9yxmdq',\n 'amount': '32000'},\n {'address': '0x65e0c2abb36da86365f2cfe1ba49c20645f0d714', 'amount': '35000'},\n {'address': 'osmo1vd4mg8ju0fe88k68vvt3jqhvquqqhvkht0jngh', 'amount': '35000'},\n {'address': '0xaa9b7744c4fbbb14a3812026439795897a946f01', 'amount': '38000'},\n {'address': 'cosmos1xmytgrvak5pga0zapfzd52hsfmt362q8aa67nh',\n 'amount': '38000'},\n {'address': '0x3379c66297baf8c97840a3a007b812214b1a94f0', 'amount': '39000'},\n {'address': 'osmo1nauxs58hg3xuvqe43hp27m8qlautqp76k9vel4', 'amount': '39000'},\n {'address': '0xc6e29340db5da88b19a53e0a85da1dcb15515ab5', 'amount': '21000'},\n {'address': 'terra14rft4llu0y3vz47909vtlrw05x3n2edtn9ulxs',\n 'amount': '21000'},\n {'address': '0x0f52b5785ce62fa25cea41d9797c492923d685c5', 'amount': '40000'},\n {'address': 'terra1zj7r5q0md7t8hrfh6py5g7mxeqreth5ktgqytv',\n 'amount': '40000'},\n {'address': '0xfcb77c64853f80f4f8c786d058dc280824b4801c', 'amount': '33000'},\n {'address': 'osmo1vs8thvn5p24pc6rxy3gleqcwkk2yh0m74uw5ft', 'amount': '33000'},\n {'address': '0x4c8ea0db7e83e7789d117a483889c28b919ca8d6', 'amount': '33000'},\n {'address': 'osmo1e39h3q7ugxmmh53tj0uqull3cg7jewqjg7wfqm', 'amount': '33000'},\n {'address': '0xb132028d5b8a0d8bc51216d6e04dbce370325f59', 'amount': '34000'},\n {'address': 'osmo10q70x4qrkl77sr8rggzua60jtrxqyy5xwpm472', 'amount': '34000'},\n {'address': '0x78d3e4bf53d6f8afff4ef265b834e5d201e3f5ab', 'amount': '26000'},\n {'address': 'cosmos1fz7u4aa50j86q7l86c4f96qu95mehqd4rsnxs8',\n 'amount': '26000'},\n {'address': '0x8786d98fbd460a2e907fb087922797d3106ab998', 'amount': '24000'},\n {'address': 'terra1y3ul7dtz7u0m3zygdsptm6a4qs3v5zq9h4hsha',\n 'amount': '24000'},\n {'address': '0xa4bb2556b3b465e558bf922b30a65f7df312a58a', 'amount': '38000'},\n {'address': 'osmo1kd37tahxxtwwv8g2fnvxh7ujqgdme8z9un5lr0', 'amount': '38000'},\n {'address': '0x5e7cc9e1c62db0900647cb93b4190a6973eac79f', 'amount': '33000'},\n {'address': 'cosmos1ahpcs04a0g37j3gskxuxp7xsq3vfldn0a46j2k',\n 'amount': '33000'},\n {'address': '0xcafa58fa7fd45cb4df789a2bfd2437e22246c5c8', 'amount': '26000'},\n {'address': 'terra15jnanjdrdhmedpgld2rcqtjg96suu3exyv7pxf',\n 'amount': '26000'},\n {'address': '0x1e7b52b00f27d05e994ead60201c4f28556b912f', 'amount': '32000'},\n {'address': 'osmo1k3kds5p8slc64rltwgq5jc49zm46s4qv388428', 'amount': '32000'},\n {'address': '0xe628c0a5f73508cab614992cfb47ab044d77474c', 'amount': '24000'},\n {'address': 'terra1cwzlxmen9kswsv336muj3f2c3vs32v2xafq9wg',\n 'amount': '24000'},\n {'address': '0xbc6b4a723359f6a112c447f8952b4a3a43b2be0f', 'amount': '21000'},\n {'address': 'cosmos1grdnehv5y7ftyku9d9eulp6q0lp8wxwahfz2ty',\n 'amount': '21000'},\n {'address': '0xfe6182f049a929b316fa9522161132092d160999', 'amount': '28000'},\n {'address': 'terra1mqu3lhgsfmswdksszfsysj03a8ue2yr6m37hxe',\n 'amount': '28000'},\n {'address': '0xa3f19d7e581ec714ead4edc2e78086c3a0dc6537', 'amount': '36000'},\n {'address': 'osmo1z604xqr2ykfdphrh30hg4ygfxm4zenup83t7nd', 'amount': '36000'},\n {'address': '0x46eaf11d02f4959841b3235cef5cd8b795573f18', 'amount': '40000'},\n {'address': 'osmo15pee0fczvsmwglsczsu9e8rfxmap0uz48wusqf', 'amount': '40000'},\n {'address': '0x1e4ba70d0e8be379e9826b3b32a3a6c00057f9e1', 'amount': '36000'},\n {'address': 'terra1ghrzsu9xw59ff2enntntluazrtxepyfvcqsdzc',\n 'amount': '36000'},\n {'address': '0x8e1d568041a36f6645a114bfb706d0e4f3a8cd60', 'amount': '29000'},\n {'address': 'cosmos1s86d0dfk377sng3rk26dc67n3ft6ea9m06phsy',\n 'amount': '29000'},\n {'address': '0x8149d61ffc2aceb6ba34c115704209a9215dc0eb', 'amount': '26000'},\n {'address': 'cosmos1va4cmwftyp7yqgmdcy3cgev9jknxyupfheenwk',\n 'amount': '26000'},\n {'address': '0x8afe93b6501926739c47fafdd2d85438ca71cd26', 'amount': '35000'},\n {'address': 'cosmos16jkd5xuhp54krw9h0k2yy5lgzdnzz9fwa9jqw6',\n 'amount': '35000'},\n {'address': '0x873f4a5ae604c57c9ef3685edba1134b459bdf7a', 'amount': '35000'},\n {'address': 'osmo195a457tp5j0uw3t5gna7j9y6cp2cmq76mcm6u4', 'amount': '35000'},\n {'address': '0x36ebce3e7ba9f26cf268635e94f4e14ec7b72f6d', 'amount': '40000'},\n {'address': 'terra15uzrd87n7s92mgnzyujtde78xzr6gdjfaz6srz',\n 'amount': '40000'},\n {'address': '0x340067270bf7d19b02620809af176dcd67cc52f8', 'amount': '25000'},\n {'address': 'osmo10esk5ta5qtj7v4kaphshvjqah0056ze82fj8s9', 'amount': '25000'},\n {'address': '0x1ec71b78bc24228c0faa8c797e9f9cbbfcf8e78a', 'amount': '28000'},\n {'address': 'terra1js5k22fmxcuwza7mluua453k2lsxftl57ua6nr',\n 'amount': '28000'},\n {'address': '0x656338e222edc062d7b2b34b3b1643fc15917ed4', 'amount': '21000'},\n {'address': 'cosmos1s576a8e8w0fp76s5ngp6yleehk7p92zu3yq938',\n 'amount': '21000'},\n {'address': '0x1155da8b74f19e8d781935fb42e2744c422af395', 'amount': '24000'},\n {'address': 'terra1qnytzndxfxzu44puwdnz8vfrepm5w79usf0g6a',\n 'amount': '24000'},\n {'address': '0x8edd644472e86329d36c419ef44b6549d31416d3', 'amount': '38000'},\n {'address': 'cosmos15vyr8mn36wg8lncnyswwa7kdemjaen3e5a7r7q',\n 'amount': '38000'},\n {'address': '0xa9a10380dbacd11ee29adb6689e854c91485262c', 'amount': '38000'},\n {'address': 'osmo17pzlvj9ash9ck8rqh8nt0ag9feh4dsjhz2rhrm', 'amount': '38000'},\n {'address': '0x961b6c9ea42c5029d5d226759faf04f14e4a7e6a', 'amount': '37000'},\n {'address': 'terra1tm0qzqepuqqng2jrxs63hu7td3k5pds8awmm50',\n 'amount': '37000'},\n {'address': '0x6297f70dd6bf27f83865934cdef6c0af45b6621a', 'amount': '25000'},\n {'address': 'terra16hhjm2x2h3nekyvawxyecvwa8swdfndht9nv5w',\n 'amount': '25000'},\n {'address': '0x86e66afa3b3dc4341f5a1d7540f03d13d9ca4ca6', 'amount': '29000'},\n {'address': 'osmo1vkzcrfmcyupz4tz7utvd6lh5x80ev7mgpyxqt9', 'amount': '29000'},\n {'address': '0x0337a27d6fc662fd1f55284bb621a11efc1965ab', 'amount': '33000'},\n {'address': 'cosmos1t2k9fzlfqps9xfl50kahl32vtl7ahghg5kpwss',\n 'amount': '33000'},\n {'address': '0x339f8aaea592e8793ae59bec3b612ed46c921e80', 'amount': '27000'},\n {'address': 'terra1yj7wd9rpvjpmxv0sn75p7q8zgx8p9996etel6p',\n 'amount': '27000'},\n {'address': '0x690d935677c407208cc76762eea7f8ee31882c5c', 'amount': '31000'},\n {'address': 'cosmos1m82xf3gk7t3g3pgh5tt7k07l5rj822kpr29hg3',\n 'amount': '31000'},\n {'address': '0x9a69f2833d458ca280c17a062bb69c60f35beb7c', 'amount': '30000'},\n {'address': 'terra1e5wa9naa9z3pzexcl32fw5rye8nmpa3d9kg600',\n 'amount': '30000'},\n {'address': '0x3ea43f2d62191577f3201c3c3ea366d41f57c7ae', 'amount': '30000'},\n {'address': 'cosmos1ylkkhjx33lmmqd34fhp3lp7h7nppkkh3skesry',\n 'amount': '30000'},\n {'address': '0x5f7585fe01a955ca60ab515941a40c17be5aef45', 'amount': '33000'},\n {'address': 'terra1hru5kp5kmggth9frlj0yhd9mz2lt7hmaa6vpty',\n 'amount': '33000'},\n {'address': '0xadad4442aa4d2be614eca92a98defed69a668b7b', 'amount': '37000'},\n {'address': 'cosmos1dj05hlu3c7w6h3tgwlrnygvx44r30jy66k8c00',\n 'amount': '37000'},\n {'address': '0xf560dde229cdbc8102207c40dfec4f5098eb3cd3', 'amount': '32000'},\n {'address': 'cosmos18g62ucs3helr7qkzlaj9ftzslunawsmh4eczp9',\n 'amount': '32000'},\n {'address': '0x8d0127b27f3fc089364f5dc3566ec77a0a1d8c5e', 'amount': '38000'},\n {'address': 'cosmos1a4prhqhncu5anhsk9qpk56wejwgpc7y3xm7794',\n 'amount': '38000'},\n {'address': '0x61321bd735c2c8ee25176fafce4f6ef78017c6f9', 'amount': '39000'},\n {'address': 'cosmos1fs39l7hqmwjrejuf6q9l8zyylm7jxyywh5kjza',\n 'amount': '39000'},\n {'address': '0xd4619fd1c7f861a04f43b7a1f12f590f2404ccdb', 'amount': '27000'},\n {'address': 'cosmos14rg7jk865mgyfw4cmgfkexfaajmn44h7lmyj5l',\n 'amount': '27000'},\n {'address': '0xa8ef598e9f8457febcb2885fc6a96fe9ed9eea8e', 'amount': '32000'},\n {'address': 'cosmos1rqtg2fxxq2zmrdm7y8q97xptu30mx4tk9ahpu0',\n 'amount': '32000'},\n {'address': '0x6559687f07b41ac2c53a653e981145cc3eceb964', 'amount': '38000'},\n {'address': 'terra1wqtgdr6kh6rtlyfa9psp2ydt63jqvapf4wvr8d',\n 'amount': '38000'},\n {'address': '0x9156771935482ca4680cc1167192b0581d97403a', 'amount': '37000'},\n {'address': 'osmo1wpjs8efvk3u88zlertrx6jxrh4y9qjnz2whcz2', 'amount': '37000'},\n {'address': '0xe0c98a61a8016f085181a7c559b789bfb6e8ccca', 'amount': '25000'},\n {'address': 'cosmos1eyvv6479sascpdn0twmpvdcwxqp7000m3xcfe0',\n 'amount': '25000'},\n {'address': '0xe08739e3fa2896fd52bbdb87807456f600707080', 'amount': '36000'},\n {'address': 'terra1qk2w66fcuju80vgscvflnpnyhx7v0svlaahs33',\n 'amount': '36000'},\n {'address': '0xeb47bc44e91641c2058c104c39c3a89a8862e08a', 'amount': '24000'},\n {'address': 'osmo12xx60wdjffyew2jljujc9yfdq2xl840furgu2r', 'amount': '24000'},\n {'address': '0x9785fafad353240cfe282537814c2964a79fb429', 'amount': '22000'},\n {'address': 'osmo15twc6r4wlyfu5kl6pzf020zey2sydgfkprx8z0', 'amount': '22000'},\n {'address': '0x03d800a52706962894359596d6106c00fa89a449', 'amount': '29000'},\n {'address': 'terra1zs8t7kr3v0qruued6hpkzkkk66j0xk8py76zza',\n 'amount': '29000'},\n {'address': '0x9ad62edd79974b6580d9cf88083adbe034051427', 'amount': '20000'},\n {'address': 'terra1dn620sh4sf2mdsu7hcrtpry7geqkf5rfftjcdc',\n 'amount': '20000'},\n {'address': '0xfcf9d2d523fa460aa9b1ef7850a805f5a100942a', 'amount': '37000'},\n {'address': 'cosmos158hemtpzhj9n2vnrnajpj02emvqujvn05mqp83',\n 'amount': '37000'},\n {'address': '0xe6fcfa39833250ccc3cb444a0bd972a5639ab939', 'amount': '22000'},\n {'address': 'cosmos1h49ltj5kudkfw9gaaa4h659ut4t6snrhc7s37r',\n 'amount': '22000'},\n {'address': '0x7f228565dd52efdba910767d2b7946ea9e9cd3ed', 'amount': '23000'},\n {'address': 'terra1n3qcn5zl52rvz22qdv8jajqs39j973zjrl8v6u',\n 'amount': '23000'},\n {'address': '0x46e5b84eaf248e5bcd580eea68364260de247715', 'amount': '35000'},\n {'address': 'terra1zxj4g7nlqtnar0rwrh8l44phft88ndgl7t0wus',\n 'amount': '35000'},\n {'address': '0xb0232c165f019df2bed38b40a8eae4048c150db1', 'amount': '34000'},\n {'address': 'osmo18tnnkf70gv7da0s3asn7ajmnj8wtnz29xfhml6', 'amount': '34000'},\n {'address': '0x6cee957bdfacd59814325ccfb4a070b14f51e4e7', 'amount': '27000'},\n {'address': 'terra1je7630jsp7k3hcukxh7ryl0ug0ufy2qqwfyl4p',\n 'amount': '27000'},\n {'address': '0x45c55009833b953fb8b18636104d4765de11e968', 'amount': '26000'},\n {'address': 'cosmos1egsr7fgrj229k2e764rwnl0jpcusyrjatyavsw',\n 'amount': '26000'},\n {'address': '0xc603b4f2db3405926a646fa3132a39f5e6a86160', 'amount': '32000'},\n {'address': 'terra1yknqmmf3s2d6eve86w98cda90snq2l4u3879kw',\n 'amount': '32000'},\n {'address': '0x6bf1f6663b730a55ff77b55411aee1ee022cf3c7', 'amount': '26000'},\n {'address': 'terra1tguxdhntr0alrjvvp7d3s8nn38rm5jnxlqd0fg',\n 'amount': '26000'},\n {'address': '0xbba80e157437cd19f96fada6706136e22fc6b4b3', 'amount': '38000'},\n {'address': 'cosmos14epxq3ep6xhjpzp2xr30r3p5ucrt5pnftfxq3j',\n 'amount': '38000'},\n {'address': '0x817c4daad9b5b813efbd1b73a5abde43cf15bbe3', 'amount': '25000'},\n {'address': 'terra1cdsn706qrul2xrwzggwn4rppnckr7grhsju94g',\n 'amount': '25000'},\n {'address': '0x70a0762e85414ec9f84e62b39e6db4b73bcc6e74', 'amount': '39000'},\n {'address': 'osmo1je09ur9lv3falh6pttu5g628m6qr7q4uewhpkh', 'amount': '39000'},\n {'address': '0x4e13d5c3a4fe7ea8e3c86990c2e958ac3663368e', 'amount': '29000'},\n {'address': 'osmo15ml5nzqmypfhj3273whsht8j2wy4rmyy7yml0w', 'amount': '29000'},\n {'address': '0xdabfe11ecb1b3b24173e09c3e9436f90207ef7d3', 'amount': '23000'},\n {'address': 'terra12pcsa6pxw4su4alzuqq9s6rxzk3vku6f8wcm39',\n 'amount': '23000'},\n {'address': '0xf6828501fabefab91893afddf2fe21d9c9761a7d', 'amount': '21000'},\n {'address': 'osmo1rp25h7d0vjt8sc6kgrgumjg07p9lnqj5fl0n96', 'amount': '21000'},\n {'address': '0xfce95041218de15762995e4939ca666a259a2569', 'amount': '33000'},\n {'address': 'osmo17c8g0ag36sjhvyx4kkyaywcqnjm9fwfmu9f928', 'amount': '33000'},\n {'address': '0xef5007330712a3015e22ab13f19052c6e6cc176f', 'amount': '34000'},\n {'address': 'osmo12y6kf9jwg762tshw27huzy6sj6d44nuxphy4uc', 'amount': '34000'},\n {'address': '0xbf457c36c04dd1fb5c08d1ea853cc71069256d37', 'amount': '25000'},\n {'address': 'terra1aszgtmjemy0yn7e04e8eus2acdycweu7680pan',\n 'amount': '25000'},\n {'address': '0x009ec3a393f161e1a2a14e3a20dfdff7b3818cf8', 'amount': '34000'},\n {'address': 'osmo1nkazcyf55kx6nnxt9n9980ntsnxqwggmack36n', 'amount': '34000'},\n {'address': '0x145194538af45b163f423a74a6c21982635a2b53', 'amount': '39000'},\n {'address': 'cosmos1mkylpyrl3y9r9h0d9ll7xl3qlwsh499uyep4qx',\n 'amount': '39000'},\n {'address': '0x613c9008dfb129b87936b9e2a53a64f17d2e48b0', 'amount': '33000'},\n {'address': 'osmo13lpcvqv9xtjxlgpu5e8gvea2gw6v3dyml5ljsk', 'amount': '33000'},\n {'address': '0xa8b71e65aef1801d59a9063a2167be55be66b6a5', 'amount': '28000'},\n {'address': 'terra1af3x48y3xzkwd53z80t0y7vve5eh4wvz60n0cw',\n 'amount': '28000'},\n {'address': '0x7733887c53747d45dbfb605e45b81f19ed0f6f9a', 'amount': '36000'},\n {'address': 'terra1ew5ulax86fu4e4d6vcm3c2ypdpy0ar4jqmgw3m',\n 'amount': '36000'},\n {'address': '0xacc45925ef0cabfcce3bd6ac29a670d69edd0506', 'amount': '34000'},\n {'address': 'osmo1yumj5rrgkfhqhsxuskeq6ltqlzn0lw9d7av5ee', 'amount': '34000'},\n {'address': '0x0fab2ab9e7f7ec00a7c160761fa844ced07a032b', 'amount': '33000'},\n {'address': 'terra1zj77rg55ulldldx9xhee7836m5xrg8k0h5dlja',\n 'amount': '33000'},\n {'address': '0x11a173cbc3e9e470e9311dce93c1207c3ef82fb4', 'amount': '26000'},\n {'address': 'terra14dtaen48gpm2tt0xpw2vhx78ydtxvsfnnu4vhx',\n 'amount': '26000'},\n {'address': '0x3bab3459ecaa5c66519ef976f445bbb430205dcd', 'amount': '31000'},\n {'address': 'terra1gjsg5cqcmqhtezq6vah7yw7huqt4fxv3rrz252',\n 'amount': '31000'},\n {'address': '0xb4e4b67066b28be6079937af2c982412b69c00c2', 'amount': '30000'},\n {'address': 'osmo1sqsdl3t70y6l8jd9yvvexpu0msjwq6sf95m9lh', 'amount': '30000'},\n {'address': '0x15f3e2eb0d218422cb3e9f709ad994db314a29ef', 'amount': '29000'},\n {'address': 'osmo1q6m6awn6y0q56h9m8vft293pftd3jkel293rvv', 'amount': '29000'},\n {'address': '0x39cebd8727ccf2b104027681587d25ab0ec32f1d', 'amount': '38000'},\n {'address': 'terra19dxpzcth3nqh6er8t2qy5pm9v9dm7f4ph283jx',\n 'amount': '38000'},\n {'address': '0x5ca676785a0a2f372294106ba172557b8affe2ab', 'amount': '29000'},\n {'address': 'osmo1l90qazxt6gtsxujr5nryl0989khppwn4y8f5ek', 'amount': '29000'},\n {'address': '0x7b34cabb55af3aa0dc6268e1e17b681151528226', 'amount': '26000'},\n {'address': 'terra1rrfen8krca6g05554kr7vrllplpeak0y65m5jt',\n 'amount': '26000'},\n {'address': '0x43a96c0468b61a2e7fe55c3a9cd51350488e66ab', 'amount': '39000'},\n {'address': 'osmo1ec3kxzstqt27c5vfkjzm4caxzln6hwwu6wfdez', 'amount': '39000'},\n {'address': '0x1e5eef094617a89b177109e0b4571a61505be434', 'amount': '37000'},\n {'address': 'cosmos1qde7vv6mah9ttcm0w3n3pmvgsg77eml7u06q9n',\n 'amount': '37000'},\n {'address': '0x000419abd780eb22b8719a76aeea7625c47250c5', 'amount': '33000'},\n {'address': 'cosmos1nl7awarslsx4qk5pl2jd58ulyvvnt7d74ym0e6',\n 'amount': '33000'},\n {'address': '0x9b8bce688dc85edc44ed8018a34260dc407a32be', 'amount': '20000'},\n {'address': 'terra1mkdvj8fh89km46fm2f68lcfwj05n2vy6q82uzg',\n 'amount': '20000'},\n {'address': '0x0128e5085105079c6e53069e0a16aaa6d7d6198f', 'amount': '33000'},\n {'address': 'cosmos10yv7v3pk9v8lwtz2emntmka9lzk90lkjs5255e',\n 'amount': '33000'},\n {'address': '0x82bbee5240bde6754da9a7e9b067bb7b54b767da', 'amount': '29000'},\n {'address': 'cosmos1j6fh8566qkmndepk3chd0fg58a39rnnqzta5w9',\n 'amount': '29000'},\n {'address': '0xd8edf404609a67187f7ad238d505540cfaff641e', 'amount': '34000'},\n {'address': 'osmo1vuhhw7k2rlxxna8kfzm9dkpazf62qx7mvfuy9z', 'amount': '34000'},\n {'address': '0xada0b744b0b06152c1302828f6b2e487a6cedfb5', 'amount': '23000'},\n {'address': 'cosmos17s9xxnkvtgepzv8t9kqmv4q5w9z5jl4elsqt69',\n 'amount': '23000'},\n {'address': '0xfb15bff3bab570eeae9594745e4bec366093bb04', 'amount': '20000'},\n {'address': 'cosmos1np3zr4um8agcp0ewhta2xw72q5lh7ydsqpcftk',\n 'amount': '20000'},\n {'address': '0xe5659500b0a80805267f067d8d7fa5866f3cf858', 'amount': '23000'},\n {'address': 'osmo1un0u4dazcaph6fwe9th4cjt94vjmnednuv0gpv', 'amount': '23000'},\n {'address': '0xef43f6331d96cf9f93bbf8c695d9f1bc538df313', 'amount': '21000'},\n {'address': 'osmo1mxhzhxm9929d3xx2wn8nmz8v927p8g7ql4p9nd', 'amount': '21000'},\n {'address': '0xc3eee179517271a8e9d80a12ead1e93078c52839', 'amount': '22000'},\n {'address': 'osmo1w9zz2egxqn8tjtgqe0zts0u26ypgwq8ka4rpcm', 'amount': '22000'},\n {'address': '0xe10857196d2c80b8832f2bf31d7223091efd8004', 'amount': '33000'},\n {'address': 'cosmos1k23wt94pql008qx42yd2mq53j3f5hszdjqaer8',\n 'amount': '33000'},\n {'address': '0x145dac86f4fff76876220f87ed8d085105eefe7f', 'amount': '39000'},\n {'address': 'osmo15pcddut84d9cx7x6pdm4ay7ea5n7l9n9mqxtn7', 'amount': '39000'},\n {'address': '0x858667c4a3c75052d6135544b162550485731f51', 'amount': '23000'},\n {'address': 'osmo1646d8d89my2f9akgfhrlnfspfwrq96hvsnnsue', 'amount': '23000'},\n {'address': '0x613ebcd174cbe830470ff0db487ee88324aa510a', 'amount': '30000'},\n {'address': 'osmo1c9wqjaq3797pxtgq3feu8azjxnecp356r0whv0', 'amount': '30000'},\n {'address': '0x6c67d28a354d5c558725d6f8accf804228f18682', 'amount': '30000'},\n {'address': 'terra1m7cn09p062aucxg9nzlccez7vr245rh2hrp4r9',\n 'amount': '30000'},\n {'address': '0x1804d8e6759ed9a9a45beda1ac438aab21feedd4', 'amount': '23000'},\n {'address': 'terra18ag3w8v0s7zn3jkzjq2gxdjlznryfdh6gg6zrp',\n 'amount': '23000'},\n {'address': '0xfa6b3b50b9efa5f6e6b882d3bd3c2df161001c0b', 'amount': '31000'},\n {'address': 'osmo12dn2zry7csvf8kjh6zy34aqdsz0hgmxgh4e5z2', 'amount': '31000'},\n {'address': '0x652f35466fc7f47fa072c37e2f8bdbd7fae84a1c', 'amount': '24000'},\n {'address': 'cosmos13sgdrlvd438vtkvlyvf2lgsk0y8j0043gsee6n',\n 'amount': '24000'},\n {'address': '0x79d07098f133e57d4af166befdaac444f3047062', 'amount': '20000'},\n {'address': 'osmo1nhudyvh2qypjnrcwcsp9cv9950j98flht7dutd', 'amount': '20000'},\n {'address': '0x89215855c9703c8c1b5511bf3981fac9e9be361c', 'amount': '29000'},\n {'address': 'cosmos164jrtuxr6xmqxag6j725shfawkh3erl03tklfd',\n 'amount': '29000'},\n {'address': '0x42b9866f80be4f5a40dd76381d879a77e2f23c5d', 'amount': '23000'},\n {'address': 'terra1a993zry4jvzukjpkyywd680zqncwp88fm0qy7c',\n 'amount': '23000'},\n {'address': '0xc7b288140ee2c8d4be8eac418f1d12ca9efee679', 'amount': '37000'},\n {'address': 'osmo1987zexmnnzy2yt7stqn72a7rtwnefkh583yyqp', 'amount': '37000'},\n {'address': '0xbf5772ebbf61e6428a7c3227e08be4b3397975b5', 'amount': '27000'},\n {'address': 'osmo1gk7gldypgvuyvakfs0v7xk50wxnhdepa296yvn', 'amount': '27000'},\n {'address': '0x2d4cfcf6a8b051b82708d79787c4f8c23d71ee8e', 'amount': '25000'},\n {'address': 'cosmos1rkxp0fktmtz2fnukuq0atsgnsal7m2l5chz869',\n 'amount': '25000'},\n {'address': '0x25a0ea22e3758dd19e1b36da57b417a6b98d1a46', 'amount': '26000'},\n {'address': 'terra1lmzmdcap0xu4u26a7gt6p7lrsp46sjqc8482lx',\n 'amount': '26000'},\n {'address': '0x4c82185ad62b6bd74b955faf2cb772b673216be8', 'amount': '36000'},\n {'address': 'terra1gt9u5qp678ua6u7ump2xzqs80jhe6pee7qhmsn',\n 'amount': '36000'},\n {'address': '0x22652fdc849d38a68f091662d104e4a9d1422fb4', 'amount': '37000'},\n {'address': 'terra15myxhpga42mxazcrxghulkaxh6rd90jc578d9n',\n 'amount': '37000'},\n {'address': '0x97d6fb5a1e7f8631249e7e3ba33f731ec364c438', 'amount': '32000'},\n {'address': 'cosmos1fvqwff203m8wdayqdspfxtchxx5nha2jk5r54c',\n 'amount': '32000'},\n {'address': '0xca8f44c5bec7666caaef5e389691fa9f85a8d58b', 'amount': '29000'},\n {'address': 'osmo1cswandwmq6t2xey5dgdw6q8cmwvhq303cq8796', 'amount': '29000'},\n {'address': '0xbbac04c1bb23b48569a46d81a4bd423727a3b11c', 'amount': '36000'},\n {'address': 'cosmos1x6fqy3hhl776zse9yv2d7gtlc3q2qmk6a900dd',\n 'amount': '36000'},\n {'address': '0x17c78fb91984d2a4a93d53c69fe072851b74fa60', 'amount': '27000'},\n {'address': 'osmo1a0w0a8jt00znh8m445ys2mqcktp3n0d80vgttc', 'amount': '27000'},\n {'address': '0x50b0038658b05b32bcf88f20e765341550fc6f10', 'amount': '27000'},\n {'address': 'terra1nt9dg6ftg5c94l8d8yw374s5u7cpq6vzdsazzv',\n 'amount': '27000'},\n {'address': '0xa6301c0a8afeda51e24ce26e6aa858f08fb7afaf', 'amount': '31000'},\n {'address': 'terra1ucn5qlemae3jzg5xekgj8598czx30rlmgg64c8',\n 'amount': '31000'},\n {'address': '0x558e75308f763a00e94bbfe36179bb13756a1891', 'amount': '34000'},\n {'address': 'osmo146kxjceuvh2z3zw8nzlzq004lf8cwghrfkw2ut', 'amount': '34000'},\n {'address': '0x6fa9661743c9ed6542b6c510e76ad7c7be489354', 'amount': '24000'},\n {'address': 'cosmos138vl02wr58zlps9rdp0udhf0689gcz3nm9zuqw',\n 'amount': '24000'},\n {'address': '0x12f48b1b59a156dc3945fc74887d531fb70a0a6d', 'amount': '39000'},\n {'address': 'terra1tshc3wf57aqgcc76ufk90qxxsadh37ev7e8xuz',\n 'amount': '39000'},\n {'address': '0xd1cd48f7dd0f25daf91f97cd4995b94402c6e153', 'amount': '34000'},\n {'address': 'osmo1ayp0rr0nk9ps6dfdr6cjk7ufme8u2skce35zuw', 'amount': '34000'},\n {'address': '0xce70e8fb2cb0588e5a656e4688e0cd596e64bf5e', 'amount': '27000'},\n {'address': 'cosmos19c0xm0msg5lan8juvv5c8090f07ea8pltj6dn9',\n 'amount': '27000'},\n {'address': '0xbd2f852edd9ca743522a9ead5d80ae7cae092a84', 'amount': '36000'},\n {'address': 'terra1zr8v8wumevwk8907esvav2af9vgf5dd8eku09y',\n 'amount': '36000'},\n {'address': '0x0b9c5f18f54878e14979afbb95420ac335c27f2a', 'amount': '37000'},\n {'address': 'terra1lepml32dm8nns3w75dxm0lxy2uusk7cg5d9exr',\n 'amount': '37000'},\n {'address': '0xd40322817643730a445cd76f405aee03bcb198fb', 'amount': '30000'},\n {'address': 'terra1d2qrnkj4specmnyfz222adjk4ya6hunlp5a5rj',\n 'amount': '30000'},\n {'address': '0x57037e2821ffadeec30d2b04ee0456e0a78faf0e', 'amount': '25000'},\n {'address': 'cosmos1srxqkz3v5xgxm5crz86ekglph4hy65rkgs3m7l',\n 'amount': '25000'},\n {'address': '0xc33afe84d32fedc34eafb1eaf1c8173e71114c46', 'amount': '29000'},\n {'address': 'cosmos1wkxhqmjtv5ehmvh4mcvzedx0qamzjywgmrzkrp',\n 'amount': '29000'},\n ...]" + "text/plain": " 0%| | 0/1 [00:00,}\\nNumber of activated participants: {NUMBER_OF_ACTIVATED_PARTICIPANTS:>,}\\nNumber of threads: {NUMBER_OF_THREADS:>,}\\nBash size: {BASH_SIZE:>,}\\nNumber of tasks: {len(tasks):>,}')\n", + " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + " res = pool.starmap(get_proofs, tqdm(tasks, total=len(tasks)))\n", + " assert res == [True] * len(res)" ], "metadata": { "collapsed": false, @@ -269,1326 +312,493 @@ { "cell_type": "code", "execution_count": 5, + "outputs": [ + { + "data": { + "text/plain": " amount nickname avatar \\\n0 39000 john16524446570 QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G73 \n1 22000 john16524446571 QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY \n2 28000 john16524446572 QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw \n3 27000 john16524446573 QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe \n4 37000 john16524446574 QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh2 \n\n ethereum_address \\\n0 0x77733286f58e09dd27229a4c43aa8c589c055b09 \n1 0x38c94ad36f6d99affde350f6d458dd851be95c88 \n2 0xafcfc121796b6c1ee89e432a15793f2efa7e130c \n3 0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa \n4 0xeabaee4f86d50c6fbb4f5925e649c864d684d6cc \n\n ethereum_private_key \\\n0 0xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c... \n1 0x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484... \n2 0x7a6ae4502055818a38cb4f19103f77f65036904ff609... \n3 0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a... \n4 0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90... \n\n bostrom_address \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4 \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4 \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv \n\n cosmos_address \\\n0 cosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latp \n1 cosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63t \n2 cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sj \n3 cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjj \n4 osmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3le \n\n cosmos_seed \\\n0 fiber awkward industry race design bird transf... \n1 wink box during grief liquid maid faint donate... \n2 half famous helmet oil expand gold barely stor... \n3 hold predict empower display clog panic entire... \n4 strong air mosquito police behind pear warfare... \n\n message \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x... \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v... \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4... \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4... \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv... \n\n ethereum_message_signature \\\n0 0x30d7ee1f90e75cbb42180b675658190f7afce4846157... \n1 0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd... \n2 0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f... \n3 0x5e7608320377526131ef41a46c4a71c6e5df98d874e3... \n4 0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K... \n1 {'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/... \n2 {'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe... \n3 {'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3... \n4 {'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU... \n1 eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn... \n2 eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0... \n3 eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE... \n4 eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3... \n\n ethereum_proof \\\n0 [a53ec1fe56e5d811717a6094a58a7de639a68f75bfe0e... \n1 [12a8de125cbf3ef5b253dd22dd48b2e47d909245942ab... \n2 [f134ebdd5b30a07f715cc1d3a4aec8c8f6afb2bf0584e... \n3 [da3ee3cbb3abec0f903a5d35e01430612b79426f52f72... \n4 [058db2378e06ddb5bda7d217bec41c356d11e1fff2161... \n\n cosmos_proof \n0 [3f9ba271dd2fd7f4c8efeb867fd038e5d3730fc2497e5... \n1 [11134c99cc32ad3d35894f454196872926bed1b983a82... \n2 [128880e27967800ebc916608fc66df0c9c3108f448be5... \n3 [9146ef5d2c6679e6711cdd4c4245428e10d09914dc3e3... \n4 [652e447ac6f4d4d409b84bc3ace2103d692cb3ab78a1c... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
039000john16524446570QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G730x77733286f58e09dd27229a4c43aa8c589c055b090xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4xcosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latpfiber awkward industry race design bird transf...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x...0x30d7ee1f90e75cbb42180b675658190f7afce4846157...{'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K...eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU...[a53ec1fe56e5d811717a6094a58a7de639a68f75bfe0e...[3f9ba271dd2fd7f4c8efeb867fd038e5d3730fc2497e5...
122000john16524446571QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY0x38c94ad36f6d99affde350f6d458dd851be95c880x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0vcosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63twink box during grief liquid maid faint donate...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v...0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd...{'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/...eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn...[12a8de125cbf3ef5b253dd22dd48b2e47d909245942ab...[11134c99cc32ad3d35894f454196872926bed1b983a82...
228000john16524446572QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw0xafcfc121796b6c1ee89e432a15793f2efa7e130c0x7a6ae4502055818a38cb4f19103f77f65036904ff609...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sjhalf famous helmet oil expand gold barely stor...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4...0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f...{'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe...eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0...[f134ebdd5b30a07f715cc1d3a4aec8c8f6afb2bf0584e...[128880e27967800ebc916608fc66df0c9c3108f448be5...
327000john16524446573QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjjhold predict empower display clog panic entire...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4...0x5e7608320377526131ef41a46c4a71c6e5df98d874e3...{'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3...eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE...[da3ee3cbb3abec0f903a5d35e01430612b79426f52f72...[9146ef5d2c6679e6711cdd4c4245428e10d09914dc3e3...
437000john16524446574QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh20xeabaee4f86d50c6fbb4f5925e649c864d684d6cc0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhvosmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3lestrong air mosquito police behind pear warfare...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv...0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec...{'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp...eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3...[058db2378e06ddb5bda7d217bec41c356d11e1fff2161...[652e447ac6f4d4d409b84bc3ace2103d692cb3ab78a1c...
\n
" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "if CALCULATE_PROOFS:\n", + " roots = []\n", + " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", + " for task in tasks:\n", + " with open(task[1], 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " roots.append(root_and_proof_json['merkle_root'])\n", + " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", + " assert roots == [roots[0]] * len(roots)\n", + " root = roots[0]\n", + "\n", + " cosmos_proofs_df = proofs_df[~proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", + "\n", + " claims_with_proofs_df = claims_df\\\n", + " .merge(\n", + " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", + " how='inner',\n", + " on='ethereum_address')\\\n", + " .merge(\n", + " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", + " how='inner',\n", + " on='cosmos_address')\n", + "\n", + " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", + "else:\n", + " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", + " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", + " with open('temp/proofs_1.json', 'r') as proof_file:\n", + " root_and_proof_json = json.load(proof_file)\n", + " root = root_and_proof_json['merkle_root']\n", + "claims_with_proofs_df.head()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [ + "for i in range(ceil(NUMBER_OF_ACTIVATED_PARTICIPANTS/10_000)):\n", + " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Instantiate Contracts\n", + "### Instantiate SUBGRAPH Contracts" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of addresses: 4,000,000\n", - "Number of activated participants: 200,000\n", - "Number of threads: 30\n", - "Bash size: 2,000\n", - "Number of tasks: 200\n" + "Name subgraph contract address: bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza\n", + "Avatar subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", + "Proof subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n" ] - }, - { - "data": { - "text/plain": " 0%| | 0/200 [00:00,}\\nNumber of activated participants: {NUMBER_OF_ACTIVATED_PARTICIPANTS:>,}\\nNumber of threads: {NUMBER_OF_THREADS:>,}\\nBash size: {BASH_SIZE:>,}\\nNumber of tasks: {len(tasks):>,}')\n", - " with Pool(processes=NUMBER_OF_THREADS) as pool:\n", - " res = pool.starmap(get_proofs, tqdm(tasks, total=len(tasks)))\n", - " assert res == [True] * len(res)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 6, - "outputs": [ - { - "data": { - "text/plain": " amount nickname avatar \\\n0 28000 john16521126150 QmZ6SJnBFk2b53Gt2ektwsp7ECWP6km2i27UoKybR1q4GX \n1 25000 john16521126151 QmYmXFtpG48H5E12zTVs1Le979cQgB6QT8KBdx6t1Wf7ms \n2 31000 john16521126152 QmZDhn45Tup8GnUd4LQHfCtF2Hf9frxXHJ5k7Gm4XK6R2J \n3 40000 john16521126153 QmaauStuBTuHUKDveQ5dHsBC4Fo7SZFsgGecXsbwXcoyAh \n4 33000 john16521126154 QmSAUL7hfidipezWxBG9RqCwZaCxmrkQQyHzeqnGQ6zRJv \n\n ethereum_address \\\n0 0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d \n1 0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da \n2 0x802e5043a53b8833353bd97e9be85359d05fa5a1 \n3 0x3b1cf67d050e257a1a05eb17f3c346e131cf3895 \n4 0x107481469e6faf29cafc4f7a13265962b83e4667 \n\n ethereum_private_key \\\n0 0xd7190e045f87b1287efa6ef1198ebbeecf2e9ba95d63... \n1 0xbf32cafd205fde13b5add27e899e6c36e75a85473b6c... \n2 0x5afaa05bffed2385e03a80dd25dd84215c8ee846cbb0... \n3 0x28876dc39babed2bbf212786b3f8adc08195ac967f92... \n4 0x2cf4bf87498e6591a96e2e47fc9035ffba8c86179db6... \n\n bostrom_address \\\n0 bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l \n1 bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z \n2 bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7 \n3 bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev \n4 bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5 \n\n cosmos_address \\\n0 cosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0c \n1 cosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409 \n2 osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2t \n3 cosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8t \n4 osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27p \n\n cosmos_seed \\\n0 head maximum daring merit shoulder toast bone ... \n1 title oval ten able delay target tag orphan go... \n2 peanut thing retreat tool pattern limb pet tub... \n3 raise cruise fancy text enrich tower anxiety s... \n4 seed rebuild sick drive conduct junior soap ca... \n\n message \\\n0 bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l... \n1 bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z... \n2 bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7... \n3 bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev... \n4 bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5... \n\n ethereum_message_signature \\\n0 0x55a59e770124f8a240a6dfe4199167093f32f8c06c93... \n1 0xb13e85182b680b7c10a21eac40f6d17a5eb50835b7b0... \n2 0x3e97255fd5e618a226fbfbd1eb4720447a24e036f054... \n3 0x0cf6b34983d62ad2a3443da27515c232da5c4ed19c41... \n4 0x9c4ee685f2c1a0acfd1c758eee4397492d69037a5642... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A3DPjRBjtIHuj+EleMfBftzEf+Uotgj6s... \n1 {'pub_key': 'A1lHzZScCEr+Hi1QGv/M0qxxjl4B/YEP8... \n2 {'pub_key': 'A8bfcVcw0FBGkuWqFiLv8GzPnohSt2zPT... \n3 {'pub_key': 'AsglEaBaS1Y7UAel9r7T0jPhrEeXfAdI/... \n4 {'pub_key': 'A9BSJkUEagjdxipS01BCl00tCidT4yJWA... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTNEUGpSQmp0SUh1aitFbGVNZkJmdH... \n1 eyJwdWJfa2V5IjoiQTFsSHpaU2NDRXIrSGkxUUd2L00wcX... \n2 eyJwdWJfa2V5IjoiQThiZmNWY3cwRkJHa3VXcUZpTHY4R3... \n3 eyJwdWJfa2V5IjoiQXNnbEVhQmFTMVk3VUFlbDlyN1Qwal... \n4 eyJwdWJfa2V5IjoiQTlCU0prVUVhZ2pkeGlwUzAxQkNsMD... \n\n ethereum_proof \\\n0 [ee71d1332ec65bd98218f7a092f913cc3f6129af546ba... \n1 [a3da1d8fb3e13bc517f0adf1ab26f1acad0173c8032ff... \n2 [c91e3465b66a0f8908c29e329f105de3370057e110a3f... \n3 [1ba325a63aa614d21335e935685391d5e8d15e9cdbd1c... \n4 [545a98673c22a235c765f77deacb9abd35bf39b226548... \n\n cosmos_proof \n0 [c97135be288dfda2f61eaa71ff7d87370d666468c66e5... \n1 [41a1393f2d5345e9789ba5e1a46aeaac3e60290ce92e9... \n2 [e674ee80ddbad3ab382d41f309af880cea888ec148884... \n3 [70f8ea11fc54463b6d1d04e023ea7af8ce86afb494343... \n4 [28f4284c85cf51975520750d286fe29135f8d3a106bce... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
028000john16521126150QmZ6SJnBFk2b53Gt2ektwsp7ECWP6km2i27UoKybR1q4GX0x3176ccd5b88d8bf7cabcb3b2f1e6ca4b13b3fc5d0xd7190e045f87b1287efa6ef1198ebbeecf2e9ba95d63...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3lcosmos124w2kuuls8c5ezg4fh3au4j2d903a3r5yryq0chead maximum daring merit shoulder toast bone ...bostrom124w2kuuls8c5ezg4fh3au4j2d903a3r58ssn3l...0x55a59e770124f8a240a6dfe4199167093f32f8c06c93...{'pub_key': 'A3DPjRBjtIHuj+EleMfBftzEf+Uotgj6s...eyJwdWJfa2V5IjoiQTNEUGpSQmp0SUh1aitFbGVNZkJmdH...[ee71d1332ec65bd98218f7a092f913cc3f6129af546ba...[c97135be288dfda2f61eaa71ff7d87370d666468c66e5...
125000john16521126151QmYmXFtpG48H5E12zTVs1Le979cQgB6QT8KBdx6t1Wf7ms0xe6408bb8c8fa21d60bdde3fd9c07f8fe12df61da0xbf32cafd205fde13b5add27e899e6c36e75a85473b6c...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3zcosmos1rdcqvqe3mxah46er4c02pu8fnprz7dm6tp4409title oval ten able delay target tag orphan go...bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z...0xb13e85182b680b7c10a21eac40f6d17a5eb50835b7b0...{'pub_key': 'A1lHzZScCEr+Hi1QGv/M0qxxjl4B/YEP8...eyJwdWJfa2V5IjoiQTFsSHpaU2NDRXIrSGkxUUd2L00wcX...[a3da1d8fb3e13bc517f0adf1ab26f1acad0173c8032ff...[41a1393f2d5345e9789ba5e1a46aeaac3e60290ce92e9...
231000john16521126152QmZDhn45Tup8GnUd4LQHfCtF2Hf9frxXHJ5k7Gm4XK6R2J0x802e5043a53b8833353bd97e9be85359d05fa5a10x5afaa05bffed2385e03a80dd25dd84215c8ee846cbb0...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7osmo1dpu0jwg9x4k528rylsqlsm09rn7ft5ur0knv2tpeanut thing retreat tool pattern limb pet tub...bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7...0x3e97255fd5e618a226fbfbd1eb4720447a24e036f054...{'pub_key': 'A8bfcVcw0FBGkuWqFiLv8GzPnohSt2zPT...eyJwdWJfa2V5IjoiQThiZmNWY3cwRkJHa3VXcUZpTHY4R3...[c91e3465b66a0f8908c29e329f105de3370057e110a3f...[e674ee80ddbad3ab382d41f309af880cea888ec148884...
340000john16521126153QmaauStuBTuHUKDveQ5dHsBC4Fo7SZFsgGecXsbwXcoyAh0x3b1cf67d050e257a1a05eb17f3c346e131cf38950x28876dc39babed2bbf212786b3f8adc08195ac967f92...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyevcosmos1tjqhygt38yhrhkv5scph2ef96ally2y45d8h8traise cruise fancy text enrich tower anxiety s...bostrom1tjqhygt38yhrhkv5scph2ef96ally2y4h7nyev...0x0cf6b34983d62ad2a3443da27515c232da5c4ed19c41...{'pub_key': 'AsglEaBaS1Y7UAel9r7T0jPhrEeXfAdI/...eyJwdWJfa2V5IjoiQXNnbEVhQmFTMVk3VUFlbDlyN1Qwal...[1ba325a63aa614d21335e935685391d5e8d15e9cdbd1c...[70f8ea11fc54463b6d1d04e023ea7af8ce86afb494343...
433000john16521126154QmSAUL7hfidipezWxBG9RqCwZaCxmrkQQyHzeqnGQ6zRJv0x107481469e6faf29cafc4f7a13265962b83e46670x2cf4bf87498e6591a96e2e47fc9035ffba8c86179db6...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5osmo1yu3zs6mfkj92eyxefh7kna27rv42peau8ck27pseed rebuild sick drive conduct junior soap ca...bostrom1yu3zs6mfkj92eyxefh7kna27rv42peauvs3fk5...0x9c4ee685f2c1a0acfd1c758eee4397492d69037a5642...{'pub_key': 'A9BSJkUEagjdxipS01BCl00tCidT4yJWA...eyJwdWJfa2V5IjoiQTlCU0prVUVhZ2pkeGlwUzAxQkNsMD...[545a98673c22a235c765f77deacb9abd35bf39b226548...[28f4284c85cf51975520750d286fe29135f8d3a106bce...
\n
" - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "if CALCULATE_PROOFS:\n", - " roots = []\n", - " proofs_df = pd.DataFrame(columns=['address', 'amount', 'proof'])\n", - " for task in tasks:\n", - " with open(task[1], 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - " roots.append(root_and_proof_json['merkle_root'])\n", - " proofs_df = pd.concat([proofs_df, pd.DataFrame(root_and_proof_json['proofs'])], ignore_index=True)\n", - " assert roots == [roots[0]] * len(roots)\n", - " root = roots[0]\n", - "\n", - " cosmos_proofs_df = proofs_df[~proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", - " ethereum_proofs_df = proofs_df[proofs_df.address.str.startswith('0x')][['address', 'proof']]\n", - "\n", - " claims_with_proofs_df = claims_df\\\n", - " .merge(\n", - " ethereum_proofs_df.rename(columns={'address': 'ethereum_address', 'proof': 'ethereum_proof'}),\n", - " how='inner',\n", - " on='ethereum_address')\\\n", - " .merge(\n", - " cosmos_proofs_df.rename(columns={'address': 'cosmos_address', 'proof': 'cosmos_proof'}),\n", - " how='inner',\n", - " on='cosmos_address')\n", - "\n", - " claims_with_proofs_df.to_csv(PARTICIPANTS_FILE_NAME)\n", - "else:\n", - " claims_with_proofs_df = pd.read_csv(PARTICIPANTS_FILE_NAME)\n", - " claims_with_proofs_df.loc[:, 'ethereum_proof'] = claims_with_proofs_df['ethereum_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", - " claims_with_proofs_df.loc[:, 'cosmos_proof'] = claims_with_proofs_df['cosmos_proof'].map(lambda x: x.replace('\\'', '').replace('[', '').replace(']', '').split(', '))\n", - " with open('temp/proofs_1.json', 'r') as proof_file:\n", - " root_and_proof_json = json.load(proof_file)\n", - " root = root_and_proof_json['merkle_root']\n", - "claims_with_proofs_df.head()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 7, - "outputs": [], - "source": [ - "for i in range(ceil(NUMBER_OF_ACTIVATED_PARTICIPANTS/10_000)):\n", - " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" + "root_register_output = contract_utils.execute_contract(\n", + " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", + " mnemonic=WALLET_SEED,\n", + " contract_address=gift_contract_address)\n", + "contract_utils.parse_contract_execution_json(root_register_output)" ], "metadata": { "collapsed": false, @@ -1600,5953 +810,247 @@ { "cell_type": "markdown", "source": [ - "## Instantiate Contracts\n", - "### Instantiate SUBGRAPH Contracts" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 8, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Name subgraph contract address: bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza\n", - "Avatar subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", - "Proof subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n" - ] - } - ], - "source": [ - "if INIT_SUBGRAPH_CONTRACTS:\n", - " name_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test name subgraph')\n", - " avatar_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test avatar subgraph',\n", - " from_address=WALLET_ADDRESS)\n", - " proof_subgraph_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"executer\":\"{WALLET_ADDRESS}\"}}''',\n", - " contract_code_id=SUBGRAPH_CODE_ID,\n", - " contract_label='test proof subgraph',\n", - " from_address=WALLET_ADDRESS)\n", - "else:\n", - " name_subgraph_contract_address = NAME_SUBGRAPH_CONTRACT_ADDRESS\n", - " avatar_subgraph_contract_address = AVATAR_SUBGRAPH_CONTRACT_ADDRESS\n", - " proof_subgraph_contract_address = PROOF_SUBGRAPH_CONTRACT_ADDRESS\n", - "print(f'Name subgraph contract address: {name_subgraph_contract_address}\\n'\n", - " f'Avatar subgraph contract address: {avatar_subgraph_contract_address}\\n'\n", - " f'Proof subgraph contract address: {proof_subgraph_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Passport Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 9, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Passport contract address: bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf\n" - ] - } - ], - "source": [ - "if INIT_PASSPORT_CONTRACT:\n", - " passport_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"name\":\"CPT\", \"minter\":\"{WALLET_ADDRESS}\", \"owner\":\"{WALLET_ADDRESS}\", \"symbol\":\"CPT\", \"avatar_subgraph\": \"{avatar_subgraph_contract_address}\", \"name_subgraph\": \"{name_subgraph_contract_address}\", \"proof_subgraph\": \"{proof_subgraph_contract_address}\"}}''',\n", - " contract_code_id=PASSPORT_CODE_ID,\n", - " contract_label='test passport',\n", - " from_address=WALLET_ADDRESS)\n", - "else:\n", - " passport_contract_address = PASSPORT_CONTRACT_ADDRESS\n", - "print(f'Passport contract address: {passport_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Set executor in the Subgraph Contracts" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 10, - "outputs": [], - "source": [ - "def set_executor_subgraph(subgraph_contract_address: str, new_executor_address: str, display_data: bool = False):\n", - " return execute_contract_bash(execute_query=f'''{{\"update_executer\":{{\"new_executer\":\"{new_executor_address}\"}}}}''',\n", - " contract_address=subgraph_contract_address,\n", - " gas=600000,\n", - " display_data=display_data)\n", - "\n", - "if INIT_PASSPORT_CONTRACT or INIT_SUBGRAPH_CONTRACTS:\n", - " set_executor_subgraph(subgraph_contract_address=name_subgraph_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subgraph(subgraph_contract_address=avatar_subgraph_contract_address, new_executor_address=passport_contract_address)\n", - " set_executor_subgraph(subgraph_contract_address=proof_subgraph_contract_address, new_executor_address=passport_contract_address)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Treasury Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 11, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Treasury contract address: bostrom1nc84knc0n7td5xqplwy0luh97zd8hv5mhvm9cdempc05xk0xvxyqvwhyll\n" - ] - } - ], - "source": [ - "if INIT_TREASURY_CONTRACT:\n", - " treasury_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"admins\": [\"{WALLET_ADDRESS}\"], \"mutable\": true}}''',\n", - " contract_code_id=TREASURY_CODE_ID,\n", - " amount=INITIAL_BALANCE,\n", - " contract_label='test treasury',\n", - " from_address=WALLET_ADDRESS,\n", - " display_data=False)\n", - "else:\n", - " treasury_contract_address = TREASURY_CONTRACT_ADDRESS\n", - "print(f'Treasury contract address: {treasury_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Instantiate Gift Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 12, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract address: bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n" - ] - } - ], - "source": [ - "if INIT_GIFT_CONTRACT:\n", - " gift_contract_address = \\\n", - " instantiate_contract(\n", - " init_query=f'''{{\"owner\":\"{WALLET_ADDRESS}\", \"passport\":\"{passport_contract_address}\", \"treasury\":\"{treasury_contract_address}\", \"allowed_native\":\"boot\", \"initial_balance\":\"{INITIAL_BALANCE}\", \"coefficient_up\":\"{COEF_UP}\", \"coefficient_down\":\"{COEF_DOWN}\", \"coefficient\":\"{COEF_UP}\", \"target_claim\":\"{TARGET_CLAIM}\"}}''',\n", - " contract_code_id=GIFT_CODE_ID,\n", - " contract_label='test gift',\n", - " from_address=WALLET_ADDRESS,\n", - " display_data=False)\n", - "else:\n", - " gift_contract_address = GIFT_CONTRACT_ADDRESS\n", - "print(f'Gift contract address: {gift_contract_address}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Initiate Class of Output Parsing" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 13, - "outputs": [], - "source": [ - "contract_utils = ContractUtils(ipfs_client=ipfs_client,\n", - " address_dict= {\n", - " gift_contract_address: 'Gift Contract',\n", - " passport_contract_address: 'Passport Contract',\n", - " treasury_contract_address: 'Treasury Contract',\n", - " WALLET_ADDRESS: 'Passport Owner Address',\n", - " name_subgraph_contract_address: 'Name Subgraph Contract',\n", - " avatar_subgraph_contract_address: 'Avatar Subgraph Contract',\n", - " proof_subgraph_contract_address: 'Proof Subgraph Contract'})" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Set Allowance in Treasury contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 14, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "coin received\n", - "\treceiver: Treasury Contract\n", - "\tamount: 110000000000boot\n", - "\n", - "coin spent\n", - "\tspender: Passport Owner Address\n", - "\tamount: 110000000000boot\n", - "\n", - "message from bank bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0 /cosmos.bank.v1beta1.MsgMultiSend\n", - "\n", - "transfer\n", - "\trecipient: Treasury Contract\n", - "\tamount: 110000000000boot\n", - "Gas used: 73,369\n", - "Tx hash: A13F05CE7E0BEA7F738E3FDD168C14DA6316825E2DC768FD0F6425F4C47C9C2B\n" - ] - } - ], - "source": [ - "contract_utils.parse_contract_execution_json(\n", - " contract_utils.send_coins(\n", - " from_seed=WALLET_SEED,\n", - " to_addresses=[treasury_contract_address],\n", - " amounts=[INITIAL_BALANCE],\n", - " gas=min(100_000 + 25_000, int(20e6)),\n", - " display_data=DISPLAY_TX_EXECUTION))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 15, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "execute\n", - "\texecute contract: Treasury Contract\n", - "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Treasury Contract\n", - "\taction: increase_allowance\n", - "\towner: Passport Owner Address\n", - "\tspender: Gift Contract\n", - "\tdenomination: boot\n", - "\tamount: 110,000,000,000\n", - "Gas used: 135,441\n", - "Tx hash: 70C18E706A173AEE762262EDA659716FDB9BB86F6D23F4CC9B85FDB4AE47A6BC\n" - ] - } - ], - "source": [ - "def set_allowance(amount: str = INITIAL_BALANCE, display_data: bool = False):\n", - " return contract_utils.execute_contract(\n", - " execute_msg={\"increase_allowance\": {\"spender\": gift_contract_address, \"amount\": {\"amount\": amount, \"denom\": 'boot'}}},\n", - " contract_address=treasury_contract_address,\n", - " mnemonic=WALLET_SEED,\n", - " gas=600000,\n", - " display_data=display_data)\n", - "\n", - "contract_utils.parse_contract_execution_json(\n", - " set_allowance(display_data=False))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Register Merkle Root" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 16, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "execute\n", - "\texecute contract: Gift Contract\n", - "\n", - "message from Passport Owner Address wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Gift Contract\n", - "\taction: register_merkle_root\n", - "\tmerkle_root: 07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae\n", - "Gas used: 131,276\n", - "Tx hash: 84C44411CF66B40A57C71A8920E85DA9A46C382BD72AB16982A4618BA1049E8D\n" - ] - } - ], - "source": [ - "root_register_output = contract_utils.execute_contract(\n", - " execute_msg={\"register_merkle_root\": {\"merkle_root\": root}},\n", - " mnemonic=WALLET_SEED,\n", - " contract_address=gift_contract_address)\n", - "contract_utils.parse_contract_execution_json(root_register_output)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "#### Get Merkle Root form the Gift Contract" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "execution_count": 156 - }, - { - "cell_type": "code", - "execution_count": 17, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gift contract bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "{'data': {'merkle_root': '07cd81f94d358b0a9e292490e0962de14a55476d2fb41deda78a418d83acf1ae'}}\n" - ] - } - ], - "source": [ - "print(f'Gift contract {gift_contract_address}')\n", - "print(query_contract(query='''{\"merkle_root\": {}}''',\n", - " contract_address=gift_contract_address))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Send coins to new addresses" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 21, - "outputs": [ - { - "data": { - "text/plain": " 0%| | 0/223 [00:00,\n" + "Number of tasks: 20\n", + "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/192000 [00:00\\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60934 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 61001 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60984 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60950 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60973 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60931 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60981 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 61012 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60983 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60980 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60951 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60935 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60948 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60996 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60933 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60971 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60955 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60978 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60972 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60982 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/6_participants_test_data_2000000_addresses.csv 60969 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199444 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199436 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199136 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b\"Error: Cannot connect to host lcd.space-pussy-1.cybernode.ai:443 ssl:default [Connect call failed ('116.203.5.149', 443)]\\n\\n\"\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199415 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ServerDisconnectedError: Server disconnected\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199451 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199434 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 34, in participation\\n _claim_ethereum_json = contract_utils.claim(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199472 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 175, in execute_contract\\n _tx = _wallet.create_and_sign_tx(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 123, in create_and_sign_tx\\n res = self.account_number_and_sequence()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 84, in account_number_and_sequence\\n res = self.lcd.auth.account_info(self.key.acc_address)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/auth.py\", line 23, in account_info\\n result = await self._c._get(f\"/cosmos/auth/v1beta1/accounts/{address}\")\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 328, in _get\\n result = await super()._get(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 120, in _get\\n async with self.session.get(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199433 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 175, in execute_contract\\n _tx = _wallet.create_and_sign_tx(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 123, in create_and_sign_tx\\n res = self.account_number_and_sequence()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/wallet.py\", line 84, in account_number_and_sequence\\n res = self.lcd.auth.account_info(self.key.acc_address)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/auth.py\", line 23, in account_info\\n result = await self._c._get(f\"/cosmos/auth/v1beta1/accounts/{address}\")\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 328, in _get\\n result = await super()._get(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 120, in _get\\n async with self.session.get(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199430 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199456 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199468 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199492 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199460 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199435 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199408 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199491 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199489 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199490 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199134 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b\"Error: Cannot connect to host lcd.space-pussy-1.cybernode.ai:443 ssl:default [Connect call failed ('116.203.5.149', 443)]\\n\\n\"\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 36, in participation\\n _claim_cosmos_json = contract_utils.claim(row, network=\\'cosmos\\', display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 206, in claim\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 898, in start\\n message, payload = await protocol.read() # type: ignore[union-attr]\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/streams.py\", line 616, in read\\n await self._waiter\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 284, in __await__\\n yield self # This tells Task to wait for completion.\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 328, in __wakeup\\n future.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\naiohttp.client_exceptions.ClientOSError: [Errno 104] Connection reset by peer\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199476 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199454 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199458 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199463 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 29, in participation\\n _proof_ethereum_address_json = contract_utils.proof_address(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199449 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "python3 create_passport_and_claim_job.py temp/19_participants_test_data_2000000_addresses.csv 199488 bostrom1l6ut7ymdzhf38wldp0eu6ccjawgvzku69kmjl6ddjqpcm9f62gkqufluv3\n", - "b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 31, in participation\\n _proof_cosmos_address_json = contract_utils.proof_address(row, network=\\'cosmos\\',\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 196, in proof_address\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'b'Traceback (most recent call last):\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 67, in \\n res = participation(row=row, address_dict=address_dict, release_bool=release_bool)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py\", line 27, in participation\\n _create_passport_json = contract_utils.create_passport(row, display_data=DISPLAY_TX_EXECUTION)\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 188, in create_passport\\n return self.execute_contract(\\n File \"/home/grovybear/cyber/cw-cybergift/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py\", line 185, in execute_contract\\n return self.bostrom_lcd_client.tx.broadcast(_tx).to_json()\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 29, in decorator\\n return instance._run_sync(async_call(instance, *args, **kwargs))\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/_base.py\", line 13, in _run_sync\\n return self._c.loop.run_until_complete(coroutine)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/nest_asyncio.py\", line 81, in run_until_complete\\n return f.result()\\n File \"/usr/lib/python3.9/asyncio/futures.py\", line 201, in result\\n raise self._exception\\n File \"/usr/lib/python3.9/asyncio/tasks.py\", line 256, in __step\\n result = coro.send(None)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 315, in broadcast\\n res = await self._broadcast(tx, \"BROADCAST_MODE_BLOCK\", options)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/api/tx.py\", line 264, in _broadcast\\n return await self._c._post(\"/cosmos/tx/v1beta1/txs\", data) # , raw=True)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 340, in _post\\n result = await super()._post(*args, **kwargs)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/cyber_sdk/client/lcd/lcdclient.py\", line 137, in _post\\n async with self.session.post(\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 1138, in __aenter__\\n self._resp = await self._coro\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client.py\", line 559, in _request\\n await resp.start(conn)\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 913, in start\\n self._continue = None\\n File \"/home/grovybear/.local/lib/python3.9/site-packages/aiohttp/helpers.py\", line 721, in __exit__\\n raise asyncio.TimeoutError from None\\nasyncio.exceptions.TimeoutError\\n'\n", - "\n" - ] } ], "source": [ @@ -7726,7 +1128,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 20, "outputs": [], "source": [ "with open('temp/contract_participation_execution_log_10000.txt', 'r') as f:\n", @@ -7741,7 +1143,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 21, "outputs": [ { "name": "stdout", @@ -7755,7 +1157,7 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Name Subgraph Contract\n", @@ -7765,10 +1167,10 @@ "\t_contract_address: Passport Contract\n", "\taction: mint\n", "\tminter: Passport Contract\n", - "\towner: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", - "\ttoken_id: 319041\n", - "Gas used: 342,370\n", - "Tx hash: FE9B54C9E5C895D9353312B8BBF0CE012D7757B10F28CD3899EEDADDDEBCCBD9\n" + "\towner: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", + "\ttoken_id: 518458\n", + "Gas used: 342,373\n", + "Tx hash: 5828264EA6AB3B89BFDDB4BDD9F93B97D3AB52DF0C7715712C73044D3864B339\n" ] } ], @@ -7784,7 +1186,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 22, "outputs": [ { "name": "stdout", @@ -7797,7 +1199,7 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Proof Subgraph Contract\n", @@ -7805,10 +1207,10 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16521126159991\n", - "\taddress: 0xdc431e04a2ce31e90bfbd6382d81b14ee8cb4059\n", + "\tnickname: john16524182639991\n", + "\taddress: 0x18fb581ee5d55bdbb4628490fcc323a8683e0182\n", "Gas used: 237,523\n", - "Tx hash: 8156E96D4BB51547B7C0E5ED5917129E52323AAD4C7653A86F02D3F18C662F89\n" + "Tx hash: 2487472AC6E27B38D36E7488464426BD4E606C06CF6393D2E3EE072A8C441043\n" ] } ], @@ -7824,7 +1226,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 23, "outputs": [ { "name": "stdout", @@ -7837,7 +1239,7 @@ "\texecute contract: Passport Contract\n", "\texecute contract: Proof Subgraph Contract\n", "\n", - "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "reply\n", "\treply contract: Proof Subgraph Contract\n", @@ -7845,10 +1247,10 @@ "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: proof_address\n", - "\tnickname: john16521126159991\n", - "\taddress: osmo136zz7jck89ug4r0g9wxdnp97h26ul6xyny7nnl\n", - "Gas used: 240,855\n", - "Tx hash: 555AFEB1DC5F13D78678BAA8FF4C508B7404888D2FB5F62702B561D15BD1F7BC\n" + "\tnickname: john16524182639991\n", + "\taddress: cosmos18x96qyxfj9kxnqerj5ye4430gl4mdm0032vlm5\n", + "Gas used: 240,955\n", + "Tx hash: 17522237555D106CABA1FB0E454803AB674B8C7A408CC6BC36907254841DE6ED\n" ] } ], @@ -7864,7 +1266,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 24, "outputs": [ { "name": "stdout", @@ -7874,35 +1276,35 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", + "\treceiver: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", "\tamount: 100000boot\n", "\n", "coin spent\n", - "\tspender: Treasury Contract\n", + "\tspender: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", "\tamount: 100000boot\n", "\n", "execute\n", - "\texecute contract: Gift Contract\n", - "\texecute contract: Treasury Contract\n", + "\texecute contract: bostrom1zvjnc08uy0zz43m0nlh9f5aetpa3amn6a034yqvmsgvzshk9cldsqf2n5c\n", + "\texecute contract: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", "\n", - "message from bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", - "\tsender: Treasury Contract\n", + "\trecipient: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", + "\tsender: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", "\tamount: 100000boot\n", "\n", "wasm\n", - "\t_contract_address: Gift Contract\n", + "\t_contract_address: bostrom1zvjnc08uy0zz43m0nlh9f5aetpa3amn6a034yqvmsgvzshk9cldsqf2n5c\n", "\taction: claim\n", - "\toriginal: osmo136zz7jck89ug4r0g9wxdnp97h26ul6xyny7nnl\n", - "\ttarget: bostrom136zz7jck89ug4r0g9wxdnp97h26ul6xycvesm2\n", - "\tamount: 301,969\n", - "\t_contract_address: Treasury Contract\n", + "\toriginal: cosmos18x96qyxfj9kxnqerj5ye4430gl4mdm0032vlm5\n", + "\ttarget: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", + "\tamount: 264,200\n", + "\t_contract_address: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", "\taction: execute\n", - "\towner: Gift Contract\n", - "Gas used: 401,953\n", - "Tx hash: ECEB867CA0374AF777B5333384F4EA26FC6EBA13C6B557B7D808E442C84BF983\n" + "\towner: bostrom1zvjnc08uy0zz43m0nlh9f5aetpa3amn6a034yqvmsgvzshk9cldsqf2n5c\n", + "Gas used: 397,959\n", + "Tx hash: 959556655E6A91D3F40FB4E25EC3CB0E642F39D31460AB686E5DBA075CF2F255\n" ] } ], @@ -7930,23 +1332,23 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 25, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 200000\n", + "Number of tasks: 20\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/200000 [00:00 str:\n", @@ -8135,7 +1536,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 30, "outputs": [ { "data": { @@ -8143,7 +1544,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "dd29026653bb47fb83a5687dac099563" + "model_id": "323fc54f956345679af00e72955644d2" } }, "metadata": {}, @@ -8153,6 +1554,8 @@ "name": "stdout", "output_type": "stream", "text": [ + "\n", + "TRANSFER\n", "\n", "Events\n", "\n", @@ -8171,80 +1574,22 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom1rdcqvqe3mxah46er4c02pu8fnprz7dm6gjpx3z\n", + "\tsender: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 309120\n", - "Gas used: 424,079\n", - "Tx hash: FAD94B4EE42D8BE78DC4391CB7D062DF281A2527F123700BED9294A61A97C90E\n" - ] - } - ], - "source": [ - "for index, row in tqdm(claims_with_proofs_df[:4].iterrows()):\n", - " if index == 1:\n", - " transfer_passport_json = contract_utils.transfer_passport(\n", - " row,\n", - " token_id=get_passport_id(row['bostrom_address']),\n", - " to_address=WALLET_ADDRESS,\n", - " display_data=DISPLAY_TX_EXECUTION)\n", - " contract_utils.parse_contract_execution_json(\n", - " transfer_passport_json,\n", - " row=row)\n", - " else:\n", - " pass" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Burn" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 35, - "outputs": [ - { - "data": { - "text/plain": "0it [00:00, ?it/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "6ada9012e6d745bdbc8dd5a789aa5b9e" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\ttoken_id: 542447\n", + "Gas used: 433,764\n", + "Tx hash: 74C08EC0EB7D6898DEB4B27F95528CBBC363AC5D114977C7E5399A1FADD7000C\n", + "\n", + "BURN\n", "\n", "Events\n", "\n", "cyberlinks\n", - "\tcyberhole -> Nickname\n", - "\tNickname -> cyberhole\n", - "\tneuron: Name Subgraph Contract\n", - "\n", "\tcyberhole -> Avatar\n", "\tAvatar -> cyberhole\n", "\tneuron: Avatar Subgraph Contract\n", @@ -8255,25 +1600,82 @@ "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Name Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: burn\n", - "\tsender: bostrom1dpu0jwg9x4k528rylsqlsm09rn7ft5ury750z7\n", - "\ttoken_id: 309055\n", - "Gas used: 382,926\n", - "Tx hash: 1F7865D1A3241500C9D65B9C916C2F74C08692063D055FFD709545CEDB5E8F62\n" + "\tsender: bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4\n", + "\ttoken_id: 542444\n", + "Gas used: 357,526\n", + "Tx hash: 2A389F7EFD4296EE9F0386117C63F51C5A39E65E2F8532752AE1A3AEA93FCD1A\n", + "\n", + "UPDATE NAME\n", + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\texecute contract: Name Subgraph Contract\n", + "\n", + "message from bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Name Subgraph Contract\n", + "\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: update_nickname\n", + "\told_name: john16524446573\n", + "\tnew_name: john16524446573_new\n", + "Gas used: 241,412\n", + "Tx hash: 70129048ACC2A62E8225B4198545A3864BAD9D4E135CA713EFDCFB91FB2CB948\n" ] } ], "source": [ - "for index, row in tqdm(claims_with_proofs_df[2:6].iterrows()):\n", - " if index == 2:\n", - " burn_passport_json = contract_utils.burn_passport(row, token_id=get_passport_id(row['bostrom_address']), display_data=DISPLAY_TX_EXECUTION)\n", + "for index, row in tqdm(claims_with_proofs_df[:4].iterrows()):\n", + " if index == 1:\n", + " transfer_passport_json = contract_utils.transfer_passport(\n", + " row,\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " to_address=WALLET_ADDRESS,\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " print('\\nTRANSFER')\n", + " contract_utils.parse_contract_execution_json(transfer_passport_json, row=row)\n", + " elif index == 2:\n", + " burn_passport_json = contract_utils.burn_passport(\n", + " row,\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " print('\\nBURN')\n", " contract_utils.parse_contract_execution_json(burn_passport_json, row=row)\n", - " else:\n", - " pass" + " elif index == 3:\n", + " update_name_json = contract_utils.update_name(\n", + " row,\n", + " new_nickname=row['nickname'] + '_new',\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " print('\\nUPDATE NAME')\n", + " contract_utils.parse_contract_execution_json(update_name_json, row=row)\n", + " elif index == 4:\n", + " update_avatar_json = contract_utils.update_avatar(\n", + " row,\n", + " new_avatar=get_ipfs_cid_from_str(row['nickname'] + '_new_avatar'),\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " print('\\nUPDATE AVATAR')\n", + " contract_utils.parse_contract_execution_json(update_avatar_json, row=row)\n", + " elif index == 5:\n", + " delete_address_json = contract_utils.delete_address(\n", + " row,\n", + " removed_address=row['cosmos_address'],\n", + " token_id=get_passport_id(row['bostrom_address']),\n", + " display_data=DISPLAY_TX_EXECUTION)\n", + " print('\\nDELETE ADDRESS')\n", + " contract_utils.parse_contract_execution_json(delete_address_json, row=row)" ], "metadata": { "collapsed": false, @@ -8282,15 +1684,25 @@ } } }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "markdown", "source": [ "### Add tests for Passport contract\n", "#### create_passport +\n", - "#### update_name\n", - "#### update_avatar\n", + "#### update_name +\n", + "#### update_avatar +\n", "#### proof_address +\n", - "#### remove_address\n", + "#### remove_address +\n", "#### set_minter\n", "#### set_owner\n", "#### set_active\n", @@ -8329,7 +1741,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "outputs": [], "source": [], "metadata": { From e508840a492b8b29e6fa1b635d225520b60442a5 Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Fri, 13 May 2022 23:29:07 +0800 Subject: [PATCH 49/69] - Add tests for update names, avatars and remove proofed addresses --- ..._and_passport_contracts_load_testing.ipynb | 280 ++++++++++-------- 1 file changed, 150 insertions(+), 130 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index e515050..e2602c7 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -86,10 +86,10 @@ "GIFT_CODE_ID = str(1)\n", "GIFT_CONTRACT_ADDRESS = 'bostrom14swjuycwxmvghd9hgr3f3755388g6xkaqpn2dxcf700fzcwdm2nqum7453'\n", "\n", - "PARTICIPANTS_FILE_NAME = 'participants_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv'\n", - "ROOT_SOURCE_FILE_NAME = 'root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", - "PROOF_FILE_NAME = 'proof_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", - "ROOT_FILE_NAME = 'root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" + "PARTICIPANTS_FILE_NAME = 'temp/participants_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv'\n", + "ROOT_SOURCE_FILE_NAME = 'temp/root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "PROOF_FILE_NAME = 'temp/proof_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", + "ROOT_FILE_NAME = 'temp/root_testing_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses'" ], "metadata": { "collapsed": false, @@ -125,7 +125,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "a4477e2f2236456588a5194b4236f454" + "model_id": "5d27fa2e28744f63af34e4d9b419eada" } }, "metadata": {}, @@ -133,8 +133,8 @@ }, { "data": { - "text/plain": " amount nickname avatar \\\n0 39000 john16524446570 QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G73 \n1 22000 john16524446571 QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY \n2 28000 john16524446572 QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw \n3 27000 john16524446573 QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe \n4 37000 john16524446574 QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh2 \n\n ethereum_address \\\n0 0x77733286f58e09dd27229a4c43aa8c589c055b09 \n1 0x38c94ad36f6d99affde350f6d458dd851be95c88 \n2 0xafcfc121796b6c1ee89e432a15793f2efa7e130c \n3 0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa \n4 0xeabaee4f86d50c6fbb4f5925e649c864d684d6cc \n\n ethereum_private_key \\\n0 0xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c... \n1 0x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484... \n2 0x7a6ae4502055818a38cb4f19103f77f65036904ff609... \n3 0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a... \n4 0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90... \n\n bostrom_address \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4 \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4 \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv \n\n cosmos_address \\\n0 cosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latp \n1 cosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63t \n2 cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sj \n3 cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjj \n4 osmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3le \n\n cosmos_seed \\\n0 fiber awkward industry race design bird transf... \n1 wink box during grief liquid maid faint donate... \n2 half famous helmet oil expand gold barely stor... \n3 hold predict empower display clog panic entire... \n4 strong air mosquito police behind pear warfare... \n\n message \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x... \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v... \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4... \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4... \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv... \n\n ethereum_message_signature \\\n0 0x30d7ee1f90e75cbb42180b675658190f7afce4846157... \n1 0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd... \n2 0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f... \n3 0x5e7608320377526131ef41a46c4a71c6e5df98d874e3... \n4 0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K... \n1 {'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/... \n2 {'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe... \n3 {'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3... \n4 {'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU... \n1 eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn... \n2 eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0... \n3 eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE... \n4 eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
039000john16524446570QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G730x77733286f58e09dd27229a4c43aa8c589c055b090xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4xcosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latpfiber awkward industry race design bird transf...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x...0x30d7ee1f90e75cbb42180b675658190f7afce4846157...{'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K...eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU...
122000john16524446571QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY0x38c94ad36f6d99affde350f6d458dd851be95c880x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0vcosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63twink box during grief liquid maid faint donate...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v...0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd...{'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/...eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn...
228000john16524446572QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw0xafcfc121796b6c1ee89e432a15793f2efa7e130c0x7a6ae4502055818a38cb4f19103f77f65036904ff609...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sjhalf famous helmet oil expand gold barely stor...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4...0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f...{'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe...eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0...
327000john16524446573QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjjhold predict empower display clog panic entire...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4...0x5e7608320377526131ef41a46c4a71c6e5df98d874e3...{'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3...eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE...
437000john16524446574QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh20xeabaee4f86d50c6fbb4f5925e649c864d684d6cc0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhvosmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3lestrong air mosquito police behind pear warfare...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv...0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec...{'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp...eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3...
\n
" + "text/plain": " amount nickname avatar \\\n0 37000 john16524556460 QmWjoa15st7pQdqCuo5vKMrpKMjXroJyCXB3Nm148kBpNm \n1 28000 john16524556461 QmfQCwumjRNJ99K2nNHu3w4ofG9cCmfgYK6oan8TLUoVFU \n2 37000 john16524556462 QmVBCneexAk5YwqgmZpK9uLJ7Yp3ztHPSuEhNf4SLwN6RY \n3 28000 john16524556463 QmNbbs86trP1bDhZmnehdhgmAug7sJqwZkAJYzaq4vqDJN \n4 31000 john16524556464 QmRa7u7C9KJc5Hq1xVo5kTFwiFtZzSguoAd6uW9QmrwvF7 \n\n ethereum_address \\\n0 0xa46c3429e76d1fe548dada6de8ad4b34b51c7a9b \n1 0x22ee476481e69175a6aa699bd2cf243a502d32c0 \n2 0x2e17b2d8622154f6cc672eed556f5dc063fc0cd1 \n3 0x6898679f8eb22714a6a6007f5698ca03d989aba0 \n4 0xd0c078c04bc16329e6ad0f9660b604d815526215 \n\n ethereum_private_key \\\n0 0x16413d97eafd10e2dba139df366f2000ce6715a2688d... \n1 0x59cd4a1e2c24acc5b624b6393b1adb5cf9e98e510670... \n2 0xad915cbf7122fec8901fc75f8c70cf1f40f19f6c7c3d... \n3 0x76d74947ea7c816b275cdc2dc4d070c3e5fde17b4bbe... \n4 0xd5ee3986f420f753690313e7ad986125b290f7af5f45... \n\n bostrom_address \\\n0 bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv \n1 bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz \n2 bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6 \n3 bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2 \n4 bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc \n\n cosmos_address \\\n0 cosmos1gsdle3czkc5gr25yykd2f5jjrh623nmkukmp7t \n1 cosmos12fqp8lu305fm6jmuahl337eruln9c78azjrh79 \n2 osmo1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcdd9l3p90 \n3 cosmos1xd76dswkdt2vl3fr9eh9g5rjymx9yjdnflhxsd \n4 cosmos1zyuzqfq8raq8fss7jvt9w8gxsrz4y96z22kzul \n\n cosmos_seed \\\n0 there admit toy stairs tree breeze taxi dress ... \n1 version giggle fruit orchard man royal false w... \n2 napkin program tiny demise young cousin extend... \n3 alpha concert boil hip polar outdoor remember ... \n4 royal memory element nurse tiny brand expand c... \n\n message \\\n0 bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv... \n1 bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz... \n2 bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6... \n3 bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2... \n4 bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc... \n\n ethereum_message_signature \\\n0 0x7b31050cea96cb12eac7b3d4008b44cbf88a70ced847... \n1 0x1aeb731b6fc6f1082d9168644dd66cc493b469bf6954... \n2 0x0be441a65c38e3edb63dca9b46419ec14d8a9bd8ddea... \n3 0x329e5ba1786a7d1163bb297862a8e0bae468e0904ffe... \n4 0x48d9bbdbb64db41baccba500163e3741ac3e857886da... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A2b4HMzGa4a5dMbgTlrQkXQLvFIOFeLW8... \n1 {'pub_key': 'AnVFAajCMBRdW1/vKKzDaND5ilo+pnp5g... \n2 {'pub_key': 'AxEjEV43UTJBvprmwk3LMwM0hvwhguiSS... \n3 {'pub_key': 'AnEN0gpvotvXcDI3vB3RzWQypvoPovFya... \n4 {'pub_key': 'A186S7pWxo+VUTKbL9sZY4J+TOKAm4qrj... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQTJiNEhNekdhNGE1ZE1iZ1RsclFrWF... \n1 eyJwdWJfa2V5IjoiQW5WRkFhakNNQlJkVzEvdktLekRhTk... \n2 eyJwdWJfa2V5IjoiQXhFakVWNDNVVEpCdnBybXdrM0xNd0... \n3 eyJwdWJfa2V5IjoiQW5FTjBncHZvdHZYY0RJM3ZCM1J6V1... \n4 eyJwdWJfa2V5IjoiQTE4NlM3cFd4bytWVVRLYkw5c1pZNE... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
037000john16524556460QmWjoa15st7pQdqCuo5vKMrpKMjXroJyCXB3Nm148kBpNm0xa46c3429e76d1fe548dada6de8ad4b34b51c7a9b0x16413d97eafd10e2dba139df366f2000ce6715a2688d...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqvcosmos1gsdle3czkc5gr25yykd2f5jjrh623nmkukmp7tthere admit toy stairs tree breeze taxi dress ...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv...0x7b31050cea96cb12eac7b3d4008b44cbf88a70ced847...{'pub_key': 'A2b4HMzGa4a5dMbgTlrQkXQLvFIOFeLW8...eyJwdWJfa2V5IjoiQTJiNEhNekdhNGE1ZE1iZ1RsclFrWF...
128000john16524556461QmfQCwumjRNJ99K2nNHu3w4ofG9cCmfgYK6oan8TLUoVFU0x22ee476481e69175a6aa699bd2cf243a502d32c00x59cd4a1e2c24acc5b624b6393b1adb5cf9e98e510670...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqzcosmos12fqp8lu305fm6jmuahl337eruln9c78azjrh79version giggle fruit orchard man royal false w...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz...0x1aeb731b6fc6f1082d9168644dd66cc493b469bf6954...{'pub_key': 'AnVFAajCMBRdW1/vKKzDaND5ilo+pnp5g...eyJwdWJfa2V5IjoiQW5WRkFhakNNQlJkVzEvdktLekRhTk...
237000john16524556462QmVBCneexAk5YwqgmZpK9uLJ7Yp3ztHPSuEhNf4SLwN6RY0x2e17b2d8622154f6cc672eed556f5dc063fc0cd10xad915cbf7122fec8901fc75f8c70cf1f40f19f6c7c3d...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6osmo1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcdd9l3p90napkin program tiny demise young cousin extend...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6...0x0be441a65c38e3edb63dca9b46419ec14d8a9bd8ddea...{'pub_key': 'AxEjEV43UTJBvprmwk3LMwM0hvwhguiSS...eyJwdWJfa2V5IjoiQXhFakVWNDNVVEpCdnBybXdrM0xNd0...
328000john16524556463QmNbbs86trP1bDhZmnehdhgmAug7sJqwZkAJYzaq4vqDJN0x6898679f8eb22714a6a6007f5698ca03d989aba00x76d74947ea7c816b275cdc2dc4d070c3e5fde17b4bbe...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2cosmos1xd76dswkdt2vl3fr9eh9g5rjymx9yjdnflhxsdalpha concert boil hip polar outdoor remember ...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2...0x329e5ba1786a7d1163bb297862a8e0bae468e0904ffe...{'pub_key': 'AnEN0gpvotvXcDI3vB3RzWQypvoPovFya...eyJwdWJfa2V5IjoiQW5FTjBncHZvdHZYY0RJM3ZCM1J6V1...
431000john16524556464QmRa7u7C9KJc5Hq1xVo5kTFwiFtZzSguoAd6uW9QmrwvF70xd0c078c04bc16329e6ad0f9660b604d8155262150xd5ee3986f420f753690313e7ad986125b290f7af5f45...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zccosmos1zyuzqfq8raq8fss7jvt9w8gxsrz4y96z22kzulroyal memory element nurse tiny brand expand c...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc...0x48d9bbdbb64db41baccba500163e3741ac3e857886da...{'pub_key': 'A186S7pWxo+VUTKbL9sZY4J+TOKAm4qrj...eyJwdWJfa2V5IjoiQTE4NlM3cFd4bytWVVRLYkw5c1pZNE...
\n
" }, "execution_count": 2, "metadata": {}, @@ -194,9 +194,9 @@ " claims_list = list(tqdm(pool.imap(generate_wallet_data, tasks), total=len(tasks)))\n", "\n", " claims_df = pd.DataFrame(claims_list)\n", - " claims_df.to_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + " claims_df.to_csv('temp/claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", "else:\n", - " claims_df = pd.read_csv('claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", + " claims_df = pd.read_csv('temp/claims_ethereum_test_data_without_proof_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv')\n", "claims_df.head()" ], "metadata": { @@ -264,7 +264,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "d46d0fcae0f74f80b392fc0ccda4bec6" + "model_id": "c859f1ded7c44c698849b67356929deb" } }, "metadata": {}, @@ -275,8 +275,8 @@ "output_type": "stream", "text": [ "yarn run v1.22.18\n", - "$ ts-node index.ts --input root_testing_source_100_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 41\n", - "Merkle root: 262b663b1158c081791de9d0a24c09dd2129fba74e28c4efe8d03928d64fb437\n", + "$ ts-node index.ts --input temp/root_testing_source_100_addresses.json --output temp/proofs_0.json --start_index 0 --end_index 41\n", + "Merkle root: 9cd04665a7e1232d6af027e7890cb5b043a694d5272ec74931a37bb825054c37\n", "Number of addresses in the Merkle tree: 41\n", "Done in 1.18s.\n", "\n" @@ -315,8 +315,8 @@ "outputs": [ { "data": { - "text/plain": " amount nickname avatar \\\n0 39000 john16524446570 QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G73 \n1 22000 john16524446571 QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY \n2 28000 john16524446572 QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw \n3 27000 john16524446573 QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe \n4 37000 john16524446574 QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh2 \n\n ethereum_address \\\n0 0x77733286f58e09dd27229a4c43aa8c589c055b09 \n1 0x38c94ad36f6d99affde350f6d458dd851be95c88 \n2 0xafcfc121796b6c1ee89e432a15793f2efa7e130c \n3 0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa \n4 0xeabaee4f86d50c6fbb4f5925e649c864d684d6cc \n\n ethereum_private_key \\\n0 0xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c... \n1 0x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484... \n2 0x7a6ae4502055818a38cb4f19103f77f65036904ff609... \n3 0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a... \n4 0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90... \n\n bostrom_address \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4 \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4 \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv \n\n cosmos_address \\\n0 cosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latp \n1 cosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63t \n2 cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sj \n3 cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjj \n4 osmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3le \n\n cosmos_seed \\\n0 fiber awkward industry race design bird transf... \n1 wink box during grief liquid maid faint donate... \n2 half famous helmet oil expand gold barely stor... \n3 hold predict empower display clog panic entire... \n4 strong air mosquito police behind pear warfare... \n\n message \\\n0 bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x... \n1 bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v... \n2 bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4... \n3 bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4... \n4 bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv... \n\n ethereum_message_signature \\\n0 0x30d7ee1f90e75cbb42180b675658190f7afce4846157... \n1 0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd... \n2 0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f... \n3 0x5e7608320377526131ef41a46c4a71c6e5df98d874e3... \n4 0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K... \n1 {'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/... \n2 {'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe... \n3 {'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3... \n4 {'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU... \n1 eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn... \n2 eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0... \n3 eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE... \n4 eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3... \n\n ethereum_proof \\\n0 [a53ec1fe56e5d811717a6094a58a7de639a68f75bfe0e... \n1 [12a8de125cbf3ef5b253dd22dd48b2e47d909245942ab... \n2 [f134ebdd5b30a07f715cc1d3a4aec8c8f6afb2bf0584e... \n3 [da3ee3cbb3abec0f903a5d35e01430612b79426f52f72... \n4 [058db2378e06ddb5bda7d217bec41c356d11e1fff2161... \n\n cosmos_proof \n0 [3f9ba271dd2fd7f4c8efeb867fd038e5d3730fc2497e5... \n1 [11134c99cc32ad3d35894f454196872926bed1b983a82... \n2 [128880e27967800ebc916608fc66df0c9c3108f448be5... \n3 [9146ef5d2c6679e6711cdd4c4245428e10d09914dc3e3... \n4 [652e447ac6f4d4d409b84bc3ace2103d692cb3ab78a1c... ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
039000john16524446570QmPoZoWScNbRC1cqMDfwFk4srgJWajp4LUnzpZnCQq1G730x77733286f58e09dd27229a4c43aa8c589c055b090xda59de6877336a18c1ddb0bcce1c9e12ba6e5ce7dc6c...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4xcosmos1xmdpqy8mlwnud5whzgsva38tws29qwhll6latpfiber awkward industry race design bird transf...bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x...0x30d7ee1f90e75cbb42180b675658190f7afce4846157...{'pub_key': 'AqFUzM7XjyUgIzkaJ3xsNiM33/hhI2A2K...eyJwdWJfa2V5IjoiQXFGVXpNN1hqeVVnSXprYUozeHNOaU...[a53ec1fe56e5d811717a6094a58a7de639a68f75bfe0e...[3f9ba271dd2fd7f4c8efeb867fd038e5d3730fc2497e5...
122000john16524446571QmU2wN9M9ue2mTvZ1e6EGw8prtQjUTfkuR7cKCvMPLSZuY0x38c94ad36f6d99affde350f6d458dd851be95c880x03e5f19ded2a4b31fecb75e9a57abe40d0bdd6edf484...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0vcosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63twink box during grief liquid maid faint donate...bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v...0x4f84ef6848c70cddb5e66ff78038c3f030fadb08cbbd...{'pub_key': 'AhsicgXQ9qnBrDIpMdCC+ft3GsqGnne+/...eyJwdWJfa2V5IjoiQWhzaWNnWFE5cW5CckRJcE1kQ0MrZn...[12a8de125cbf3ef5b253dd22dd48b2e47d909245942ab...[11134c99cc32ad3d35894f454196872926bed1b983a82...
228000john16524446572QmP1PnnK1EWzD5VheBrdPBKydRZdvqrVWLXhTak1WpjuMw0xafcfc121796b6c1ee89e432a15793f2efa7e130c0x7a6ae4502055818a38cb4f19103f77f65036904ff609...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4cosmos19ssajxkwu8kvff9um8nmhr4kfnptpp8v6lh3sjhalf famous helmet oil expand gold barely stor...bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4...0x876a2ee206f67f0898686ed7e3768aec1d4ab72ed47f...{'pub_key': 'A6ZRALY1N25cUS2bhLSTG+Bd703Zev3qe...eyJwdWJfa2V5IjoiQTZaUkFMWTFOMjVjVVMyYmhMU1RHK0...[f134ebdd5b30a07f715cc1d3a4aec8c8f6afb2bf0584e...[128880e27967800ebc916608fc66df0c9c3108f448be5...
327000john16524446573QmWkjPj9Rf5RtJcAm2EFL1iWTxRGWHYxhszxHckRKHDcqe0xffe9bee97bf5b4cfde050cbd7e4cfefec41f37fa0xe5c340540f74cc190afc2a5bc37038bab1c3c7f32e2a...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4cosmos1eqdfdkllfpcnlcwrpppuq8v0z3j20aqeq2rzjjhold predict empower display clog panic entire...bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4...0x5e7608320377526131ef41a46c4a71c6e5df98d874e3...{'pub_key': 'AlFr40raiXo1Q/E20X193lGDzRc1xfeT3...eyJwdWJfa2V5IjoiQWxGcjQwcmFpWG8xUS9FMjBYMTkzbE...[da3ee3cbb3abec0f903a5d35e01430612b79426f52f72...[9146ef5d2c6679e6711cdd4c4245428e10d09914dc3e3...
437000john16524446574QmV2AUTLGbzRdhFNgCaM9eaucRUSpSF7NuzKoJCvcZdJh20xeabaee4f86d50c6fbb4f5925e649c864d684d6cc0x7a0bc17c08f9e25771a2016b7c6ca562a84306fd6d90...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhvosmo1f7s9vzv79ewa6htzd0gzhrdxf9p45lux86v3lestrong air mosquito police behind pear warfare...bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv...0x92fc66a16e33c62edf7aefcf0f934889501b3bb355ec...{'pub_key': 'AwR4kuj4TZnKMvDbFEO6Tgv/CRW5eriKp...eyJwdWJfa2V5IjoiQXdSNGt1ajRUWm5LTXZEYkZFTzZUZ3...[058db2378e06ddb5bda7d217bec41c356d11e1fff2161...[652e447ac6f4d4d409b84bc3ace2103d692cb3ab78a1c...
\n
" + "text/plain": " amount nickname avatar \\\n0 37000 john16524556460 QmWjoa15st7pQdqCuo5vKMrpKMjXroJyCXB3Nm148kBpNm \n1 28000 john16524556461 QmfQCwumjRNJ99K2nNHu3w4ofG9cCmfgYK6oan8TLUoVFU \n2 37000 john16524556462 QmVBCneexAk5YwqgmZpK9uLJ7Yp3ztHPSuEhNf4SLwN6RY \n3 28000 john16524556463 QmNbbs86trP1bDhZmnehdhgmAug7sJqwZkAJYzaq4vqDJN \n4 31000 john16524556464 QmRa7u7C9KJc5Hq1xVo5kTFwiFtZzSguoAd6uW9QmrwvF7 \n\n ethereum_address \\\n0 0xa46c3429e76d1fe548dada6de8ad4b34b51c7a9b \n1 0x22ee476481e69175a6aa699bd2cf243a502d32c0 \n2 0x2e17b2d8622154f6cc672eed556f5dc063fc0cd1 \n3 0x6898679f8eb22714a6a6007f5698ca03d989aba0 \n4 0xd0c078c04bc16329e6ad0f9660b604d815526215 \n\n ethereum_private_key \\\n0 0x16413d97eafd10e2dba139df366f2000ce6715a2688d... \n1 0x59cd4a1e2c24acc5b624b6393b1adb5cf9e98e510670... \n2 0xad915cbf7122fec8901fc75f8c70cf1f40f19f6c7c3d... \n3 0x76d74947ea7c816b275cdc2dc4d070c3e5fde17b4bbe... \n4 0xd5ee3986f420f753690313e7ad986125b290f7af5f45... \n\n bostrom_address \\\n0 bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv \n1 bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz \n2 bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6 \n3 bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2 \n4 bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc \n\n cosmos_address \\\n0 cosmos1gsdle3czkc5gr25yykd2f5jjrh623nmkukmp7t \n1 cosmos12fqp8lu305fm6jmuahl337eruln9c78azjrh79 \n2 osmo1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcdd9l3p90 \n3 cosmos1xd76dswkdt2vl3fr9eh9g5rjymx9yjdnflhxsd \n4 cosmos1zyuzqfq8raq8fss7jvt9w8gxsrz4y96z22kzul \n\n cosmos_seed \\\n0 there admit toy stairs tree breeze taxi dress ... \n1 version giggle fruit orchard man royal false w... \n2 napkin program tiny demise young cousin extend... \n3 alpha concert boil hip polar outdoor remember ... \n4 royal memory element nurse tiny brand expand c... \n\n message \\\n0 bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv... \n1 bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz... \n2 bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6... \n3 bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2... \n4 bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc... \n\n ethereum_message_signature \\\n0 0x7b31050cea96cb12eac7b3d4008b44cbf88a70ced847... \n1 0x1aeb731b6fc6f1082d9168644dd66cc493b469bf6954... \n2 0x0be441a65c38e3edb63dca9b46419ec14d8a9bd8ddea... \n3 0x329e5ba1786a7d1163bb297862a8e0bae468e0904ffe... \n4 0x48d9bbdbb64db41baccba500163e3741ac3e857886da... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'A2b4HMzGa4a5dMbgTlrQkXQLvFIOFeLW8... \n1 {'pub_key': 'AnVFAajCMBRdW1/vKKzDaND5ilo+pnp5g... \n2 {'pub_key': 'AxEjEV43UTJBvprmwk3LMwM0hvwhguiSS... \n3 {'pub_key': 'AnEN0gpvotvXcDI3vB3RzWQypvoPovFya... \n4 {'pub_key': 'A186S7pWxo+VUTKbL9sZY4J+TOKAm4qrj... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQTJiNEhNekdhNGE1ZE1iZ1RsclFrWF... \n1 eyJwdWJfa2V5IjoiQW5WRkFhakNNQlJkVzEvdktLekRhTk... \n2 eyJwdWJfa2V5IjoiQXhFakVWNDNVVEpCdnBybXdrM0xNd0... \n3 eyJwdWJfa2V5IjoiQW5FTjBncHZvdHZYY0RJM3ZCM1J6V1... \n4 eyJwdWJfa2V5IjoiQTE4NlM3cFd4bytWVVRLYkw5c1pZNE... \n\n ethereum_proof \\\n0 [70a9a5e7aa10854e6f167eda7b352b64b24a562ca26eb... \n1 [399a98cd3d212979c91bc8d9ad03060e824f9435af263... \n2 [dad8722f9cd38c8d3c4cc8d93fb93f2dcb065836c27ea... \n3 [72ab4c77c67b75ed61e371b80c3e14f572b119cb33371... \n4 [422b95ce4a98d42b8004f37d4d762f381aaa271d6eca5... \n\n cosmos_proof \n0 [7dcd5af93f173319c6c356493b959cde219bc13ae38a9... \n1 [fc56c0bfb765e57ca284837bbff37e6e61780dce7e258... \n2 [d2ba1908f7c1f342ab59767a448b04f2b810c4b6826d8... \n3 [9e9b246ea79f0d400d03ce1e6f02a8c7be784f8090563... \n4 [0c48f41cd026f7f611d08ff3e0001096f3c29e271ca1d... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
037000john16524556460QmWjoa15st7pQdqCuo5vKMrpKMjXroJyCXB3Nm148kBpNm0xa46c3429e76d1fe548dada6de8ad4b34b51c7a9b0x16413d97eafd10e2dba139df366f2000ce6715a2688d...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqvcosmos1gsdle3czkc5gr25yykd2f5jjrh623nmkukmp7tthere admit toy stairs tree breeze taxi dress ...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv...0x7b31050cea96cb12eac7b3d4008b44cbf88a70ced847...{'pub_key': 'A2b4HMzGa4a5dMbgTlrQkXQLvFIOFeLW8...eyJwdWJfa2V5IjoiQTJiNEhNekdhNGE1ZE1iZ1RsclFrWF...[70a9a5e7aa10854e6f167eda7b352b64b24a562ca26eb...[7dcd5af93f173319c6c356493b959cde219bc13ae38a9...
128000john16524556461QmfQCwumjRNJ99K2nNHu3w4ofG9cCmfgYK6oan8TLUoVFU0x22ee476481e69175a6aa699bd2cf243a502d32c00x59cd4a1e2c24acc5b624b6393b1adb5cf9e98e510670...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqzcosmos12fqp8lu305fm6jmuahl337eruln9c78azjrh79version giggle fruit orchard man royal false w...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz...0x1aeb731b6fc6f1082d9168644dd66cc493b469bf6954...{'pub_key': 'AnVFAajCMBRdW1/vKKzDaND5ilo+pnp5g...eyJwdWJfa2V5IjoiQW5WRkFhakNNQlJkVzEvdktLekRhTk...[399a98cd3d212979c91bc8d9ad03060e824f9435af263...[fc56c0bfb765e57ca284837bbff37e6e61780dce7e258...
237000john16524556462QmVBCneexAk5YwqgmZpK9uLJ7Yp3ztHPSuEhNf4SLwN6RY0x2e17b2d8622154f6cc672eed556f5dc063fc0cd10xad915cbf7122fec8901fc75f8c70cf1f40f19f6c7c3d...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6osmo1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcdd9l3p90napkin program tiny demise young cousin extend...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6...0x0be441a65c38e3edb63dca9b46419ec14d8a9bd8ddea...{'pub_key': 'AxEjEV43UTJBvprmwk3LMwM0hvwhguiSS...eyJwdWJfa2V5IjoiQXhFakVWNDNVVEpCdnBybXdrM0xNd0...[dad8722f9cd38c8d3c4cc8d93fb93f2dcb065836c27ea...[d2ba1908f7c1f342ab59767a448b04f2b810c4b6826d8...
328000john16524556463QmNbbs86trP1bDhZmnehdhgmAug7sJqwZkAJYzaq4vqDJN0x6898679f8eb22714a6a6007f5698ca03d989aba00x76d74947ea7c816b275cdc2dc4d070c3e5fde17b4bbe...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2cosmos1xd76dswkdt2vl3fr9eh9g5rjymx9yjdnflhxsdalpha concert boil hip polar outdoor remember ...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2...0x329e5ba1786a7d1163bb297862a8e0bae468e0904ffe...{'pub_key': 'AnEN0gpvotvXcDI3vB3RzWQypvoPovFya...eyJwdWJfa2V5IjoiQW5FTjBncHZvdHZYY0RJM3ZCM1J6V1...[72ab4c77c67b75ed61e371b80c3e14f572b119cb33371...[9e9b246ea79f0d400d03ce1e6f02a8c7be784f8090563...
431000john16524556464QmRa7u7C9KJc5Hq1xVo5kTFwiFtZzSguoAd6uW9QmrwvF70xd0c078c04bc16329e6ad0f9660b604d8155262150xd5ee3986f420f753690313e7ad986125b290f7af5f45...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zccosmos1zyuzqfq8raq8fss7jvt9w8gxsrz4y96z22kzulroyal memory element nurse tiny brand expand c...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc...0x48d9bbdbb64db41baccba500163e3741ac3e857886da...{'pub_key': 'A186S7pWxo+VUTKbL9sZY4J+TOKAm4qrj...eyJwdWJfa2V5IjoiQTE4NlM3cFd4bytWVVRLYkw5c1pZNE...[422b95ce4a98d42b8004f37d4d762f381aaa271d6eca5...[0c48f41cd026f7f611d08ff3e0001096f3c29e271ca1d...
\n
" }, "execution_count": 5, "metadata": {}, @@ -371,7 +371,7 @@ "outputs": [], "source": [ "for i in range(ceil(NUMBER_OF_ACTIVATED_PARTICIPANTS/10_000)):\n", - " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME}')" + " claims_with_proofs_df.loc[i*10_000:(i+1)*10_000,:].to_csv(f'temp/{i}_{PARTICIPANTS_FILE_NAME.split(\"/\")[1]}')" ], "metadata": { "collapsed": false, @@ -539,7 +539,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Treasury contract address: bostrom199j0396e5rsdjp49v492l75u82xtgsuxl74jswawvefjggpj5ctsua2nl6\n" + "Treasury contract address: bostrom1rpxf55u22q2tly9y8rgdrjgx9p52sus7jugaevj3hdt0z7sgvkcs4cmls6\n" ] } ], @@ -584,7 +584,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom1pv56ghmgnt9sv0ry6fg3rqf6wgfnckksppltamwsdnd0e0e0kfms92ntpq\n" + "Gift contract address: bostrom17s8kkfm5lf8lacz704f4fjmfxzuvyqd8cksakrlhnrass4yacvxqhu673c\n" ] } ], @@ -679,7 +679,7 @@ "\trecipient: Treasury Contract\n", "\tamount: 110000000boot\n", "Gas used: 73,150\n", - "Tx hash: 355AD13B48082E233292A4E767EF8C5307ABA054C5D14272FFEF3821888479C0\n" + "Tx hash: B5DBA805FBE8E9882A7D2094273924DAA72402C2778E684F74F2A6F59F7F9D87\n" ] } ], @@ -723,7 +723,7 @@ "\tdenomination: boot\n", "\tamount: 110,000,000\n", "Gas used: 135,284\n", - "Tx hash: 90612CA9717CD059FC09821D723DEF4BEB8C2FE234B99B1A4C75B50185903558\n" + "Tx hash: DDD2E9063B7140FD3A9D63E92B230C750B93A78C915CE6725C04D8E76FF17839\n" ] } ], @@ -787,9 +787,9 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: 262b663b1158c081791de9d0a24c09dd2129fba74e28c4efe8d03928d64fb437\n", + "\tmerkle_root: 9cd04665a7e1232d6af027e7890cb5b043a694d5272ec74931a37bb825054c37\n", "Gas used: 131,251\n", - "Tx hash: AC0A3CDBDED5ACB837ED3533EB13E6A9F08BFBC9B4B58A35B2164C1C9AAFF08C\n" + "Tx hash: 47FDA80F5D2E56E1D2C567341ABFF9028663FB6EC0906E95C19F9C0DA77FE465\n" ] } ], @@ -828,8 +828,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom1pv56ghmgnt9sv0ry6fg3rqf6wgfnckksppltamwsdnd0e0e0kfms92ntpq\n", - "{'data': {'merkle_root': '262b663b1158c081791de9d0a24c09dd2129fba74e28c4efe8d03928d64fb437'}}\n" + "Gift contract bostrom17s8kkfm5lf8lacz704f4fjmfxzuvyqd8cksakrlhnrass4yacvxqhu673c\n", + "{'data': {'merkle_root': '9cd04665a7e1232d6af027e7890cb5b043a694d5272ec74931a37bb825054c37'}}\n" ] } ], @@ -877,7 +877,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "f5339d8483a04beb9210f40243a8dbc6" + "model_id": "6b1152631b8f45b0a24c0fe24a12faaa" } }, "metadata": {}, @@ -923,45 +923,45 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x\n", + "\treceiver: bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv\n", "\tamount: 1boot\n", - "\treceiver: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", + "\treceiver: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", "\tamount: 1boot\n", - "\treceiver: bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4\n", + "\treceiver: bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6\n", "\tamount: 1boot\n", - "\treceiver: bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4\n", + "\treceiver: bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2\n", "\tamount: 1boot\n", - "\treceiver: bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv\n", + "\treceiver: bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lefp47zz6r4tzmy7f6sr4ns85jtj7k6gyq82p4\n", + "\treceiver: bostrom10usrwj4knqraus5wcek7a8yxxk9n7yh47u6m0c\n", "\tamount: 1boot\n", - "\treceiver: bostrom14x74gw7ukhyntwgp46dzz5gjv022hra4pthm74\n", + "\treceiver: bostrom1qvpwm6a2e0asksgr0qysu29v42gwvgrhrrl3n5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1fmszqsz52cg4ez05du8lxmrllhzmgfehdn4v5f\n", + "\treceiver: bostrom1c7s7rxtm7wucxv00uldyxp3cu9jp9yfsd4hlw9\n", "\tamount: 1boot\n", - "\treceiver: bostrom1mplmd4h768z98ftzztwdrldswvws3xg6jzv524\n", + "\treceiver: bostrom1exwwe53ev75afrhgrcguh8dchq3v3836ul0ndp\n", "\tamount: 1boot\n", - "\treceiver: bostrom16xhjx3v840m8p466pzq6n7zja67c4vggrvvk5g\n", + "\treceiver: bostrom1y0fyp8mrmjnj8mup6tlz857hu3atuqmypljdux\n", "\tamount: 1boot\n", - "\treceiver: bostrom1lvnud0sdnavg5mp9p2rvnndqvmlae4n37tmz7u\n", + "\treceiver: bostrom155ckth72jne85wf5z7ly62qgct4d2sy68sazmq\n", "\tamount: 1boot\n", - "\treceiver: bostrom1xp30e4lrl3775wa7e3zqyls33q3xc3vtnt3kjr\n", + "\treceiver: bostrom1lzdt4wdzrrf9rgc2sr6kt8dez2exfl6u4jquex\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jd6jjaxhxapw0gsva6s5pnelyw6u330t3fzkrp\n", + "\treceiver: bostrom12ghyly4gvdnkaj6apqnjadczmejp2x27kw2pku\n", "\tamount: 1boot\n", - "\treceiver: bostrom1ez2xefskr2yszx38jr5jdqfyjpy8avutresxw3\n", + "\treceiver: bostrom1y49f2ja6kjfmdqyvd8dmd8gmgpctl3mzk29ma5\n", "\tamount: 1boot\n", - "\treceiver: bostrom1u4mh92dn4e0gzp5x8s9fh9p40vrg26k26tx2rd\n", + "\treceiver: bostrom1glz3832qtlc9kx5mu652yclz090yjadpy352ad\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h2c4xqkcpcdmz747ryf40ex6tg8f0afrepv4vv\n", + "\treceiver: bostrom17fadfef3kgjvgvzsn7cq2frwa43wft2rvcwrwy\n", "\tamount: 1boot\n", - "\treceiver: bostrom1h26f0uyukrghtzxpmanzg7ccay79v2sc4s395s\n", + "\treceiver: bostrom1eky6aqsgac5xasmh67fwg67y626dv4c3a77lqp\n", "\tamount: 1boot\n", - "\treceiver: bostrom137m08t8mx9j3zm72eqe2syh7v7409w7wls5cps\n", + "\treceiver: bostrom1809tax5g8prmdljgmhxvav5x99a3hf28874xrp\n", "\tamount: 1boot\n", - "\treceiver: bostrom1jua7m5xwqa3yvmva66dgavhvk0d4lfzy0rwu2j\n", + "\treceiver: bostrom1fklqnt78adke0ttgamla85xesjamu8jw4qc4fm\n", "\tamount: 1boot\n", - "\treceiver: bostrom1t0sf2yg5rqehtwj80uypmfs7t29x8n58fctz2z\n", + "\treceiver: bostrom1v0lzvpq7n5jrw4wwx9zna0gmerx2gpc32f6tsu\n", "\tamount: 1boot\n", "\n", "coin spent\n", @@ -1009,48 +1009,48 @@ "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", "\n", "transfer\n", - "\trecipient: bostrom1xmdpqy8mlwnud5whzgsva38tws29qwhluftw4x\n", + "\trecipient: bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv\n", "\tamount: 1boot\n", - "\trecipient: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", + "\trecipient: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", "\tamount: 1boot\n", - "\trecipient: bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4\n", + "\trecipient: bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6\n", "\tamount: 1boot\n", - "\trecipient: bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4\n", + "\trecipient: bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2\n", "\tamount: 1boot\n", - "\trecipient: bostrom1f7s9vzv79ewa6htzd0gzhrdxf9p45luxvjtjhv\n", + "\trecipient: bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lefp47zz6r4tzmy7f6sr4ns85jtj7k6gyq82p4\n", + "\trecipient: bostrom10usrwj4knqraus5wcek7a8yxxk9n7yh47u6m0c\n", "\tamount: 1boot\n", - "\trecipient: bostrom14x74gw7ukhyntwgp46dzz5gjv022hra4pthm74\n", + "\trecipient: bostrom1qvpwm6a2e0asksgr0qysu29v42gwvgrhrrl3n5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1fmszqsz52cg4ez05du8lxmrllhzmgfehdn4v5f\n", + "\trecipient: bostrom1c7s7rxtm7wucxv00uldyxp3cu9jp9yfsd4hlw9\n", "\tamount: 1boot\n", - "\trecipient: bostrom1mplmd4h768z98ftzztwdrldswvws3xg6jzv524\n", + "\trecipient: bostrom1exwwe53ev75afrhgrcguh8dchq3v3836ul0ndp\n", "\tamount: 1boot\n", - "\trecipient: bostrom16xhjx3v840m8p466pzq6n7zja67c4vggrvvk5g\n", + "\trecipient: bostrom1y0fyp8mrmjnj8mup6tlz857hu3atuqmypljdux\n", "\tamount: 1boot\n", - "\trecipient: bostrom1lvnud0sdnavg5mp9p2rvnndqvmlae4n37tmz7u\n", + "\trecipient: bostrom155ckth72jne85wf5z7ly62qgct4d2sy68sazmq\n", "\tamount: 1boot\n", - "\trecipient: bostrom1xp30e4lrl3775wa7e3zqyls33q3xc3vtnt3kjr\n", + "\trecipient: bostrom1lzdt4wdzrrf9rgc2sr6kt8dez2exfl6u4jquex\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jd6jjaxhxapw0gsva6s5pnelyw6u330t3fzkrp\n", + "\trecipient: bostrom12ghyly4gvdnkaj6apqnjadczmejp2x27kw2pku\n", "\tamount: 1boot\n", - "\trecipient: bostrom1ez2xefskr2yszx38jr5jdqfyjpy8avutresxw3\n", + "\trecipient: bostrom1y49f2ja6kjfmdqyvd8dmd8gmgpctl3mzk29ma5\n", "\tamount: 1boot\n", - "\trecipient: bostrom1u4mh92dn4e0gzp5x8s9fh9p40vrg26k26tx2rd\n", + "\trecipient: bostrom1glz3832qtlc9kx5mu652yclz090yjadpy352ad\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h2c4xqkcpcdmz747ryf40ex6tg8f0afrepv4vv\n", + "\trecipient: bostrom17fadfef3kgjvgvzsn7cq2frwa43wft2rvcwrwy\n", "\tamount: 1boot\n", - "\trecipient: bostrom1h26f0uyukrghtzxpmanzg7ccay79v2sc4s395s\n", + "\trecipient: bostrom1eky6aqsgac5xasmh67fwg67y626dv4c3a77lqp\n", "\tamount: 1boot\n", - "\trecipient: bostrom137m08t8mx9j3zm72eqe2syh7v7409w7wls5cps\n", + "\trecipient: bostrom1809tax5g8prmdljgmhxvav5x99a3hf28874xrp\n", "\tamount: 1boot\n", - "\trecipient: bostrom1jua7m5xwqa3yvmva66dgavhvk0d4lfzy0rwu2j\n", + "\trecipient: bostrom1fklqnt78adke0ttgamla85xesjamu8jw4qc4fm\n", "\tamount: 1boot\n", - "\trecipient: bostrom1t0sf2yg5rqehtwj80uypmfs7t29x8n58fctz2z\n", + "\trecipient: bostrom1v0lzvpq7n5jrw4wwx9zna0gmerx2gpc32f6tsu\n", "\tamount: 1boot\n", "Gas used: 564,949\n", - "Tx hash: 41A8F4B834F5A98553600C497BBFB46C3DBC6FAD95A29BA7A7DA80BB62F46E2A\n" + "Tx hash: 702F9CC6E07293D2CCB69CB629E77C95099CEF0556750C81EC1FF3054A565003\n" ] } ], @@ -1094,7 +1094,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "b995fc3a458d49599c0434b8dd1911b5" + "model_id": "cfafada46a8a48c2921611e7de1ace41" } }, "metadata": {}, @@ -1103,7 +1103,7 @@ ], "source": [ "def execute_participation(row_index: int) -> bool:\n", - " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address}')\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME.split(\"/\")[1]} {row_index} {gift_contract_address}')\n", " if _output:\n", " return _output\n", " else:\n", @@ -1348,7 +1348,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "bf6fc2d3d6e84502959307c0744a5696" + "model_id": "b7bfed96b7674e1e95337253c99156fc" } }, "metadata": {}, @@ -1357,7 +1357,7 @@ ], "source": [ "def execute_release(row_index: int) -> bool:\n", - " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME} {row_index} {gift_contract_address} True')\n", + " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME.split(\"/\")[1]} {row_index} {gift_contract_address} True')\n", " if _output:\n", " return _output\n", " else:\n", @@ -1408,36 +1408,36 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", - "\tamount: 18336boot\n", + "\treceiver: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", + "\tamount: 25923boot\n", "\n", "coin spent\n", "\tspender: Treasury Contract\n", - "\tamount: 18336boot\n", + "\tamount: 25923boot\n", "\n", "execute\n", "\texecute contract: Gift Contract\n", "\texecute contract: Treasury Contract\n", "\n", - "message from bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", + "\trecipient: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", "\tsender: Treasury Contract\n", - "\tamount: 18336boot\n", + "\tamount: 25923boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", - "\tgift_address: 0x38c94ad36f6d99affde350f6d458dd851be95c88\n", + "\taddress: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", + "\tgift_address: 0x22ee476481e69175a6aa699bd2cf243a502d32c0\n", "\tstage: 9\n", - "\tamount: 18,336\n", + "\tamount: 25,923\n", "\t_contract_address: Treasury Contract\n", "\taction: execute\n", "\towner: Gift Contract\n", - "Gas used: 230,301\n", - "Tx hash: 6493B9D0BBF3FF00D69730BFD1144C990EBCCF9341970125DD8C15D4E98831A0\n" + "Gas used: 230,340\n", + "Tx hash: 2BA167AF9F3EAB825D3129E06AECD13352548BD65C17DF0B55DDF60F17DDD0A6\n" ] } ], @@ -1463,36 +1463,36 @@ "Events\n", "\n", "coin received\n", - "\treceiver: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", - "\tamount: 17587boot\n", + "\treceiver: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", + "\tamount: 25188boot\n", "\n", "coin spent\n", "\tspender: Treasury Contract\n", - "\tamount: 17587boot\n", + "\tamount: 25188boot\n", "\n", "execute\n", "\texecute contract: Gift Contract\n", "\texecute contract: Treasury Contract\n", "\n", - "message from bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "transfer\n", - "\trecipient: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", + "\trecipient: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", "\tsender: Treasury Contract\n", - "\tamount: 17587boot\n", + "\tamount: 25188boot\n", "\n", "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: release\n", - "\taddress: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", - "\tgift_address: cosmos1shgxepz7m5dycfmd0gd8vxxvp8uelx6p96j63t\n", + "\taddress: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", + "\tgift_address: cosmos12fqp8lu305fm6jmuahl337eruln9c78azjrh79\n", "\tstage: 9\n", - "\tamount: 17,587\n", + "\tamount: 25,188\n", "\t_contract_address: Treasury Contract\n", "\taction: execute\n", "\towner: Gift Contract\n", "Gas used: 230,516\n", - "Tx hash: B502CF29760065754C45C0F70B3B076667432BF17B0A95FFECC115567F0AB074\n" + "Tx hash: EC5C49AFACF28C287FC771A20EB98EBEA7E546FE65807066989D5E836B6A1265\n" ] } ], @@ -1544,7 +1544,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "323fc54f956345679af00e72955644d2" + "model_id": "f7b13e5d0db6418381a00835c2f5aeba" } }, "metadata": {}, @@ -1564,80 +1564,102 @@ "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", "\tneuron: Name Subgraph Contract\n", "\n", - "\tNickname -> Avatar\n", - "\tAvatar -> Nickname\n", - "\tneuron: Avatar Subgraph Contract\n", - "\n", "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "\n", + "reply\n", + "\treply contract: Avatar Subgraph Contract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", "\taction: transfer_nft\n", - "\tsender: bostrom1shgxepz7m5dycfmd0gd8vxxvp8uelx6pxfxf0v\n", + "\tsender: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", "\trecipient: Passport Owner Address\n", - "\ttoken_id: 542447\n", - "Gas used: 433,764\n", - "Tx hash: 74C08EC0EB7D6898DEB4B27F95528CBBC363AC5D114977C7E5399A1FADD7000C\n", + "\ttoken_id: 542556\n", + "Gas used: 387,935\n", + "Tx hash: 28B05249A624A1A96AA17BFB82A7E5F219E01FDE15D8915EC7AC13F36B6CF8E0\n", "\n", "BURN\n", "\n", "Events\n", + "out of gas in location: WriteFlat; gasWanted: 400000, gasUsed: 401295: out of gas\n", + "Gas used: 401,295\n", + "Tx hash: 1632692CC26CE76A85036A9DE01BB460D5550CA6E906546DB4FD9B32A7E5FF5F\n", + "\n", + "UPDATE NAME\n", + "\n", + "Events\n", "\n", "cyberlinks\n", - "\tcyberhole -> Avatar\n", - "\tAvatar -> cyberhole\n", - "\tneuron: Avatar Subgraph Contract\n", + "\tPassport Owner Address -> QmdpqRUvVSJYU6vofSBP9axBSps8Pf1eUn9eSZEqnJouQd\n", + "\tQmdpqRUvVSJYU6vofSBP9axBSps8Pf1eUn9eSZEqnJouQd -> Passport Owner Address\n", + "\tneuron: Name Subgraph Contract\n", "\n", "\n", "execute\n", "\texecute contract: Passport Contract\n", "\texecute contract: Name Subgraph Contract\n", - "\texecute contract: Avatar Subgraph Contract\n", - "\n", - "message from bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", - "reply\n", - "\treply contract: Name Subgraph Contract\n", + "message from bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", - "\taction: burn\n", - "\tsender: bostrom19ssajxkwu8kvff9um8nmhr4kfnptpp8vevrzw4\n", - "\ttoken_id: 542444\n", - "Gas used: 357,526\n", - "Tx hash: 2A389F7EFD4296EE9F0386117C63F51C5A39E65E2F8532752AE1A3AEA93FCD1A\n", + "\taction: update_nickname\n", + "\told_name: john16524556463\n", + "\tnew_name: john16524556463_new\n", + "Gas used: 296,307\n", + "Tx hash: 0EBA79570CD0F19ECD034CC31582366E7F8B688556D06B8E16DAC8A25F8B027C\n", "\n", - "UPDATE NAME\n", + "UPDATE AVATAR\n", "\n", "Events\n", "\n", + "cyberlinks\n", + "\tNickname -> QmXnkwVZcnPuUse3B8KtzR2E1w7Rver8vvceTU3Z1V6a9A\n", + "\tQmXnkwVZcnPuUse3B8KtzR2E1w7Rver8vvceTU3Z1V6a9A -> Nickname\n", + "\tneuron: Avatar Subgraph Contract\n", + "\n", + "\n", "execute\n", "\texecute contract: Passport Contract\n", - "\texecute contract: Name Subgraph Contract\n", + "\texecute contract: Avatar Subgraph Contract\n", "\n", - "message from bostrom1eqdfdkllfpcnlcwrpppuq8v0z3j20aqereh3v4 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", + "message from bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", - "reply\n", - "\treply contract: Name Subgraph Contract\n", + "wasm\n", + "\t_contract_address: Passport Contract\n", + "\taction: update_avatar\n", + "\tnickname: john16524556464\n", + "\tnew_avatar: QmXnkwVZcnPuUse3B8KtzR2E1w7Rver8vvceTU3Z1V6a9A\n", + "Gas used: 288,250\n", + "Tx hash: A0F942FA09D292D44F567DB13E4CC6E9DDAF1FC0E9FFDE379253DD1D39A6E7DD\n", + "\n", + "REMOVE ADDRESS\n", + "\n", + "Events\n", + "\n", + "execute\n", + "\texecute contract: Passport Contract\n", + "\n", + "message from bostrom10usrwj4knqraus5wcek7a8yxxk9n7yh47u6m0c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", "\n", "wasm\n", "\t_contract_address: Passport Contract\n", - "\taction: update_nickname\n", - "\told_name: john16524446573\n", - "\tnew_name: john16524446573_new\n", - "Gas used: 241,412\n", - "Tx hash: 70129048ACC2A62E8225B4198545A3864BAD9D4E135CA713EFDCFB91FB2CB948\n" + "\taction: remove_address\n", + "\tnickname: john16524556465\n", + "\taddress: terra10usrwj4knqraus5wcek7a8yxxk9n7yh4mt5gnl\n", + "Gas used: 139,666\n", + "Tx hash: B2C1C74D5C62FE670147E080BD36CA24F7302EDEB1AEB10EEADA71034D004FE0\n" ] } ], "source": [ - "for index, row in tqdm(claims_with_proofs_df[:4].iterrows()):\n", + "for index, row in tqdm(claims_with_proofs_df[:10].iterrows()):\n", " if index == 1:\n", " transfer_passport_json = contract_utils.transfer_passport(\n", " row,\n", @@ -1664,18 +1686,16 @@ " update_avatar_json = contract_utils.update_avatar(\n", " row,\n", " new_avatar=get_ipfs_cid_from_str(row['nickname'] + '_new_avatar'),\n", - " token_id=get_passport_id(row['bostrom_address']),\n", " display_data=DISPLAY_TX_EXECUTION)\n", " print('\\nUPDATE AVATAR')\n", " contract_utils.parse_contract_execution_json(update_avatar_json, row=row)\n", " elif index == 5:\n", - " delete_address_json = contract_utils.delete_address(\n", + " remove_address_json = contract_utils.remove_address(\n", " row,\n", " removed_address=row['cosmos_address'],\n", - " token_id=get_passport_id(row['bostrom_address']),\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " print('\\nDELETE ADDRESS')\n", - " contract_utils.parse_contract_execution_json(delete_address_json, row=row)" + " print('\\nREMOVE ADDRESS')\n", + " contract_utils.parse_contract_execution_json(remove_address_json, row=row)" ], "metadata": { "collapsed": false, @@ -1706,7 +1726,7 @@ "#### set_minter\n", "#### set_owner\n", "#### set_active\n", - "#### set_subgraphs\n", + "#### set_subgraphs +\n", "#### transfer_nft +\n", "#### send_nft\n", "#### mint\n", From af803b307ad313736d03db38723d96a696221003 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 2 Jun 2022 13:30:07 +0800 Subject: [PATCH 50/69] Refactored migration --- Cargo.lock | 3 + Cargo.toml | 12 +- contracts/cw-cyber-airdrop/Cargo.toml | 2 + contracts/cw-cyber-airdrop/examples/schema.rs | 3 +- .../cw-cyber-airdrop/schema/migrate_msg.json | 119 ------------ contracts/cw-cyber-airdrop/src/contract.rs | 36 +++- contracts/cw-cyber-airdrop/src/error.rs | 12 ++ contracts/cw-cyber-airdrop/src/execute.rs | 57 ++---- contracts/cw-cyber-airdrop/src/msg.rs | 8 - contracts/cw-cyber-airdrop/src/tests.rs | 20 +- contracts/cw-cyber-passport/Cargo.toml | 2 + .../cw-cyber-passport/examples/schema.rs | 3 +- .../cw-cyber-passport/schema/config.json | 12 +- .../cw-cyber-passport/schema/execute_msg.json | 16 +- .../schema/instantiate_msg.json | 12 +- .../cw-cyber-passport/schema/migrate_msg.json | 52 ------ contracts/cw-cyber-passport/src/contract.rs | 54 ++++-- contracts/cw-cyber-passport/src/error.rs | 18 ++ contracts/cw-cyber-passport/src/execute.rs | 176 +++++------------- contracts/cw-cyber-passport/src/msg.rs | 27 +-- contracts/cw-cyber-passport/src/query.rs | 6 +- contracts/cw-cyber-passport/src/state.rs | 6 +- contracts/cw-cyber-passport/src/tests.rs | 18 +- contracts/cw-cyber-subgraph/Cargo.toml | 2 + contracts/cw-cyber-subgraph/src/contract.rs | 40 ++-- contracts/cw-cyber-subgraph/src/error.rs | 12 ++ contracts/cw-cyber-subgraph/src/msg.rs | 3 - 27 files changed, 278 insertions(+), 453 deletions(-) delete mode 100644 contracts/cw-cyber-airdrop/schema/migrate_msg.json delete mode 100644 contracts/cw-cyber-passport/schema/migrate_msg.json diff --git a/Cargo.lock b/Cargo.lock index c0475ae..f076b57 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -367,6 +367,7 @@ dependencies = [ "cyber-std-test", "hex", "schemars", + "semver", "serde", "serde_json", "sha2 0.9.9", @@ -395,6 +396,7 @@ dependencies = [ "primitive-types", "ripemd160", "schemars", + "semver", "serde", "sha2 0.9.9", "sha3 0.9.1", @@ -417,6 +419,7 @@ dependencies = [ "cyber-std", "hex", "schemars", + "semver", "serde", "serde_json", "sha2 0.9.9", diff --git a/Cargo.toml b/Cargo.toml index 695e911..72aa1a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,15 @@ [workspace] -members = ["contracts/cw-cyber-subgraph", "contracts/cw-cyber-passport", "contracts/cw-cyber-airdrop"] +members = ["contracts/*"] -[profile.release.package.cw-cybergift] +[profile.release.package.cw-cyber-airdrop] +codegen-units = 1 +incremental = false + +[profile.release.package.cw-cyber-passport] +codegen-units = 1 +incremental = false + +[profile.release.package.cw-cyber-subgraph] codegen-units = 1 incremental = false diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index 6f1ed0c..be4b6b2 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -8,6 +8,7 @@ exclude = [ # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. "contract.wasm", "hash.txt", + "artifacts/*", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -58,6 +59,7 @@ sha2 = { version = "0.9.5", default-features = false } sha3 = "0.9" serde_json = "1.0" base64 = "0.13" +semver = "1" [dev-dependencies] cosmwasm-schema = { version = "1.0.0-beta8" } diff --git a/contracts/cw-cyber-airdrop/examples/schema.rs b/contracts/cw-cyber-airdrop/examples/schema.rs index 4ebcc48..e6ebf8d 100644 --- a/contracts/cw-cyber-airdrop/examples/schema.rs +++ b/contracts/cw-cyber-airdrop/examples/schema.rs @@ -2,7 +2,7 @@ use std::env::current_dir; use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_airdrop::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, ConfigResponse, StateResponse, IsClaimedResponse, ClaimResponse, ReleaseStageStateResponse, MerkleRootResponse, MigrateMsg}; +use cw_cyber_airdrop::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, ConfigResponse, StateResponse, IsClaimedResponse, ClaimResponse, ReleaseStageStateResponse, MerkleRootResponse}; fn main() { let mut out_dir = current_dir().unwrap(); @@ -13,7 +13,6 @@ fn main() { export_schema(&schema_for!(InstantiateMsg), &out_dir); export_schema(&schema_for!(ExecuteMsg), &out_dir); export_schema(&schema_for!(QueryMsg), &out_dir); - export_schema(&schema_for!(MigrateMsg), &out_dir); export_schema(&schema_for!(MerkleRootResponse), &out_dir); export_schema(&schema_for!(IsClaimedResponse), &out_dir); export_schema(&schema_for!(ClaimResponse), &out_dir); diff --git a/contracts/cw-cyber-airdrop/schema/migrate_msg.json b/contracts/cw-cyber-airdrop/schema/migrate_msg.json deleted file mode 100644 index 8186a7d..0000000 --- a/contracts/cw-cyber-airdrop/schema/migrate_msg.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "type": "object", - "required": [ - "version" - ], - "properties": { - "config": { - "anyOf": [ - { - "$ref": "#/definitions/Config" - }, - { - "type": "null" - } - ] - }, - "state": { - "anyOf": [ - { - "$ref": "#/definitions/State" - }, - { - "type": "null" - } - ] - }, - "version": { - "type": "string" - } - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Config": { - "type": "object", - "required": [ - "allowed_native", - "coefficient_down", - "coefficient_up", - "initial_balance", - "passport_addr", - "target_claim", - "treasury_addr" - ], - "properties": { - "allowed_native": { - "type": "string" - }, - "coefficient_down": { - "$ref": "#/definitions/Uint128" - }, - "coefficient_up": { - "$ref": "#/definitions/Uint128" - }, - "initial_balance": { - "$ref": "#/definitions/Uint128" - }, - "owner": { - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } - ] - }, - "passport_addr": { - "$ref": "#/definitions/Addr" - }, - "target_claim": { - "$ref": "#/definitions/Uint64" - }, - "treasury_addr": { - "$ref": "#/definitions/Addr" - } - } - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "State": { - "type": "object", - "required": [ - "claims", - "coefficient", - "current_balance", - "releases" - ], - "properties": { - "claims": { - "$ref": "#/definitions/Uint64" - }, - "coefficient": { - "$ref": "#/definitions/Decimal" - }, - "current_balance": { - "$ref": "#/definitions/Uint128" - }, - "releases": { - "$ref": "#/definitions/Uint64" - } - } - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-airdrop/src/contract.rs index e99b583..10a1e80 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-airdrop/src/contract.rs @@ -1,18 +1,19 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Decimal, Deps, DepsMut, Env, Response, StdResult, Uint64, MessageInfo}; +use cosmwasm_std::{to_binary, Binary, Decimal, Deps, DepsMut, Env, Response, StdResult, Uint64, MessageInfo, Empty, attr}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; -use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; use crate::state::{Config, CONFIG, State, STATE}; -use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target, execute_update_treasury, try_migrate}; +use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target, execute_update_treasury}; use crate::query::{query_claim, query_config, query_is_claimed, query_merkle_root, query_release_stage_state, query_release_state, query_state}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; +use semver::Version; // Version info, for migration info -const CONTRACT_NAME: &str = "crates.io:cw-cyber-gift"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); +const CONTRACT_NAME: &str = "cw-cyber-gift"; +const CONTRACT_VERSION: &str = "1.0.0"; #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( @@ -95,14 +96,31 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { } } -// TODO test migrate #[cfg_attr(not(feature = "library"), entry_point)] pub fn migrate( deps: DepsMut, _env: Env, - msg: MigrateMsg, + _msg: Empty, ) -> Result { - match msg { - MigrateMsg { version, config, state } => try_migrate(deps, version, config, state), + let stored = get_contract_version(deps.storage)?; + if stored.contract != CONTRACT_NAME { + return Err(ContractError::CannotMigrate { + previous_contract: stored.contract, + }); + } + + let version: Version = CONTRACT_VERSION.parse()?; + let storage_version: Version = get_contract_version(deps.storage)?.version.parse()?; + + if storage_version > version { + return Err(ContractError::CannotMigrateVersion { + previous_version: stored.version, + }); } + + if storage_version < version { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + } + + Ok(Response::new()) } diff --git a/contracts/cw-cyber-airdrop/src/error.rs b/contracts/cw-cyber-airdrop/src/error.rs index 5d41963..be86f4e 100644 --- a/contracts/cw-cyber-airdrop/src/error.rs +++ b/contracts/cw-cyber-airdrop/src/error.rs @@ -49,9 +49,21 @@ pub enum ContractError { #[error("Cannot migrate from different contract type: {previous_contract}")] CannotMigrate { previous_contract: String }, + #[error("Cannot migrate from unsupported version: {previous_version}")] + CannotMigrateVersion { previous_version: String }, + #[error("Address is not eligible to claim airdrop, {msg}")] IsNotEligible { msg: String }, #[error("Gift is over")] GiftIsOver {}, + + #[error("Semver parsing error: {0}")] + SemVer(String), +} + +impl From for ContractError { + fn from(err: semver::Error) -> Self { + Self::SemVer(err.to_string()) + } } diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-airdrop/src/execute.rs index 8fb01e3..6cb76ad 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-airdrop/src/execute.rs @@ -2,13 +2,12 @@ use cosmwasm_std::{Addr, attr, BankMsg, Coin, CosmosMsg, Decimal, DepsMut, Empty use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; -use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState, STATE, RELEASE_INFO, Config, State}; +use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState, STATE, RELEASE_INFO}; use cw_utils::{Expiration, DAY, HOUR}; use std::ops::{Add, Mul}; use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; use crate::msg::{AddressResponse, SignatureResponse}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; -use cw2::{get_contract_version, set_contract_version}; const RELEASE_STAGES: u64 = 9; @@ -197,8 +196,8 @@ pub fn execute_claim( let release_state = ReleaseState { address: Addr::unchecked(res.clone().address), - // balance_claim: claim_amount.checked_sub(Uint128::new(CLAIM_BOUNTY))?, - balance_claim: claim_amount.checked_sub(Uint128::new(0))?, + balance_claim: claim_amount.checked_sub(Uint128::new(CLAIM_BOUNTY))?, + // balance_claim: claim_amount.checked_sub(Uint128::new(0))?, stage: Uint64::zero(), stage_expiration: Expiration::Never {}, }; @@ -216,20 +215,20 @@ pub fn execute_claim( // send funds from treasury controlled by Congress Ok(Response::new() - // .add_message(WasmMsg::Execute { - // contract_addr: config.treasury_addr.to_string(), - // msg: to_binary(&Cw1ExecuteMsg::Execute:: { - // msgs: vec![ - // CosmosMsg::Bank(BankMsg::Send { - // to_address: res.address.clone(), - // amount: vec![Coin { - // denom: config.allowed_native, - // amount: Uint128::new(CLAIM_BOUNTY), - // }], - // }).into() - // ]})?, - // funds: vec![] - // }) + .add_message(WasmMsg::Execute { + contract_addr: config.treasury_addr.to_string(), + msg: to_binary(&Cw1ExecuteMsg::Execute:: { + msgs: vec![ + CosmosMsg::Bank(BankMsg::Send { + to_address: res.address.clone(), + amount: vec![Coin { + denom: config.allowed_native, + amount: Uint128::new(CLAIM_BOUNTY), + }], + }).into() + ]})?, + funds: vec![] + }) // .add_message(BankMsg::Send { // to_address: res.address.clone(), // amount: vec![Coin { @@ -353,25 +352,3 @@ pub fn execute_release( ]) ) } - -pub fn try_migrate( - deps: DepsMut, - version: String, - config: Option, - state: Option, -) -> Result { - let contract_version = get_contract_version(deps.storage)?; - set_contract_version(deps.storage, contract_version.contract, version)?; - - if config.is_some() { - CONFIG.save(deps.storage, &config.unwrap())? - } - if state.is_some() { - STATE.save(deps.storage, &state.unwrap())? - } - - Ok(Response::new().add_attributes(vec![ - attr("method", "try_migrate"), - attr("version", contract_version.version), - ])) -} diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-airdrop/src/msg.rs index 40b7eaf..01d10b7 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-airdrop/src/msg.rs @@ -3,7 +3,6 @@ use serde::{Deserialize, Serialize}; use cosmwasm_std::{Decimal, Uint128, Uint64}; use cw_utils::Expiration; -use crate::state::{Config, State}; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { @@ -120,10 +119,3 @@ pub struct SignatureResponse { pub struct AddressResponse { pub address: String, } - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct MigrateMsg { - pub version: String, - pub config: Option, - pub state: Option, -} diff --git a/contracts/cw-cyber-airdrop/src/tests.rs b/contracts/cw-cyber-airdrop/src/tests.rs index 67a5986..7973ca9 100644 --- a/contracts/cw-cyber-airdrop/src/tests.rs +++ b/contracts/cw-cyber-airdrop/src/tests.rs @@ -106,9 +106,9 @@ mod tests { symbol: "MP".to_string(), minter: "cosmos2contract".to_string(), owner: OWNER.to_string(), - name_subspace: SPACE1.to_string(), - avatar_subspace: SPACE2.to_string(), - proof_subspace: SPACE3.to_string(), + name_subgraph: SPACE1.to_string(), + avatar_subgraph: SPACE2.to_string(), + proof_subgraph: SPACE3.to_string(), }; app.instantiate_contract(passport_id, Addr::unchecked(OWNER), &msg, &[], "passport", None) .unwrap() @@ -158,18 +158,18 @@ mod tests { ); app.update_block(next_block); - let name_subspace = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); - let avatar_subspace = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); - let proof_subspace = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); + let name_subgraph = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); + let avatar_subgraph = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); + let proof_subgraph = instantiate_subgraph(app, OWNER.to_string(), passport_addr.to_string()); app.update_block(next_block); let _res = app.execute_contract( Addr::unchecked(OWNER), passport_addr.clone(), - &PassportExecuteMsg::SetSubspaces { - name_subspace: name_subspace.to_string(), - avatar_subspace: avatar_subspace.to_string(), - proof_subspace: proof_subspace.to_string() + &PassportExecuteMsg::SetSubgraphs { + name_subgraph: name_subgraph.to_string(), + avatar_subgraph: avatar_subgraph.to_string(), + proof_subgraph: proof_subgraph.to_string() }, &[], ); diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index 2b94577..2a3b4d5 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -8,6 +8,7 @@ exclude = [ # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. "contract.wasm", "hash.txt", + "artifacts/*", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -60,6 +61,7 @@ cw721-base = { version = "0.13.2", features = ["library"] } primitive-types = {version = "0.10.1", default-features = false, features = ["byteorder"]} ripemd160 = "0.9.1" base64 = "0.13" +semver = "1" [dev-dependencies] cosmwasm-schema = { version = "1.0.0-beta8" } diff --git a/contracts/cw-cyber-passport/examples/schema.rs b/contracts/cw-cyber-passport/examples/schema.rs index 7eb826c..0036dac 100644 --- a/contracts/cw-cyber-passport/examples/schema.rs +++ b/contracts/cw-cyber-passport/examples/schema.rs @@ -3,7 +3,7 @@ use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; use cw_cyber_passport::state::{Config, PassportMetadata}; fn main() { @@ -15,7 +15,6 @@ fn main() { export_schema(&schema_for!(InstantiateMsg), &out_dir); export_schema(&schema_for!(ExecuteMsg), &out_dir); export_schema(&schema_for!(QueryMsg), &out_dir); - export_schema(&schema_for!(MigrateMsg), &out_dir); export_schema(&schema_for!(Config), &out_dir); export_schema(&schema_for!(PassportMetadata), &out_dir); } diff --git a/contracts/cw-cyber-passport/schema/config.json b/contracts/cw-cyber-passport/schema/config.json index 1655f55..5160bc7 100644 --- a/contracts/cw-cyber-passport/schema/config.json +++ b/contracts/cw-cyber-passport/schema/config.json @@ -3,22 +3,22 @@ "title": "Config", "type": "object", "required": [ - "avatar_subspace", - "name_subspace", + "avatar_subgraph", + "name_subgraph", "owner", - "proof_subspace" + "proof_subgraph" ], "properties": { - "avatar_subspace": { + "avatar_subgraph": { "$ref": "#/definitions/Addr" }, - "name_subspace": { + "name_subgraph": { "$ref": "#/definitions/Addr" }, "owner": { "$ref": "#/definitions/Addr" }, - "proof_subspace": { + "proof_subgraph": { "$ref": "#/definitions/Addr" } }, diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index 550574a..6d8361b 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -213,24 +213,24 @@ { "type": "object", "required": [ - "set_subspaces" + "set_subgraphs" ], "properties": { - "set_subspaces": { + "set_subgraphs": { "type": "object", "required": [ - "avatar_subspace", - "name_subspace", - "proof_subspace" + "avatar_subgraph", + "name_subgraph", + "proof_subgraph" ], "properties": { - "avatar_subspace": { + "avatar_subgraph": { "type": "string" }, - "name_subspace": { + "name_subgraph": { "type": "string" }, - "proof_subspace": { + "proof_subgraph": { "type": "string" } } diff --git a/contracts/cw-cyber-passport/schema/instantiate_msg.json b/contracts/cw-cyber-passport/schema/instantiate_msg.json index 128baf7..0a897dc 100644 --- a/contracts/cw-cyber-passport/schema/instantiate_msg.json +++ b/contracts/cw-cyber-passport/schema/instantiate_msg.json @@ -3,16 +3,16 @@ "title": "InstantiateMsg", "type": "object", "required": [ - "avatar_subspace", + "avatar_subgraph", "minter", "name", - "name_subspace", + "name_subgraph", "owner", - "proof_subspace", + "proof_subgraph", "symbol" ], "properties": { - "avatar_subspace": { + "avatar_subgraph": { "type": "string" }, "minter": { @@ -23,13 +23,13 @@ "description": "Name of the NFT contract", "type": "string" }, - "name_subspace": { + "name_subgraph": { "type": "string" }, "owner": { "type": "string" }, - "proof_subspace": { + "proof_subgraph": { "type": "string" }, "symbol": { diff --git a/contracts/cw-cyber-passport/schema/migrate_msg.json b/contracts/cw-cyber-passport/schema/migrate_msg.json deleted file mode 100644 index 81c4c07..0000000 --- a/contracts/cw-cyber-passport/schema/migrate_msg.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MigrateMsg", - "type": "object", - "required": [ - "version" - ], - "properties": { - "config": { - "anyOf": [ - { - "$ref": "#/definitions/Config" - }, - { - "type": "null" - } - ] - }, - "version": { - "type": "string" - } - }, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Config": { - "type": "object", - "required": [ - "avatar_subspace", - "name_subspace", - "owner", - "proof_subspace" - ], - "properties": { - "avatar_subspace": { - "$ref": "#/definitions/Addr" - }, - "name_subspace": { - "$ref": "#/definitions/Addr" - }, - "owner": { - "$ref": "#/definitions/Addr" - }, - "proof_subspace": { - "$ref": "#/definitions/Addr" - } - } - } - } -} diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 5fe5f8d..7ea98ef 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -1,16 +1,21 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Reply, StdResult, to_binary}; +use cosmwasm_std::{attr, Binary, Deps, DepsMut, Empty, Env, MessageInfo, Reply, StdResult, to_binary}; +use cw2::{get_contract_version, set_contract_version}; use cyber_std::CyberMsgWrapper; +use semver::Version; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subspaces, execute_transfer_nft, execute_update_avatar, execute_update_name, try_migrate, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data}; -use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subgraphs, execute_transfer_nft, execute_update_avatar, execute_update_name, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data}; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; type Response = cosmwasm_std::Response; +const CONTRACT_NAME: &str = "cw-cyber-passport"; +const CONTRACT_VERSION: &str = "1.0.0"; + #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( deps: DepsMut, @@ -18,11 +23,13 @@ pub fn instantiate( info: MessageInfo, msg: InstantiateMsg, ) -> StdResult { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + let config = Config { owner: deps.api.addr_validate(&msg.clone().owner)?, - name_subspace: deps.api.addr_validate(&msg.clone().name_subspace)?, - avatar_subspace: deps.api.addr_validate(&msg.clone().avatar_subspace)?, - proof_subspace: deps.api.addr_validate(&msg.clone().proof_subspace)? + name_subgraph: deps.api.addr_validate(&msg.clone().name_subgraph)?, + avatar_subgraph: deps.api.addr_validate(&msg.clone().avatar_subgraph)?, + proof_subgraph: deps.api.addr_validate(&msg.clone().proof_subgraph)? }; CONFIG.save(deps.storage, &config)?; @@ -48,11 +55,11 @@ pub fn execute( ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), ExecuteMsg::SetActive { token_id } => execute_set_active(deps, env, info, token_id), - ExecuteMsg::SetSubspaces { - name_subspace, - avatar_subspace, - proof_subspace - } => execute_set_subspaces(deps, env, info, name_subspace, avatar_subspace, proof_subspace), + ExecuteMsg::SetSubgraphs { + name_subgraph, + avatar_subgraph, + proof_subgraph + } => execute_set_subgraphs(deps, env, info, name_subgraph, avatar_subgraph, proof_subgraph), ExecuteMsg::SetAddressLabel { nickname, address, @@ -94,14 +101,31 @@ pub fn reply(_deps: DepsMut, _env: Env, reply: Reply) -> Result Result { - match msg { - MigrateMsg { version, config } => try_migrate(deps, version, config), + let stored = get_contract_version(deps.storage)?; + if stored.contract != CONTRACT_NAME { + return Err(ContractError::CannotMigrate { + previous_contract: stored.contract, + }); + } + + let version: Version = CONTRACT_VERSION.parse()?; + let storage_version: Version = get_contract_version(deps.storage)?.version.parse()?; + + if storage_version > version { + return Err(ContractError::CannotMigrateVersion { + previous_version: stored.version, + }); + } + + if storage_version < version { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; } + + Ok(Response::new()) } diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 50a80bd..967d623 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -26,6 +26,15 @@ pub enum ContractError { #[error("Address not found")] AddressNotFound {}, + #[error("Cannot migrate from different contract type: {previous_contract}")] + CannotMigrate { previous_contract: String }, + + #[error("Cannot migrate from unsupported version: {previous_version}")] + CannotMigrateVersion { previous_version: String }, + + #[error("Semver parsing error: {0}")] + SemVer(String), + // ----- #[error("Got a submessage reply with unknown id: {id}")] @@ -51,6 +60,9 @@ pub enum ContractError { #[error("Name is not valid")] NotValidName {}, + #[error("Label is not valid")] + NotValidLabel {}, + #[error("Data is not valid")] NotValidData {}, @@ -125,3 +137,9 @@ impl From for ContractError { } } } + +impl From for ContractError { + fn from(err: semver::Error) -> Self { + Self::SemVer(err.to_string()) + } +} diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 89bdcd4..7c35835 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -48,40 +48,32 @@ pub fn execute_create_passport( } } - let nick_particle = prepare_particle(nickname.clone())?; + let nickname_particle = prepare_particle(nickname.clone())?; let avatar_particle = check_particle(avatar.clone())?; let address_particle = prepare_particle(info.clone().sender.into())?; let config = CONFIG.load(deps.storage)?; - // prepare address <-> nickname <-> avatar cyberlinks - // nickname <-> address + // prepare address <- nickname -> avatar cyberlinks + // nickname -> address cyberlink let name_subgraph_submsg = prepare_cyberlink_submsg( - config.name_subspace.into(), + config.name_subgraph.into(), vec![ Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), + from: nickname_particle.clone().into(), to: address_particle.clone().into() }, ] ); - // nickname <-> avatar cyberlinks + // nickname -> avatar cyberlink let avatar_subgraph_submsg = prepare_cyberlink_submsg( - config.avatar_subspace.into(), + config.avatar_subgraph.into(), vec![ Link{ - from: nick_particle.clone().into(), + from: nickname_particle.clone().into(), to: avatar_particle.clone().into() }, - Link{ - from: avatar_particle.clone().into(), - to: nick_particle.clone().into() - } ] ); @@ -185,21 +177,17 @@ pub fn execute_update_name( } )?; - let nick_particle = prepare_particle(new_name.clone())?; + let nickname_particle = prepare_particle(new_name.clone())?; let address_particle = prepare_particle(info.clone().sender.into())?; let config = CONFIG.load(deps.storage)?; - // prepare new nickname <-> address cyberlinks + // prepare new nickname -> address cyberlink let name_subgraph_submsg = prepare_cyberlink_submsg( - config.name_subspace.into(), + config.name_subgraph.into(), vec![ Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), + from: nickname_particle.clone().into(), to: address_particle.clone().into() }, ] @@ -243,22 +231,18 @@ pub fn execute_update_avatar( })?; let avatar_particle = check_particle(new_avatar.clone())?; - let nick_particle = prepare_particle(nickname.clone())?; + let nickname_particle = prepare_particle(nickname.clone())?; let config = CONFIG.load(deps.storage)?; - // prepare new avatar <-> nickname cyberlinks + // prepare nickname -> new avatar cyberlink let avatar_subgraph_submsg = prepare_cyberlink_submsg( - config.avatar_subspace.into(), + config.avatar_subgraph.into(), vec![ Link{ - from: nick_particle.clone().into(), + from: nickname_particle.clone().into(), to: avatar_particle.clone().into() }, - Link{ - from: avatar_particle.clone().into(), - to: nick_particle.clone().into() - } ] ); @@ -374,22 +358,18 @@ pub fn execute_proof_address( } let proved_address_particle = prepare_particle(address.clone())?; - let nick_particle = prepare_particle(nickname.clone())?; + let nickname_particle = prepare_particle(nickname.clone())?; let config = CONFIG.load(deps.storage)?; - // proved_address <-> nickname + // nickname -> proved_address cyberlink let proof_subgraph_submsg = prepare_cyberlink_submsg( - config.proof_subspace.into(), + config.proof_subgraph.into(), vec![ Link{ - from: nick_particle.clone().into(), + from: nickname_particle.clone().into(), to: proved_address_particle.clone().into(), }, - Link{ - from: proved_address_particle.clone().into(), - to: nick_particle.clone().into() - } ] ); @@ -532,46 +512,23 @@ pub fn execute_transfer_nft( } } - let nick_particle = prepare_particle(nickname.clone())?; - let avatar_particle = check_particle(avatar.clone())?; + let nickname_particle = prepare_particle(nickname.clone())?; let address_particle = prepare_particle(new_owner.clone().to_string())?; // link passport to new owner - // prepare address <-> nickname <-> avatar cyberlinks - // nickname <-> address + // nickname -> new address cyberlink let name_subgraph_submsg = prepare_cyberlink_submsg( - config.name_subspace.into(), + config.name_subgraph.into(), vec![ Link{ - from: address_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), + from: nickname_particle.clone().into(), to: address_particle.clone().into() }, ] ); - // nickname <-> avatar - let avatar_subgraph_submsg = prepare_cyberlink_submsg( - config.avatar_subspace.into(), - vec![ - Link{ - from: nick_particle.clone().into(), - to: avatar_particle.clone().into() - }, - Link{ - from: avatar_particle.clone().into(), - to: nick_particle.clone().into() - } - ] - ); let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; - Ok(response - .add_submessage(name_subgraph_submsg) - .add_submessage(avatar_subgraph_submsg) - ) + Ok(response.add_submessage(name_subgraph_submsg)) } pub fn execute_send_nft( @@ -620,7 +577,6 @@ pub fn execute_send_nft( } } - let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; Ok(response) } @@ -640,7 +596,7 @@ pub fn execute_burn( }; NICKNAMES.remove(deps.storage, &token_info.clone().extension.nickname); - let nick_particle = prepare_particle(token_info.clone().extension.nickname)?; + let nickname_particle = prepare_particle(token_info.clone().extension.nickname)?; let cyberhole_particle = prepare_particle("cyberhole".into())?; if ACTIVE.has(deps.storage, &info.clone().sender) { @@ -652,41 +608,19 @@ pub fn execute_burn( let config = CONFIG.load(deps.storage)?; - // prepare avatar <-> cyberhole <-> nickname cyberlinks - // cyberhole <-> nickname + // nickname -> cyberhole cyberlink let name_subgraph_submsg = prepare_cyberlink_submsg( - config.name_subspace.into(), + config.name_subgraph.into(), vec![ Link{ - from: cyberhole_particle.clone().into(), - to: nick_particle.clone().into(), - }, - Link{ - from: nick_particle.clone().into(), + from: nickname_particle.clone().into(), to: cyberhole_particle.clone().into() }, ] ); - // cyberhole <-> avatar - let avatar_subgraph_submsg = prepare_cyberlink_submsg( - config.avatar_subspace.into(), - vec![ - Link{ - from: cyberhole_particle.clone().into(), - to: token_info.extension.avatar.clone().into() - }, - Link{ - from: token_info.extension.avatar.clone().into(), - to: cyberhole_particle.clone().into() - } - ] - ); let response = cw721_contract.burn(deps, env, info, token_id)?; - Ok(response - .add_submessage(name_subgraph_submsg) - .add_submessage(avatar_subgraph_submsg) - ) + Ok(response.add_submessage(name_subgraph_submsg)) } pub fn execute_set_minter( @@ -760,13 +694,13 @@ pub fn execute_set_active( ])) } -pub fn execute_set_subspaces( +pub fn execute_set_subgraphs( deps: DepsMut, _env: Env, info: MessageInfo, - new_name_subspace: String, - new_avatar_subspace: String, - new_proof_subspace: String, + new_name_subgraph: String, + new_avatar_subgraph: String, + new_proof_subgraph: String, ) -> Result { let config = CONFIG.load(deps.storage)?; let owner = config.owner; @@ -774,25 +708,25 @@ pub fn execute_set_subspaces( return Err(ContractError::Unauthorized {}); } - let name_subspace = deps.api.addr_validate(&new_name_subspace)?; - let avatar_subspace = deps.api.addr_validate(&new_avatar_subspace)?; - let proof_subspace = deps.api.addr_validate(&new_proof_subspace)?; + let name_subgraph = deps.api.addr_validate(&new_name_subgraph)?; + let avatar_subgraph = deps.api.addr_validate(&new_avatar_subgraph)?; + let proof_subgraph = deps.api.addr_validate(&new_proof_subgraph)?; CONFIG.update( deps.storage, |mut config| -> Result { - config.name_subspace = name_subspace.clone(); - config.avatar_subspace = avatar_subspace.clone(); - config.proof_subspace = proof_subspace.clone(); + config.name_subgraph = name_subgraph.clone(); + config.avatar_subgraph = avatar_subgraph.clone(); + config.proof_subgraph = proof_subgraph.clone(); Ok(config) }, )?; Ok(Response::new().add_attributes(vec![ - attr("action", "update_subspaces"), - attr("name_subspace", name_subspace.to_string()), - attr("avatar_subspace", avatar_subspace.to_string()), - attr("proof_subspace", proof_subspace.to_string()), + attr("action", "update_subgraphs"), + attr("name_subgraph", name_subgraph.to_string()), + attr("avatar_subgraph", avatar_subgraph.to_string()), + attr("proof_subgraph", proof_subgraph.to_string()), ])) } @@ -805,6 +739,10 @@ pub fn execute_set_address_label( label: Option, ) -> Result { + if label.is_some() && label.clone().unwrap().len() > 32 { + return Err(ContractError::NotValidLabel {}); + } + if !NICKNAMES.has(deps.storage, &nickname.clone()) { return Err(ContractError::NicknameNotFound {}); }; @@ -840,21 +778,3 @@ pub fn execute_set_address_label( attr("label", label.unwrap_or_else(|| "".to_string())), ])) } - -pub fn try_migrate( - deps: DepsMut, - version: String, - config: Option, -) -> Result { - let contract_version = get_contract_version(deps.storage)?; - set_contract_version(deps.storage, contract_version.contract, version)?; - - if config.is_some() { - CONFIG.save(deps.storage, &config.unwrap())? - } - - Ok(Response::new().add_attributes(vec![ - attr("method", "try_migrate"), - attr("version", contract_version.version), - ])) -} diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index 8a94fa6..207bd12 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -27,9 +27,9 @@ pub struct InstantiateMsg { pub owner: String, - pub name_subspace: String, - pub avatar_subspace: String, - pub proof_subspace: String, + pub name_subgraph: String, + pub avatar_subgraph: String, + pub proof_subgraph: String, } impl From for CW721InstantiateMsg { @@ -75,10 +75,10 @@ pub enum ExecuteMsg { SetMinter { minter: String }, SetOwner { owner: String }, SetActive { token_id: String }, - SetSubspaces { - name_subspace: String, - avatar_subspace: String, - proof_subspace: String, + SetSubgraphs { + name_subgraph: String, + avatar_subgraph: String, + proof_subgraph: String, }, SetAddressLabel { nickname: String, @@ -283,9 +283,9 @@ impl From for CW721QueryMsg { #[serde(rename_all = "snake_case")] pub struct ConfigResponse { pub owner: String, - pub name_subspace: String, - pub avatar_subspace: String, - pub proof_subspace: String, + pub name_subgraph: String, + pub avatar_subgraph: String, + pub proof_subgraph: String, } #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] @@ -306,11 +306,4 @@ pub struct SignatureResponse { pub signed: bool, } -#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] -#[serde(rename_all = "snake_case")] -pub struct MigrateMsg { - pub version: String, - pub config: Option, -} - diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index 3903735..2881bae 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -7,9 +7,9 @@ pub fn query_config(deps: Deps) -> StdResult { let cfg = CONFIG.load(deps.storage)?; Ok(ConfigResponse { owner: cfg.owner.into(), - name_subspace: cfg.name_subspace.into(), - avatar_subspace: cfg.avatar_subspace.into(), - proof_subspace: cfg.proof_subspace.into(), + name_subgraph: cfg.name_subgraph.into(), + avatar_subgraph: cfg.avatar_subgraph.into(), + proof_subgraph: cfg.proof_subgraph.into(), }) } diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index c3e3340..4e5ced4 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -11,9 +11,9 @@ pub type Extension = PassportMetadata; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct Config { pub owner: Addr, - pub name_subspace: Addr, - pub avatar_subspace: Addr, - pub proof_subspace: Addr, + pub name_subgraph: Addr, + pub avatar_subgraph: Addr, + pub proof_subgraph: Addr, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 49bcb57..2f37669 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -16,9 +16,9 @@ mod tests { let owner = "owner"; let minter = "cosmos2contract"; let citizen = "bostrom1wnpak7sfawsfv9c8vqe7naxfa4g99lv77d7c0z"; - let name_subspace = "name_subspace"; - let avatar_subspace = "avatar_subspace"; - let proof_subspace = "proof_subspace"; + let name_subgraph = "name_subgraph"; + let avatar_subgraph = "avatar_subgraph"; + let proof_subgraph = "proof_subgraph"; // instantiate the contract let instantiate_msg = InstantiateMsg { @@ -26,18 +26,18 @@ mod tests { symbol: "MP".to_string(), minter: minter.to_string(), owner: owner.to_string(), - name_subspace: name_subspace.to_string(), - avatar_subspace: avatar_subspace.to_string(), - proof_subspace: proof_subspace.to_string(), + name_subgraph: name_subgraph.to_string(), + avatar_subgraph: avatar_subgraph.to_string(), + proof_subgraph: proof_subgraph.to_string(), }; let info = mock_info(&owner, &[]); instantiate(deps.as_mut(), mock_env(), info, instantiate_msg).unwrap(); let expected_config = ConfigResponse { owner: owner.to_string(), - name_subspace: name_subspace.to_string(), - avatar_subspace: avatar_subspace.to_string(), - proof_subspace: proof_subspace.to_string(), + name_subgraph: name_subgraph.to_string(), + avatar_subgraph: avatar_subgraph.to_string(), + proof_subgraph: proof_subgraph.to_string(), }; assert_eq!(query_config(deps.as_ref()).unwrap(), expected_config); diff --git a/contracts/cw-cyber-subgraph/Cargo.toml b/contracts/cw-cyber-subgraph/Cargo.toml index db088b4..2cc7436 100644 --- a/contracts/cw-cyber-subgraph/Cargo.toml +++ b/contracts/cw-cyber-subgraph/Cargo.toml @@ -8,6 +8,7 @@ exclude = [ # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. "contract.wasm", "hash.txt", + "artifacts/*", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -57,3 +58,4 @@ sha3 = "0.9" serde_json = "1.0" cosmwasm-schema = "1.0.0-beta8" base64 = "0.13" +semver = "1" diff --git a/contracts/cw-cyber-subgraph/src/contract.rs b/contracts/cw-cyber-subgraph/src/contract.rs index b249be8..93587f6 100644 --- a/contracts/cw-cyber-subgraph/src/contract.rs +++ b/contracts/cw-cyber-subgraph/src/contract.rs @@ -1,20 +1,21 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply, Api, Addr}; +use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply, Api, Addr, Empty, attr}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; -use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; use crate::state::{Config, CONFIG}; use crate::execute::{CYBERLINK_ID_MSG, execute_cyberlink, execute_update_admins, execute_update_executors}; use crate::query::query_config; use cyber_std::CyberMsgWrapper; +use semver::Version; + type Response = cosmwasm_std::Response; -// Version info, for migration info -const CONTRACT_NAME: &str = "crates.io:cw-cyber-subgraph"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); +const CONTRACT_NAME: &str = "cw-cyber-subgraph"; +const CONTRACT_VERSION: &str = "1.0.0"; #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( @@ -67,14 +68,31 @@ pub fn reply(_deps: DepsMut, _env: Env, reply: Reply) -> Result Result { - let version = get_contract_version(deps.storage)?; - if version.contract != CONTRACT_NAME { +pub fn migrate( + deps: DepsMut, + _env: Env, + _msg: Empty, +) -> Result { + let stored = get_contract_version(deps.storage)?; + if stored.contract != CONTRACT_NAME { return Err(ContractError::CannotMigrate { - previous_contract: version.contract, + previous_contract: stored.contract, }); } - Ok(Response::default()) + + let version: Version = CONTRACT_VERSION.parse()?; + let storage_version: Version = get_contract_version(deps.storage)?.version.parse()?; + + if storage_version > version { + return Err(ContractError::CannotMigrateVersion { + previous_version: stored.version, + }); + } + + if storage_version < version { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + } + + Ok(Response::new()) } diff --git a/contracts/cw-cyber-subgraph/src/error.rs b/contracts/cw-cyber-subgraph/src/error.rs index 64f603e..a0f3f5f 100644 --- a/contracts/cw-cyber-subgraph/src/error.rs +++ b/contracts/cw-cyber-subgraph/src/error.rs @@ -12,6 +12,18 @@ pub enum ContractError { #[error("Cannot migrate from different contract type: {previous_contract}")] CannotMigrate { previous_contract: String }, + #[error("Cannot migrate from unsupported version: {previous_version}")] + CannotMigrateVersion { previous_version: String }, + #[error("Got a submessage reply with unknown id: {id}")] UnknownReplyId { id: u64 }, + + #[error("Semver parsing error: {0}")] + SemVer(String), +} + +impl From for ContractError { + fn from(err: semver::Error) -> Self { + Self::SemVer(err.to_string()) + } } diff --git a/contracts/cw-cyber-subgraph/src/msg.rs b/contracts/cw-cyber-subgraph/src/msg.rs index b0358d1..d3596e6 100644 --- a/contracts/cw-cyber-subgraph/src/msg.rs +++ b/contracts/cw-cyber-subgraph/src/msg.rs @@ -27,6 +27,3 @@ pub enum ExecuteMsg { pub enum QueryMsg { Config {}, } - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct MigrateMsg {} From ded655c8b50fbad2c4a0c61ef70c03a97ab3c270 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 2 Jun 2022 15:17:43 +0800 Subject: [PATCH 51/69] Updated deps, disabled transfers and added particle to passport --- Cargo.lock | 123 +++++--- contracts/cw-cyber-airdrop/Cargo.toml | 10 +- contracts/cw-cyber-passport/Cargo.toml | 10 +- .../cw-cyber-passport/schema/execute_msg.json | 38 ++- .../schema/passport_metadata.json | 6 + contracts/cw-cyber-passport/src/contract.rs | 3 +- contracts/cw-cyber-passport/src/error.rs | 3 + contracts/cw-cyber-passport/src/execute.rs | 277 ++++++++++-------- contracts/cw-cyber-passport/src/msg.rs | 6 +- contracts/cw-cyber-passport/src/state.rs | 1 + contracts/cw-cyber-passport/src/tests.rs | 9 + contracts/cw-cyber-subgraph/Cargo.toml | 8 +- 12 files changed, 320 insertions(+), 174 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f076b57..cfbb5ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -32,12 +32,24 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74" +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + [[package]] name = "base64" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "base64ct" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" + [[package]] name = "bech32" version = "0.8.1" @@ -197,9 +209,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" [[package]] name = "constant_time_eq" @@ -218,9 +230,9 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.0.0-beta8" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e70111e9701c3ec43bfbff0e523cd4cb115876b4d3433813436dd0934ee962" +checksum = "5eb0afef2325df81aadbf9be1233f522ed8f6e91df870c764bc44cca2b1415bd" dependencies = [ "digest 0.9.0", "ed25519-zebra", @@ -231,18 +243,18 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.0.0-beta8" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc2ad5d86be5f6068833f63e20786768db6890019c095dd7775232184fb7b3" +checksum = "4b36e527620a2a3e00e46b6e731ab6c9b68d11069c986f7d7be8eba79ef081a4" dependencies = [ "syn", ] [[package]] name = "cosmwasm-schema" -version = "1.0.0-beta8" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d75f6a05667d8613b24171ef2c77a8bf6fb9c14f9e3aaa39aa10e0c6416ed67" +checksum = "772e80bbad231a47a2068812b723a1ff81dd4a0d56c9391ac748177bea3a61da" dependencies = [ "schemars", "serde_json", @@ -250,9 +262,9 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.0.0-beta8" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915ca82bd944f116f3a9717481f3fa657e4a73f28c4887288761ebb24e6fbe10" +checksum = "875994993c2082a6fcd406937bf0fca21c349e4a624f3810253a14fa83a3a195" dependencies = [ "base64", "cosmwasm-crypto", @@ -267,9 +279,9 @@ dependencies = [ [[package]] name = "cosmwasm-storage" -version = "1.0.0-beta8" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4be9fd8c9d3ae7d0c32a925ecbc20707007ce0cba1f7538c0d78b7a2d3729b" +checksum = "d18403b07304d15d304dad11040d45bbcaf78d603b4be3fb5e2685c16f9229b5" dependencies = [ "cosmwasm-std", "serde", @@ -292,9 +304,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.2.11" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03" +checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" dependencies = [ "generic-array", "rand_core 0.6.3", @@ -347,7 +359,7 @@ dependencies = [ [[package]] name = "cw-cyber-airdrop" -version = "0.0.1" +version = "1.0.0" dependencies = [ "anyhow", "base64", @@ -377,7 +389,7 @@ dependencies = [ [[package]] name = "cw-cyber-passport" -version = "0.0.1" +version = "1.0.0" dependencies = [ "base64", "bech32", @@ -405,7 +417,7 @@ dependencies = [ [[package]] name = "cw-cyber-subgraph" -version = "0.0.1" +version = "1.0.0" dependencies = [ "anyhow", "base64", @@ -580,9 +592,9 @@ dependencies = [ [[package]] name = "cyber-std" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f4e8bf17594e02eccf0836407850894f6c61e522482be9120bc79cd356120d7" +checksum = "2ba03b7658a0f54674726aafddbe00a73460adbc4dde854bd57b0e60cdeb0e68" dependencies = [ "cid 0.8.4", "cosmwasm-std", @@ -594,9 +606,9 @@ dependencies = [ [[package]] name = "cyber-std-test" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b643ae21be84bc8090544971db72d9dce90b40abb1858729b9d2b3bc901fa8e3" +checksum = "3aef8f5f1cc2b8414235518e11bda34d3e87a471cabb70420e9c081a7c7ac30c" dependencies = [ "anyhow", "cosmwasm-std", @@ -636,9 +648,9 @@ dependencies = [ [[package]] name = "der" -version = "0.4.5" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" dependencies = [ "const-oid", ] @@ -681,13 +693,13 @@ checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" [[package]] name = "ecdsa" -version = "0.12.4" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" +checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9" dependencies = [ "der", "elliptic-curve", - "hmac", + "rfc6979", "signature", ] @@ -714,25 +726,27 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "elliptic-curve" -version = "0.10.6" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beca177dcb8eb540133e7680baff45e7cc4d93bf22002676cec549f82343721b" +checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6" dependencies = [ + "base16ct", "crypto-bigint", + "der", "ff", "generic-array", "group", - "pkcs8", "rand_core 0.6.3", + "sec1", "subtle", "zeroize", ] [[package]] name = "ff" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" +checksum = "131655483be284720a17d74ff97592b8e76576dc25563148601df2d7c9080924" dependencies = [ "rand_core 0.6.3", "subtle", @@ -788,9 +802,9 @@ dependencies = [ [[package]] name = "group" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" +checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89" dependencies = [ "ff", "rand_core 0.6.3", @@ -830,13 +844,14 @@ checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" [[package]] name = "k256" -version = "0.9.6" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903ae2481bcdfdb7b68e0a9baa4b7c9aff600b9ae2e8e5bb5833b8c91ab851ea" +checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d" dependencies = [ "cfg-if 1.0.0", "ecdsa", "elliptic-curve", + "sec1", "sha2 0.9.9", ] @@ -939,12 +954,13 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "pkcs8" -version = "0.7.6" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3ef9b64d26bad0536099c816c6734379e45bbd5f14798def6809e5cc350447" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" dependencies = [ "der", "spki", + "zeroize", ] [[package]] @@ -1050,6 +1066,17 @@ dependencies = [ "getrandom 0.2.6", ] +[[package]] +name = "rfc6979" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525" +dependencies = [ + "crypto-bigint", + "hmac", + "zeroize", +] + [[package]] name = "ripemd160" version = "0.9.1" @@ -1091,6 +1118,19 @@ dependencies = [ "syn", ] +[[package]] +name = "sec1" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1" +dependencies = [ + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "semver" version = "1.0.7" @@ -1108,9 +1148,9 @@ dependencies = [ [[package]] name = "serde-json-wasm" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "042ac496d97e5885149d34139bad1d617192770d7eb8f1866da2317ff4501853" +checksum = "479b4dbc401ca13ee8ce902851b834893251404c4f3c65370a49e047a6be09a5" dependencies = [ "serde", ] @@ -1206,10 +1246,11 @@ dependencies = [ [[package]] name = "spki" -version = "0.4.1" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c01a0c15da1b0b0e1494112e7af814a678fec9bd157881b49beac661e9b6f32" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" dependencies = [ + "base64ct", "der", ] diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-airdrop/Cargo.toml index be4b6b2..e28acc1 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-airdrop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cw-cyber-airdrop" -version = "0.0.1" +version = "1.0.0" authors = ["CyberHead"] edition = "2018" @@ -46,7 +46,7 @@ cw0 = "0.10.3" cw2 = "0.13.2" cw20 = "0.13.2" cw1-subkeys = "0.13.2" -cosmwasm-std = { version = "1.0.0-beta8" } +cosmwasm-std = { version = "1.0.0" } cw-utils = { version = "0.13.2" } cw-cyber-passport = { path = "../cw-cyber-passport", features = ["library"] } cw-cyber-subgraph = { path = "../cw-cyber-subgraph", features = ["library"] } @@ -62,8 +62,8 @@ base64 = "0.13" semver = "1" [dev-dependencies] -cosmwasm-schema = { version = "1.0.0-beta8" } +cosmwasm-schema = { version = "1.0.0" } cw-multi-test = { version = "0.13.2" } cw1-whitelist = { version = "0.13.2" } -cyber-std = { version = "0.2.0" } -cyber-std-test = { version = "0.2.0" } +cyber-std = { version = "0.2.1" } +cyber-std-test = { version = "0.2.1" } diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index 2a3b4d5..0d8c6a0 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cw-cyber-passport" -version = "0.0.1" +version = "1.0.0" authors = ["CyberHead"] edition = "2018" @@ -41,8 +41,8 @@ optimize = """docker run --rm -v "$(pwd)":/code \ """ [dependencies] -cosmwasm-std = { version = "1.0.0-beta8" } -cosmwasm-storage = { version = "1.0.0-beta8" } +cosmwasm-std = { version = "1.0.0" } +cosmwasm-storage = { version = "1.0.0" } cw-storage-plus = "0.13.2" cw2 = "0.13.2" cw721 = { version = "0.13.2" } @@ -50,7 +50,7 @@ schemars = "0.8.3" serde = { version = "1.0.127", default-features = false, features = ["derive"] } thiserror = { version = "1.0.26" } cid = "0.7.0" -cyber-std = { version = "0.2.0" } +cyber-std = { version = "0.2.1" } cw-cyber-subgraph = { path = "../cw-cyber-subgraph" } cw-utils = { version = "0.13.2" } hex = "0.4" @@ -64,5 +64,5 @@ base64 = "0.13" semver = "1" [dev-dependencies] -cosmwasm-schema = { version = "1.0.0-beta8" } +cosmwasm-schema = { version = "1.0.0" } diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index 6d8361b..54f0ee7 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -83,12 +83,14 @@ "update_data": { "type": "object", "required": [ - "data", "nickname" ], "properties": { "data": { - "type": "string" + "type": [ + "string", + "null" + ] }, "nickname": { "type": "string" @@ -98,6 +100,32 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "update_particle" + ], + "properties": { + "update_particle": { + "type": "object", + "required": [ + "nickname" + ], + "properties": { + "nickname": { + "type": "string" + }, + "particle": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -597,6 +625,12 @@ }, "nickname": { "type": "string" + }, + "particle": { + "type": [ + "string", + "null" + ] } } }, diff --git a/contracts/cw-cyber-passport/schema/passport_metadata.json b/contracts/cw-cyber-passport/schema/passport_metadata.json index 9a81303..93bc138 100644 --- a/contracts/cw-cyber-passport/schema/passport_metadata.json +++ b/contracts/cw-cyber-passport/schema/passport_metadata.json @@ -27,6 +27,12 @@ }, "nickname": { "type": "string" + }, + "particle": { + "type": [ + "string", + "null" + ] } }, "definitions": { diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 7ea98ef..67039ba 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -6,7 +6,7 @@ use cyber_std::CyberMsgWrapper; use semver::Version; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subgraphs, execute_transfer_nft, execute_update_avatar, execute_update_name, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subgraphs, execute_transfer_nft, execute_update_avatar, execute_update_name, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data, execute_update_particle}; use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; @@ -50,6 +50,7 @@ pub fn execute( ExecuteMsg::UpdateName { old_nickname, new_nickname} => execute_update_name(deps, env, info, old_nickname, new_nickname), ExecuteMsg::UpdateAvatar { nickname, new_avatar} => execute_update_avatar(deps, env, info, nickname, new_avatar), ExecuteMsg::UpdateData { nickname, data} => execute_update_data(deps, env, info, nickname, data), + ExecuteMsg::UpdateParticle { nickname, particle} => execute_update_particle(deps, env, info, nickname, particle), ExecuteMsg::ProofAddress { nickname, address, signature } => execute_proof_address(deps, env, info, nickname, address, signature), ExecuteMsg::RemoveAddress {nickname, address } => execute_remove_address(deps, env, info, nickname, address), ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 967d623..f44a8cc 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -11,6 +11,9 @@ pub enum ContractError { #[error("{0}")] Std(#[from] StdError), + #[error("Disabled Functionality")] + DisabledFunctionality {}, + #[error("Unauthorized")] Unauthorized {}, diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 7c35835..ec6e781 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -86,7 +86,8 @@ pub fn execute_create_passport( addresses: None, avatar, nickname: nickname.clone(), - data: None + data: None, + particle: None }, }; @@ -260,11 +261,13 @@ pub fn execute_update_data( env: Env, info: MessageInfo, nickname: String, - new_data: String + new_data: Option ) -> Result { - let data_length = new_data.clone().len(); - if data_length > 256 && data_length < 3 { - return Err(ContractError::NotValidData {}); + if new_data.is_some() { + let data_length = new_data.clone().unwrap().len(); + if data_length > 256 && data_length < 3 { + return Err(ContractError::NotValidData {}); + } } if !NICKNAMES.has(deps.storage, &nickname.clone()) { @@ -282,7 +285,7 @@ pub fn execute_update_data( .tokens .update(deps.storage, &address_portid.clone().portid, |token| match token { Some(mut token_info) => { - token_info.extension.data = Option::from(new_data.clone()); + token_info.extension.data = new_data.clone(); Ok(token_info) } None => return Err(ContractError::TokenNotFound {}), @@ -295,6 +298,45 @@ pub fn execute_update_data( ])) } +pub fn execute_update_particle( + deps: DepsMut, + env: Env, + info: MessageInfo, + nickname: String, + new_particle: Option +) -> Result { + if new_particle.is_some() { + check_particle(new_particle.clone().unwrap())?; + } + + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + let cw721_contract = PassportContract::default(); + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env.clone(), address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + + cw721_contract + .tokens + .update(deps.storage, &address_portid.clone().portid, |token| match token { + Some(mut token_info) => { + token_info.extension.particle = new_particle.clone(); + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + Ok(Response::new() + .add_attributes(vec![ + attr("action", "update_particle"), + attr("nickname", nickname), + ])) +} + pub fn execute_proof_address( deps: DepsMut, env: Env, @@ -457,7 +499,7 @@ pub fn execute_mint( // let cw721_contract = PassportContract::default(); // let response = cw721_contract.mint(deps, env, internal_info, mint_msg)?; // Ok(response) - Err(ContractError::Unauthorized {}) + Err(ContractError::DisabledFunctionality {}) } pub fn execute_transfer_nft( @@ -467,118 +509,123 @@ pub fn execute_transfer_nft( recipient: String, token_id: String, ) -> Result { - let config = CONFIG.load(deps.storage)?; - - let cw721_contract = PassportContract::default(); - - let mut nickname = String::default(); - let mut avatar = String::default(); - - let new_owner = deps.api.addr_validate(&recipient)?; - - // clear proved addresses and data - cw721_contract - .tokens - .update(deps.storage, &token_id.clone(), |token| match token { - Some(mut token_info) => { - nickname = token_info.clone().extension.nickname; - avatar = token_info.clone().extension.avatar; - token_info.extension.addresses = Some(vec![]); - token_info.extension.data = None; - Ok(token_info) - } - None => return Err(ContractError::TokenNotFound {}), - })?; - - if !NICKNAMES.has(deps.storage, &nickname.clone()) { - return Err(ContractError::NicknameNotFound {}); - }; - - // map nickname to new owner - NICKNAMES.save( - deps.storage, - &nickname.clone(), - &AddressPortID{ - address: new_owner.clone(), - portid: token_id.clone() - } - )?; - - // clear this passport as active - if ACTIVE.has(deps.storage, &info.clone().sender) { - let active = ACTIVE.load(deps.storage, &info.clone().sender)?; - if active == token_id { - ACTIVE.remove(deps.storage, &info.clone().sender); - } - } - - let nickname_particle = prepare_particle(nickname.clone())?; - let address_particle = prepare_particle(new_owner.clone().to_string())?; - - // link passport to new owner - // nickname -> new address cyberlink - let name_subgraph_submsg = prepare_cyberlink_submsg( - config.name_subgraph.into(), - vec![ - Link{ - from: nickname_particle.clone().into(), - to: address_particle.clone().into() - }, - ] - ); - - let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; - Ok(response.add_submessage(name_subgraph_submsg)) + // let config = CONFIG.load(deps.storage)?; + // + // let cw721_contract = PassportContract::default(); + // + // let mut nickname = String::default(); + // let mut avatar = String::default(); + // + // let new_owner = deps.api.addr_validate(&recipient)?; + // + // // clear proved addresses and data + // cw721_contract + // .tokens + // .update(deps.storage, &token_id.clone(), |token| match token { + // Some(mut token_info) => { + // nickname = token_info.clone().extension.nickname; + // avatar = token_info.clone().extension.avatar; + // token_info.extension.addresses = Some(vec![]); + // token_info.extension.data = None; + // token_info.extension.particle = None; + // Ok(token_info) + // } + // None => return Err(ContractError::TokenNotFound {}), + // })?; + // + // if !NICKNAMES.has(deps.storage, &nickname.clone()) { + // return Err(ContractError::NicknameNotFound {}); + // }; + // + // // map nickname to new owner + // NICKNAMES.save( + // deps.storage, + // &nickname.clone(), + // &AddressPortID{ + // address: new_owner.clone(), + // portid: token_id.clone() + // } + // )?; + // + // // clear this passport as active + // if ACTIVE.has(deps.storage, &info.clone().sender) { + // let active = ACTIVE.load(deps.storage, &info.clone().sender)?; + // if active == token_id { + // ACTIVE.remove(deps.storage, &info.clone().sender); + // } + // } + // + // let nickname_particle = prepare_particle(nickname.clone())?; + // let address_particle = prepare_particle(new_owner.clone().to_string())?; + // + // // link passport to new owner + // // nickname -> new address cyberlink + // let name_subgraph_submsg = prepare_cyberlink_submsg( + // config.name_subgraph.into(), + // vec![ + // Link{ + // from: nickname_particle.clone().into(), + // to: address_particle.clone().into() + // }, + // ] + // ); + // + // let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; + // Ok(response.add_submessage(name_subgraph_submsg)) + Err(ContractError::DisabledFunctionality {}) } +// NOTE disabled pub fn execute_send_nft( - deps: DepsMut, - env: Env, - info: MessageInfo, - contract: String, - token_id: String, - msg: Binary + _deps: DepsMut, + _env: Env, + _info: MessageInfo, + _contract: String, + _token_id: String, + _msg: Binary ) -> Result { - let cw721_contract = PassportContract::default(); - - let mut nickname = String::default(); - let mut avatar = String::default(); - cw721_contract - .tokens - .update(deps.storage, &token_id.clone(), |token| match token { - Some(mut token_info) => { - nickname = token_info.clone().extension.nickname; - avatar = token_info.clone().extension.avatar; - token_info.extension.addresses = Some(vec![]); - token_info.extension.data = None; - Ok(token_info) - } - None => return Err(ContractError::TokenNotFound {}), - })?; - - if !NICKNAMES.has(deps.storage, &nickname.clone()) { - return Err(ContractError::NicknameNotFound {}); - }; - - // map nickname to new owner (contract in this case) - NICKNAMES.save( - deps.storage, - &nickname.clone(), - &AddressPortID{ - address: deps.api.addr_validate(&contract)?, - portid: token_id.clone() - } - )?; - - if ACTIVE.has(deps.storage, &info.clone().sender) { - let active = ACTIVE.load(deps.storage, &info.clone().sender)?; - if active == token_id { - ACTIVE.remove(deps.storage, &info.clone().sender); - } - } - - let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; - Ok(response) + // let cw721_contract = PassportContract::default(); + // + // let mut nickname = String::default(); + // let mut avatar = String::default(); + // cw721_contract + // .tokens + // .update(deps.storage, &token_id.clone(), |token| match token { + // Some(mut token_info) => { + // nickname = token_info.clone().extension.nickname; + // avatar = token_info.clone().extension.avatar; + // token_info.extension.addresses = Some(vec![]); + // token_info.extension.data = None; + // token_info.extension.particle = None; + // Ok(token_info) + // } + // None => return Err(ContractError::TokenNotFound {}), + // })?; + // + // if !NICKNAMES.has(deps.storage, &nickname.clone()) { + // return Err(ContractError::NicknameNotFound {}); + // }; + // + // // map nickname to new owner (contract in this case) + // NICKNAMES.save( + // deps.storage, + // &nickname.clone(), + // &AddressPortID{ + // address: deps.api.addr_validate(&contract)?, + // portid: token_id.clone() + // } + // )?; + // + // if ACTIVE.has(deps.storage, &info.clone().sender) { + // let active = ACTIVE.load(deps.storage, &info.clone().sender)?; + // if active == token_id { + // ACTIVE.remove(deps.storage, &info.clone().sender); + // } + // } + // + // let response = cw721_contract.send_nft(deps, env, info, contract, token_id, msg)?; + // Ok(response) + Err(ContractError::DisabledFunctionality {}) } pub fn execute_burn( diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index 207bd12..d12d62a 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -61,7 +61,11 @@ pub enum ExecuteMsg { }, UpdateData{ nickname: String, - data: String, + data: Option, + }, + UpdateParticle{ + nickname: String, + particle: Option, }, ProofAddress{ nickname: String, diff --git a/contracts/cw-cyber-passport/src/state.rs b/contracts/cw-cyber-passport/src/state.rs index 4e5ced4..e56e8a3 100644 --- a/contracts/cw-cyber-passport/src/state.rs +++ b/contracts/cw-cyber-passport/src/state.rs @@ -41,4 +41,5 @@ pub struct PassportMetadata { pub avatar: String, pub nickname: String, pub data: Option, + pub particle: Option } diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 2f37669..0261307 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -64,6 +64,7 @@ mod tests { avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport_metadata); @@ -76,6 +77,7 @@ mod tests { avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, data: None, + particle: None, } }; assert_eq!(query_passport_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport); @@ -97,6 +99,7 @@ mod tests { avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -115,6 +118,7 @@ mod tests { avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: None, data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -134,6 +138,7 @@ mod tests { avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: Option::from(vec![LabeledAddress{ label: None, address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string() }]), data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -153,6 +158,7 @@ mod tests { LabeledAddress{ label: None, address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() } ]), data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -195,6 +201,7 @@ mod tests { avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: Option::from(vec![LabeledAddress{ label: None, address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() }]), data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -211,6 +218,7 @@ mod tests { avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: None, data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); @@ -230,6 +238,7 @@ mod tests { avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: None, data: None, + particle: None, }; assert_eq!(query_metadata_by_nickname(deps.as_ref(), "name".into()).unwrap(), expected_passport_metadata); } diff --git a/contracts/cw-cyber-subgraph/Cargo.toml b/contracts/cw-cyber-subgraph/Cargo.toml index 2cc7436..4419052 100644 --- a/contracts/cw-cyber-subgraph/Cargo.toml +++ b/contracts/cw-cyber-subgraph/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cw-cyber-subgraph" -version = "0.0.1" +version = "1.0.0" authors = ["CyberHead"] edition = "2018" @@ -45,9 +45,9 @@ anyhow = "1" cw0 = "0.10.3" cw2 = "0.13.2" cw20 = "0.13.2" -cosmwasm-std = { version = "1.0.0-beta8" } +cosmwasm-std = { version = "1.0.0" } cw-utils = { version = "0.13.2" } -cyber-std = { version = "0.2.0" } +cyber-std = { version = "0.2.1" } cw-storage-plus = "0.13.2" schemars = "0.8.3" serde = { version = "1.0.127", default-features = false, features = ["derive"] } @@ -56,6 +56,6 @@ hex = "0.4" sha2 = { version = "0.9.5", default-features = false } sha3 = "0.9" serde_json = "1.0" -cosmwasm-schema = "1.0.0-beta8" +cosmwasm-schema = "1.0.0" base64 = "0.13" semver = "1" From 7e95775c96e4d898a5d66f83163c6e8105d9ec02 Mon Sep 17 00:00:00 2001 From: Snedashkovsky Date: Sat, 11 Jun 2022 15:12:45 +0800 Subject: [PATCH 52/69] - Update after testnet restating --- .../generate_test_data/contract_utils.py | 15 +- .../create_passport_and_claim_job.py | 4 +- ..._and_passport_contracts_load_testing.ipynb | 770 ++++-------------- 3 files changed, 159 insertions(+), 630 deletions(-) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py index 3b96bfa..e0c1a40 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py @@ -4,6 +4,7 @@ import pandas as pd from subprocess import Popen, PIPE +from aiohttp import ClientConnectorError from cyber_sdk.client.lcd import LCDClient from cyber_sdk.client.lcd.api.tx import CreateTxOptions from cyber_sdk.core import AccAddress, Coins @@ -17,6 +18,17 @@ NETWORK = 'space-pussy-1' +def Error_Handler(func): + def Inner_Function(*args, **kwargs): + try: + func(*args, **kwargs) + except (EOFError, IndexError, KeyError, TimeoutError, ClientConnectorError) as e: + print(f'Error: {e}') + except Exception as e: + print(f'Error: {e}') + return Inner_Function + + def execute_bash(bash_command: str, display_data: bool = False) -> [str, str]: _output, _error = Popen(bash_command, shell=True, stdout=PIPE, stderr=PIPE).communicate() if _error: @@ -149,7 +161,7 @@ def send_coins(self, from_seed: str, to_addresses: list, amounts: list, gas: int _tx = _wallet.create_and_sign_tx( CreateTxOptions( msgs=[_msg], - gas_prices="0boot", + gas_prices="0.1boot", gas=str(gas), fee_denoms=["boot"], ) @@ -283,6 +295,7 @@ def get_name_from_cid(self, ipfs_hash: str, row=None) -> str: except KeyError: return ipfs_hash + @Error_Handler def parse_contract_execution_json(self, contract_execution_json: str, row=None) -> None: print('\nEvents') _contract_execution_json = json.loads(contract_execution_json) diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py index f384d5b..75358b3 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py @@ -53,7 +53,7 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False log_file = f'temp/contract_release_execution_log_{index_number}.txt' \ if release_bool else f'temp/contract_participation_execution_log_{index_number}.txt' address_dict = {gift_contract_address: 'Gift Contract', - 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf': 'Passport Contract'} + 'bostrom1fzm6gzyccl8jvdv3qq6hp9vs6ylaruervs4m06c7k0ntzn2f8faq7ha2z2': 'Passport Contract'} row = pd.read_csv(source_file_name).iloc[int(index_number) % 10_000] row['ethereum_proof'] = row['ethereum_proof'].replace('\'', '').replace('[', '').replace(']', '').split(', ') @@ -65,7 +65,7 @@ def participation(row: pd.Series, address_dict: dict, release_bool: bool = False while res is None and i < 5: try: res = participation(row=row, address_dict=address_dict, release_bool=release_bool) - except (ClientConnectorError, LCDResponseError) as e: + except (OSError, ClientConnectorError, LCDResponseError) as e: sleep(10) print(f'Error: {e}\n') last_error = e diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb index e2602c7..d8f0b58 100644 --- a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb +++ b/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb @@ -45,12 +45,12 @@ "\n", "ipfs_client = ipfshttpclient.connect()\n", "\n", - "NUMBER_OF_PARTICIPANTS = 100\n", - "NUMBER_OF_ACTIVATED_PARTICIPANTS = 20\n", - "INITIAL_BALANCE = str(110_000_000)\n", + "NUMBER_OF_PARTICIPANTS = 20_000\n", + "NUMBER_OF_ACTIVATED_PARTICIPANTS = 5_000\n", + "INITIAL_BALANCE = str(30_000_000_000)\n", "COEF_UP = str(13)\n", "COEF_DOWN = str(7)\n", - "TARGET_CLAIM = str(2)\n", + "TARGET_CLAIM = str(2_000)\n", "CLAIM_AMOUNT_LIST = [int(round(20_000 * random.random(), -3)) + 20_000 for _ in range(NUMBER_OF_PARTICIPANTS)]\n", "\n", "NUMBER_OF_THREADS = 100\n", @@ -69,22 +69,22 @@ "SEND_COINS = True\n", "\n", "INIT_SUBGRAPH_CONTRACTS = False\n", - "SUBGRAPH_CODE_ID = str(3)\n", - "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza'\n", - "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf'\n", - "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp'\n", + "SUBGRAPH_CODE_ID = str(4)\n", + "NAME_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1zwv6feuzhy6a9wekh96cd57lsarmqlwxdypdsplw6zhfncqw6ftq67yzdk'\n", + "AVATAR_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1ghd753shjuwexxywmgs4xz7x2q732vcnkm6h2pyv9s6ah3hylvrqxkr9dg'\n", + "PROOF_SUBGRAPH_CONTRACT_ADDRESS = 'bostrom1xt4ahzz2x8hpkc0tk6ekte9x6crw4w6u0r67cyt3kz9syh24pd7s4t9edr'\n", "\n", "INIT_PASSPORT_CONTRACT = False\n", - "PASSPORT_CODE_ID = str(2)\n", - "PASSPORT_CONTRACT_ADDRESS = 'bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf'\n", + "PASSPORT_CODE_ID = str(7)\n", + "PASSPORT_CONTRACT_ADDRESS = 'bostrom1fzm6gzyccl8jvdv3qq6hp9vs6ylaruervs4m06c7k0ntzn2f8faq7ha2z2'\n", "\n", - "INIT_TREASURY_CONTRACT = True\n", - "TREASURY_CODE_ID = str(4)\n", - "TREASURY_CONTRACT_ADDRESS = 'bostrom18cszlvm6pze0x9sz32qnjq4vtd45xehqs8dq7cwy8yhq35wfnn3q9u647v'\n", + "INIT_TREASURY_CONTRACT = False\n", + "TREASURY_CODE_ID = str(5)\n", + "TREASURY_CONTRACT_ADDRESS = 'bostrom19ttnpna4fpwuhw9dwjukah5esz9ruutquuvhxa7ulyyk047vvpvs7nh8wu'\n", "\n", - "INIT_GIFT_CONTRACT = True\n", - "GIFT_CODE_ID = str(1)\n", - "GIFT_CONTRACT_ADDRESS = 'bostrom14swjuycwxmvghd9hgr3f3755388g6xkaqpn2dxcf700fzcwdm2nqum7453'\n", + "INIT_GIFT_CONTRACT = False\n", + "GIFT_CODE_ID = str(2)\n", + "GIFT_CONTRACT_ADDRESS = 'bostrom1gc5wcdn9ges00w0l2cfxd7r2puyflak5dmkg26rsh083afmnrjxq3q6aaa'\n", "\n", "PARTICIPANTS_FILE_NAME = 'temp/participants_test_data_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.csv'\n", "ROOT_SOURCE_FILE_NAME = 'temp/root_testing_source_' + str(NUMBER_OF_PARTICIPANTS) + '_addresses.json'\n", @@ -111,30 +111,10 @@ "cell_type": "code", "execution_count": 2, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of tasks: 100\n", - "Number of threads: 100\n" - ] - }, - { - "data": { - "text/plain": " 0%| | 0/100 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
037000john16524556460QmWjoa15st7pQdqCuo5vKMrpKMjXroJyCXB3Nm148kBpNm0xa46c3429e76d1fe548dada6de8ad4b34b51c7a9b0x16413d97eafd10e2dba139df366f2000ce6715a2688d...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqvcosmos1gsdle3czkc5gr25yykd2f5jjrh623nmkukmp7tthere admit toy stairs tree breeze taxi dress ...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv...0x7b31050cea96cb12eac7b3d4008b44cbf88a70ced847...{'pub_key': 'A2b4HMzGa4a5dMbgTlrQkXQLvFIOFeLW8...eyJwdWJfa2V5IjoiQTJiNEhNekdhNGE1ZE1iZ1RsclFrWF...
128000john16524556461QmfQCwumjRNJ99K2nNHu3w4ofG9cCmfgYK6oan8TLUoVFU0x22ee476481e69175a6aa699bd2cf243a502d32c00x59cd4a1e2c24acc5b624b6393b1adb5cf9e98e510670...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqzcosmos12fqp8lu305fm6jmuahl337eruln9c78azjrh79version giggle fruit orchard man royal false w...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz...0x1aeb731b6fc6f1082d9168644dd66cc493b469bf6954...{'pub_key': 'AnVFAajCMBRdW1/vKKzDaND5ilo+pnp5g...eyJwdWJfa2V5IjoiQW5WRkFhakNNQlJkVzEvdktLekRhTk...
237000john16524556462QmVBCneexAk5YwqgmZpK9uLJ7Yp3ztHPSuEhNf4SLwN6RY0x2e17b2d8622154f6cc672eed556f5dc063fc0cd10xad915cbf7122fec8901fc75f8c70cf1f40f19f6c7c3d...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6osmo1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcdd9l3p90napkin program tiny demise young cousin extend...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6...0x0be441a65c38e3edb63dca9b46419ec14d8a9bd8ddea...{'pub_key': 'AxEjEV43UTJBvprmwk3LMwM0hvwhguiSS...eyJwdWJfa2V5IjoiQXhFakVWNDNVVEpCdnBybXdrM0xNd0...
328000john16524556463QmNbbs86trP1bDhZmnehdhgmAug7sJqwZkAJYzaq4vqDJN0x6898679f8eb22714a6a6007f5698ca03d989aba00x76d74947ea7c816b275cdc2dc4d070c3e5fde17b4bbe...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2cosmos1xd76dswkdt2vl3fr9eh9g5rjymx9yjdnflhxsdalpha concert boil hip polar outdoor remember ...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2...0x329e5ba1786a7d1163bb297862a8e0bae468e0904ffe...{'pub_key': 'AnEN0gpvotvXcDI3vB3RzWQypvoPovFya...eyJwdWJfa2V5IjoiQW5FTjBncHZvdHZYY0RJM3ZCM1J6V1...
431000john16524556464QmRa7u7C9KJc5Hq1xVo5kTFwiFtZzSguoAd6uW9QmrwvF70xd0c078c04bc16329e6ad0f9660b604d8155262150xd5ee3986f420f753690313e7ad986125b290f7af5f45...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zccosmos1zyuzqfq8raq8fss7jvt9w8gxsrz4y96z22kzulroyal memory element nurse tiny brand expand c...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc...0x48d9bbdbb64db41baccba500163e3741ac3e857886da...{'pub_key': 'A186S7pWxo+VUTKbL9sZY4J+TOKAm4qrj...eyJwdWJfa2V5IjoiQTE4NlM3cFd4bytWVVRLYkw5c1pZNE...
\n" + "text/plain": " Unnamed: 0 amount nickname \\\n0 0 34000 john16548361750 \n1 1 34000 john16548361751 \n2 2 33000 john16548361752 \n3 3 32000 john16548361753 \n4 4 38000 john16548361754 \n\n avatar \\\n0 QmaaXjnSDLGwpSRHdzUU8XrLjVJPt6E5pE5JavMyTCD381 \n1 QmT7Qs7FRxLjjzJD5QxY7BDZ4R1VgdavE4NcNjQzr3EV1D \n2 QmQrf4uaZFS8YyouRuYW7RdSjZAY18jxB9t6NrWWqa9WKn \n3 QmYLg2fgKA6ptwXa4mFXyq2JqjEyTWMrFXwvu3J23zbepW \n4 QmNWX5GLuXzhhtZdxNAnWWC42gqJsA6A2fjsseB5HPVDyw \n\n ethereum_address \\\n0 0x3691db823a183aee18e998f2ddd77076a11fd74c \n1 0xb42fe61f2d97178c18d6f36c637e55ec207a5441 \n2 0x597ad4478d64d2702ad3187fd07ed2159a9b38d3 \n3 0xff0cf02f40e8021a91c48b79b7412c7b1c568b2f \n4 0xd8b950ffa0b84b4d73e377a5ca86ea0c233a83c7 \n\n ethereum_private_key \\\n0 0x2aa29fbec6aed68bf55a7025c4280b85d38683edf00a... \n1 0xe6df5403ea994063ff6e8ae25596433c157bf2cc1e97... \n2 0x046508e879cf32970d3150c439b20dbf4b5aedeccbe6... \n3 0x17ab2a2fbc4dc59d3d837892de0af854d922e79117bd... \n4 0x66907d36d32bd3e99be73912172ebb6198a768dfa049... \n\n bostrom_address \\\n0 bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gy \n1 bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5 \n2 bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfury \n3 bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4 \n4 bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79q \n\n cosmos_address \\\n0 terra14qx4d5nwyx5vj4e2gs6zfamjzydnvruyg5uf5r \n1 osmo17wuryy4kexsgyq6rq2k3x0735n4ntqeq6pc7yp \n2 terra1ag0uyutudtdtr7aenpc0c0jaedrwrsjf2980lr \n3 cosmos1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfaw8gvzj \n4 cosmos1x9966p9dwtcju7vy6lcc4mvvqsj5rnff9rkdm8 \n\n cosmos_seed \\\n0 hope captain swallow label fish clarify demise... \n1 science surprise lunar hip truth citizen excha... \n2 broccoli year exclude ship butter install goss... \n3 autumn nominee slab attend iron odor antique w... \n4 aware card grass item rural swallow alcohol co... \n\n message \\\n0 bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gy... \n1 bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5... \n2 bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfury... \n3 bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4... \n4 bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79q... \n\n ethereum_message_signature \\\n0 0xb38a11a271602c2dc33c81602ad994810f9cf48dfb4d... \n1 0x84c8f25ca81c784d243e406ec8a4a1e389aa728dc235... \n2 0xfc895e22ddcfc885b17b91fbc21146aa422d64e2ac43... \n3 0x9a6179bbb941309bd5247e82a30f6b1fab4f63bcdc87... \n4 0x59f2175d252ba9a551c8f9e957e26592769e2181e594... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AyjWt69QbKZ4V09ZCXKDN+bRgnw0H3R9B... \n1 {'pub_key': 'A9bjehAjjY32eiYHqWier3WVEOdZUwZ8Q... \n2 {'pub_key': 'AtTl2h3Nafoifz384IlN2M97SvoX/oZiQ... \n3 {'pub_key': 'Amw0GvH82F8z30EaAGnRqT75oSpWxMWzI... \n4 {'pub_key': 'AtDo/b+BravMbmqq8qoD40ROzNA84J2iY... \n\n cosmos_message_signature \n0 eyJwdWJfa2V5IjoiQXlqV3Q2OVFiS1o0VjA5WkNYS0ROK2... \n1 eyJwdWJfa2V5IjoiQTliamVoQWpqWTMyZWlZSHFXaWVyM1... \n2 eyJwdWJfa2V5IjoiQXRUbDJoM05hZm9pZnozODRJbE4yTT... \n3 eyJwdWJfa2V5IjoiQW13MEd2SDgyRjh6MzBFYUFHblJxVD... \n4 eyJwdWJfa2V5IjoiQXREby9iK0JyYXZNYm1xcThxb0Q0MF... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signature
0034000john16548361750QmaaXjnSDLGwpSRHdzUU8XrLjVJPt6E5pE5JavMyTCD3810x3691db823a183aee18e998f2ddd77076a11fd74c0x2aa29fbec6aed68bf55a7025c4280b85d38683edf00a...bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gyterra14qx4d5nwyx5vj4e2gs6zfamjzydnvruyg5uf5rhope captain swallow label fish clarify demise...bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gy...0xb38a11a271602c2dc33c81602ad994810f9cf48dfb4d...{'pub_key': 'AyjWt69QbKZ4V09ZCXKDN+bRgnw0H3R9B...eyJwdWJfa2V5IjoiQXlqV3Q2OVFiS1o0VjA5WkNYS0ROK2...
1134000john16548361751QmT7Qs7FRxLjjzJD5QxY7BDZ4R1VgdavE4NcNjQzr3EV1D0xb42fe61f2d97178c18d6f36c637e55ec207a54410xe6df5403ea994063ff6e8ae25596433c157bf2cc1e97...bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5osmo17wuryy4kexsgyq6rq2k3x0735n4ntqeq6pc7ypscience surprise lunar hip truth citizen excha...bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5...0x84c8f25ca81c784d243e406ec8a4a1e389aa728dc235...{'pub_key': 'A9bjehAjjY32eiYHqWier3WVEOdZUwZ8Q...eyJwdWJfa2V5IjoiQTliamVoQWpqWTMyZWlZSHFXaWVyM1...
2233000john16548361752QmQrf4uaZFS8YyouRuYW7RdSjZAY18jxB9t6NrWWqa9WKn0x597ad4478d64d2702ad3187fd07ed2159a9b38d30x046508e879cf32970d3150c439b20dbf4b5aedeccbe6...bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfuryterra1ag0uyutudtdtr7aenpc0c0jaedrwrsjf2980lrbroccoli year exclude ship butter install goss...bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfury...0xfc895e22ddcfc885b17b91fbc21146aa422d64e2ac43...{'pub_key': 'AtTl2h3Nafoifz384IlN2M97SvoX/oZiQ...eyJwdWJfa2V5IjoiQXRUbDJoM05hZm9pZnozODRJbE4yTT...
3332000john16548361753QmYLg2fgKA6ptwXa4mFXyq2JqjEyTWMrFXwvu3J23zbepW0xff0cf02f40e8021a91c48b79b7412c7b1c568b2f0x17ab2a2fbc4dc59d3d837892de0af854d922e79117bd...bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4cosmos1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfaw8gvzjautumn nominee slab attend iron odor antique w...bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4...0x9a6179bbb941309bd5247e82a30f6b1fab4f63bcdc87...{'pub_key': 'Amw0GvH82F8z30EaAGnRqT75oSpWxMWzI...eyJwdWJfa2V5IjoiQW13MEd2SDgyRjh6MzBFYUFHblJxVD...
4438000john16548361754QmNWX5GLuXzhhtZdxNAnWWC42gqJsA6A2fjsseB5HPVDyw0xd8b950ffa0b84b4d73e377a5ca86ea0c233a83c70x66907d36d32bd3e99be73912172ebb6198a768dfa049...bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79qcosmos1x9966p9dwtcju7vy6lcc4mvvqsj5rnff9rkdm8aware card grass item rural swallow alcohol co...bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79q...0x59f2175d252ba9a551c8f9e957e26592769e2181e594...{'pub_key': 'AtDo/b+BravMbmqq8qoD40ROzNA84J2iY...eyJwdWJfa2V5IjoiQXREby9iK0JyYXZNYm1xcThxb0Q0MF...
\n
" }, "execution_count": 2, "metadata": {}, @@ -246,43 +226,7 @@ { "cell_type": "code", "execution_count": 4, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of addresses: 200\n", - "Number of activated participants: 20\n", - "Number of threads: 30\n", - "Bash size: 2,000\n", - "Number of tasks: 1\n" - ] - }, - { - "data": { - "text/plain": " 0%| | 0/1 [00:00\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
037000john16524556460QmWjoa15st7pQdqCuo5vKMrpKMjXroJyCXB3Nm148kBpNm0xa46c3429e76d1fe548dada6de8ad4b34b51c7a9b0x16413d97eafd10e2dba139df366f2000ce6715a2688d...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqvcosmos1gsdle3czkc5gr25yykd2f5jjrh623nmkukmp7tthere admit toy stairs tree breeze taxi dress ...bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv...0x7b31050cea96cb12eac7b3d4008b44cbf88a70ced847...{'pub_key': 'A2b4HMzGa4a5dMbgTlrQkXQLvFIOFeLW8...eyJwdWJfa2V5IjoiQTJiNEhNekdhNGE1ZE1iZ1RsclFrWF...[70a9a5e7aa10854e6f167eda7b352b64b24a562ca26eb...[7dcd5af93f173319c6c356493b959cde219bc13ae38a9...
128000john16524556461QmfQCwumjRNJ99K2nNHu3w4ofG9cCmfgYK6oan8TLUoVFU0x22ee476481e69175a6aa699bd2cf243a502d32c00x59cd4a1e2c24acc5b624b6393b1adb5cf9e98e510670...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqzcosmos12fqp8lu305fm6jmuahl337eruln9c78azjrh79version giggle fruit orchard man royal false w...bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz...0x1aeb731b6fc6f1082d9168644dd66cc493b469bf6954...{'pub_key': 'AnVFAajCMBRdW1/vKKzDaND5ilo+pnp5g...eyJwdWJfa2V5IjoiQW5WRkFhakNNQlJkVzEvdktLekRhTk...[399a98cd3d212979c91bc8d9ad03060e824f9435af263...[fc56c0bfb765e57ca284837bbff37e6e61780dce7e258...
237000john16524556462QmVBCneexAk5YwqgmZpK9uLJ7Yp3ztHPSuEhNf4SLwN6RY0x2e17b2d8622154f6cc672eed556f5dc063fc0cd10xad915cbf7122fec8901fc75f8c70cf1f40f19f6c7c3d...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6osmo1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcdd9l3p90napkin program tiny demise young cousin extend...bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6...0x0be441a65c38e3edb63dca9b46419ec14d8a9bd8ddea...{'pub_key': 'AxEjEV43UTJBvprmwk3LMwM0hvwhguiSS...eyJwdWJfa2V5IjoiQXhFakVWNDNVVEpCdnBybXdrM0xNd0...[dad8722f9cd38c8d3c4cc8d93fb93f2dcb065836c27ea...[d2ba1908f7c1f342ab59767a448b04f2b810c4b6826d8...
328000john16524556463QmNbbs86trP1bDhZmnehdhgmAug7sJqwZkAJYzaq4vqDJN0x6898679f8eb22714a6a6007f5698ca03d989aba00x76d74947ea7c816b275cdc2dc4d070c3e5fde17b4bbe...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2cosmos1xd76dswkdt2vl3fr9eh9g5rjymx9yjdnflhxsdalpha concert boil hip polar outdoor remember ...bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2...0x329e5ba1786a7d1163bb297862a8e0bae468e0904ffe...{'pub_key': 'AnEN0gpvotvXcDI3vB3RzWQypvoPovFya...eyJwdWJfa2V5IjoiQW5FTjBncHZvdHZYY0RJM3ZCM1J6V1...[72ab4c77c67b75ed61e371b80c3e14f572b119cb33371...[9e9b246ea79f0d400d03ce1e6f02a8c7be784f8090563...
431000john16524556464QmRa7u7C9KJc5Hq1xVo5kTFwiFtZzSguoAd6uW9QmrwvF70xd0c078c04bc16329e6ad0f9660b604d8155262150xd5ee3986f420f753690313e7ad986125b290f7af5f45...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zccosmos1zyuzqfq8raq8fss7jvt9w8gxsrz4y96z22kzulroyal memory element nurse tiny brand expand c...bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc...0x48d9bbdbb64db41baccba500163e3741ac3e857886da...{'pub_key': 'A186S7pWxo+VUTKbL9sZY4J+TOKAm4qrj...eyJwdWJfa2V5IjoiQTE4NlM3cFd4bytWVVRLYkw5c1pZNE...[422b95ce4a98d42b8004f37d4d762f381aaa271d6eca5...[0c48f41cd026f7f611d08ff3e0001096f3c29e271ca1d...
\n" + "text/plain": " Unnamed: 0 amount nickname \\\n0 0 34000 john16548361750 \n1 1 34000 john16548361751 \n2 2 33000 john16548361752 \n3 3 32000 john16548361753 \n4 4 38000 john16548361754 \n\n avatar \\\n0 QmaaXjnSDLGwpSRHdzUU8XrLjVJPt6E5pE5JavMyTCD381 \n1 QmT7Qs7FRxLjjzJD5QxY7BDZ4R1VgdavE4NcNjQzr3EV1D \n2 QmQrf4uaZFS8YyouRuYW7RdSjZAY18jxB9t6NrWWqa9WKn \n3 QmYLg2fgKA6ptwXa4mFXyq2JqjEyTWMrFXwvu3J23zbepW \n4 QmNWX5GLuXzhhtZdxNAnWWC42gqJsA6A2fjsseB5HPVDyw \n\n ethereum_address \\\n0 0x3691db823a183aee18e998f2ddd77076a11fd74c \n1 0xb42fe61f2d97178c18d6f36c637e55ec207a5441 \n2 0x597ad4478d64d2702ad3187fd07ed2159a9b38d3 \n3 0xff0cf02f40e8021a91c48b79b7412c7b1c568b2f \n4 0xd8b950ffa0b84b4d73e377a5ca86ea0c233a83c7 \n\n ethereum_private_key \\\n0 0x2aa29fbec6aed68bf55a7025c4280b85d38683edf00a... \n1 0xe6df5403ea994063ff6e8ae25596433c157bf2cc1e97... \n2 0x046508e879cf32970d3150c439b20dbf4b5aedeccbe6... \n3 0x17ab2a2fbc4dc59d3d837892de0af854d922e79117bd... \n4 0x66907d36d32bd3e99be73912172ebb6198a768dfa049... \n\n bostrom_address \\\n0 bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gy \n1 bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5 \n2 bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfury \n3 bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4 \n4 bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79q \n\n cosmos_address \\\n0 terra14qx4d5nwyx5vj4e2gs6zfamjzydnvruyg5uf5r \n1 osmo17wuryy4kexsgyq6rq2k3x0735n4ntqeq6pc7yp \n2 terra1ag0uyutudtdtr7aenpc0c0jaedrwrsjf2980lr \n3 cosmos1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfaw8gvzj \n4 cosmos1x9966p9dwtcju7vy6lcc4mvvqsj5rnff9rkdm8 \n\n cosmos_seed \\\n0 hope captain swallow label fish clarify demise... \n1 science surprise lunar hip truth citizen excha... \n2 broccoli year exclude ship butter install goss... \n3 autumn nominee slab attend iron odor antique w... \n4 aware card grass item rural swallow alcohol co... \n\n message \\\n0 bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gy... \n1 bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5... \n2 bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfury... \n3 bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4... \n4 bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79q... \n\n ethereum_message_signature \\\n0 0xb38a11a271602c2dc33c81602ad994810f9cf48dfb4d... \n1 0x84c8f25ca81c784d243e406ec8a4a1e389aa728dc235... \n2 0xfc895e22ddcfc885b17b91fbc21146aa422d64e2ac43... \n3 0x9a6179bbb941309bd5247e82a30f6b1fab4f63bcdc87... \n4 0x59f2175d252ba9a551c8f9e957e26592769e2181e594... \n\n cosmos_message_signed_row \\\n0 {'pub_key': 'AyjWt69QbKZ4V09ZCXKDN+bRgnw0H3R9B... \n1 {'pub_key': 'A9bjehAjjY32eiYHqWier3WVEOdZUwZ8Q... \n2 {'pub_key': 'AtTl2h3Nafoifz384IlN2M97SvoX/oZiQ... \n3 {'pub_key': 'Amw0GvH82F8z30EaAGnRqT75oSpWxMWzI... \n4 {'pub_key': 'AtDo/b+BravMbmqq8qoD40ROzNA84J2iY... \n\n cosmos_message_signature \\\n0 eyJwdWJfa2V5IjoiQXlqV3Q2OVFiS1o0VjA5WkNYS0ROK2... \n1 eyJwdWJfa2V5IjoiQTliamVoQWpqWTMyZWlZSHFXaWVyM1... \n2 eyJwdWJfa2V5IjoiQXRUbDJoM05hZm9pZnozODRJbE4yTT... \n3 eyJwdWJfa2V5IjoiQW13MEd2SDgyRjh6MzBFYUFHblJxVD... \n4 eyJwdWJfa2V5IjoiQXREby9iK0JyYXZNYm1xcThxb0Q0MF... \n\n ethereum_proof \\\n0 [4710b3ef8cb686c8b316654c7a6587fe33c256755bd65... \n1 [cc3c069b0ce8d95d69e48a7b4f3728d892a36270e3e52... \n2 [50a1a2537255c5e1f077442076b2273671acc7b2d5a46... \n3 [e069f04ee7b66a3181a7fcc473cde8fb80b10ef8077f3... \n4 [5239d46e245ce4af1f69ec17f7786c6042fea7f62a0d8... \n\n cosmos_proof \n0 [172e89389492e7389a96c98cae5190ffcae04a8d2eb85... \n1 [5398e38c29e181c2ff18cd4df1215ca90677cca24eeb6... \n2 [ad1576871f19a385d00e90552c06a38d084ba80aa043f... \n3 [0da1f0fe7351add378fb84ade27270a297bce88360b95... \n4 [9bb1d32faec7ad21dd219cce62196c374806fd1d77d36... ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0amountnicknameavatarethereum_addressethereum_private_keybostrom_addresscosmos_addresscosmos_seedmessageethereum_message_signaturecosmos_message_signed_rowcosmos_message_signatureethereum_proofcosmos_proof
0034000john16548361750QmaaXjnSDLGwpSRHdzUU8XrLjVJPt6E5pE5JavMyTCD3810x3691db823a183aee18e998f2ddd77076a11fd74c0x2aa29fbec6aed68bf55a7025c4280b85d38683edf00a...bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gyterra14qx4d5nwyx5vj4e2gs6zfamjzydnvruyg5uf5rhope captain swallow label fish clarify demise...bostrom14qx4d5nwyx5vj4e2gs6zfamjzydnvruydrj6gy...0xb38a11a271602c2dc33c81602ad994810f9cf48dfb4d...{'pub_key': 'AyjWt69QbKZ4V09ZCXKDN+bRgnw0H3R9B...eyJwdWJfa2V5IjoiQXlqV3Q2OVFiS1o0VjA5WkNYS0ROK2...[4710b3ef8cb686c8b316654c7a6587fe33c256755bd65...[172e89389492e7389a96c98cae5190ffcae04a8d2eb85...
1134000john16548361751QmT7Qs7FRxLjjzJD5QxY7BDZ4R1VgdavE4NcNjQzr3EV1D0xb42fe61f2d97178c18d6f36c637e55ec207a54410xe6df5403ea994063ff6e8ae25596433c157bf2cc1e97...bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5osmo17wuryy4kexsgyq6rq2k3x0735n4ntqeq6pc7ypscience surprise lunar hip truth citizen excha...bostrom17wuryy4kexsgyq6rq2k3x0735n4ntqeq3flav5...0x84c8f25ca81c784d243e406ec8a4a1e389aa728dc235...{'pub_key': 'A9bjehAjjY32eiYHqWier3WVEOdZUwZ8Q...eyJwdWJfa2V5IjoiQTliamVoQWpqWTMyZWlZSHFXaWVyM1...[cc3c069b0ce8d95d69e48a7b4f3728d892a36270e3e52...[5398e38c29e181c2ff18cd4df1215ca90677cca24eeb6...
2233000john16548361752QmQrf4uaZFS8YyouRuYW7RdSjZAY18jxB9t6NrWWqa9WKn0x597ad4478d64d2702ad3187fd07ed2159a9b38d30x046508e879cf32970d3150c439b20dbf4b5aedeccbe6...bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfuryterra1ag0uyutudtdtr7aenpc0c0jaedrwrsjf2980lrbroccoli year exclude ship butter install goss...bostrom1ag0uyutudtdtr7aenpc0c0jaedrwrsjf0jfury...0xfc895e22ddcfc885b17b91fbc21146aa422d64e2ac43...{'pub_key': 'AtTl2h3Nafoifz384IlN2M97SvoX/oZiQ...eyJwdWJfa2V5IjoiQXRUbDJoM05hZm9pZnozODRJbE4yTT...[50a1a2537255c5e1f077442076b2273671acc7b2d5a46...[ad1576871f19a385d00e90552c06a38d084ba80aa043f...
3332000john16548361753QmYLg2fgKA6ptwXa4mFXyq2JqjEyTWMrFXwvu3J23zbepW0xff0cf02f40e8021a91c48b79b7412c7b1c568b2f0x17ab2a2fbc4dc59d3d837892de0af854d922e79117bd...bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4cosmos1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfaw8gvzjautumn nominee slab attend iron odor antique w...bostrom1gqz7pm32fcvzzskk7dg3kp0vgzs4aqfad5ulu4...0x9a6179bbb941309bd5247e82a30f6b1fab4f63bcdc87...{'pub_key': 'Amw0GvH82F8z30EaAGnRqT75oSpWxMWzI...eyJwdWJfa2V5IjoiQW13MEd2SDgyRjh6MzBFYUFHblJxVD...[e069f04ee7b66a3181a7fcc473cde8fb80b10ef8077f3...[0da1f0fe7351add378fb84ade27270a297bce88360b95...
4438000john16548361754QmNWX5GLuXzhhtZdxNAnWWC42gqJsA6A2fjsseB5HPVDyw0xd8b950ffa0b84b4d73e377a5ca86ea0c233a83c70x66907d36d32bd3e99be73912172ebb6198a768dfa049...bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79qcosmos1x9966p9dwtcju7vy6lcc4mvvqsj5rnff9rkdm8aware card grass item rural swallow alcohol co...bostrom1x9966p9dwtcju7vy6lcc4mvvqsj5rnffxsz79q...0x59f2175d252ba9a551c8f9e957e26592769e2181e594...{'pub_key': 'AtDo/b+BravMbmqq8qoD40ROzNA84J2iY...eyJwdWJfa2V5IjoiQXREby9iK0JyYXZNYm1xcThxb0Q0MF...[5239d46e245ce4af1f69ec17f7786c6042fea7f62a0d8...[9bb1d32faec7ad21dd219cce62196c374806fd1d77d36...
\n
" }, "execution_count": 5, "metadata": {}, @@ -401,9 +345,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Name subgraph contract address: bostrom1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sp98tza\n", - "Avatar subgraph contract address: bostrom17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs6qwudf\n", - "Proof subgraph contract address: bostrom1unyuj8qnmygvzuex3dwmg9yzt9alhvyeat0uu0jedg2wj33efl5qpj0rgp\n" + "Name subgraph contract address: bostrom1zwv6feuzhy6a9wekh96cd57lsarmqlwxdypdsplw6zhfncqw6ftq67yzdk\n", + "Avatar subgraph contract address: bostrom1ghd753shjuwexxywmgs4xz7x2q732vcnkm6h2pyv9s6ah3hylvrqxkr9dg\n", + "Proof subgraph contract address: bostrom1xt4ahzz2x8hpkc0tk6ekte9x6crw4w6u0r67cyt3kz9syh24pd7s4t9edr\n" ] } ], @@ -461,7 +405,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Passport contract address: bostrom1hulx7cgvpfcvg83wk5h96sedqgn72n026w6nl47uht554xhvj9nsjxcwgf\n" + "Passport contract address: bostrom1fzm6gzyccl8jvdv3qq6hp9vs6ylaruervs4m06c7k0ntzn2f8faq7ha2z2\n" ] } ], @@ -539,7 +483,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Treasury contract address: bostrom1rpxf55u22q2tly9y8rgdrjgx9p52sus7jugaevj3hdt0z7sgvkcs4cmls6\n" + "Treasury contract address: bostrom19ttnpna4fpwuhw9dwjukah5esz9ruutquuvhxa7ulyyk047vvpvs7nh8wu\n" ] } ], @@ -584,7 +528,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract address: bostrom17s8kkfm5lf8lacz704f4fjmfxzuvyqd8cksakrlhnrass4yacvxqhu673c\n" + "Gift contract address: bostrom1gc5wcdn9ges00w0l2cfxd7r2puyflak5dmkg26rsh083afmnrjxq3q6aaa\n" ] } ], @@ -667,19 +611,19 @@ "\n", "coin received\n", "\treceiver: Treasury Contract\n", - "\tamount: 110000000boot\n", + "\tamount: 30000000000boot\n", "\n", "coin spent\n", "\tspender: Passport Owner Address\n", - "\tamount: 110000000boot\n", + "\tamount: 30000000000boot\n", "\n", "message from bank bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0 /cosmos.bank.v1beta1.MsgMultiSend\n", "\n", "transfer\n", "\trecipient: Treasury Contract\n", - "\tamount: 110000000boot\n", - "Gas used: 73,150\n", - "Tx hash: B5DBA805FBE8E9882A7D2094273924DAA72402C2778E684F74F2A6F59F7F9D87\n" + "\tamount: 30000000000boot\n", + "Gas used: 86,568\n", + "Tx hash: 823B7CB39E0B68EDD6ABC409CF595F9923BE936A7E7A386996185C83981C081E\n" ] } ], @@ -721,9 +665,9 @@ "\towner: Passport Owner Address\n", "\tspender: Gift Contract\n", "\tdenomination: boot\n", - "\tamount: 110,000,000\n", - "Gas used: 135,284\n", - "Tx hash: DDD2E9063B7140FD3A9D63E92B230C750B93A78C915CE6725C04D8E76FF17839\n" + "\tamount: 30,000,000,000\n", + "Gas used: 135,339\n", + "Tx hash: B680702CE0A4CBF4AA2E2A2CFA0221F6D30DC067528965E94476F1C9137EF913\n" ] } ], @@ -787,9 +731,9 @@ "wasm\n", "\t_contract_address: Gift Contract\n", "\taction: register_merkle_root\n", - "\tmerkle_root: 9cd04665a7e1232d6af027e7890cb5b043a694d5272ec74931a37bb825054c37\n", - "Gas used: 131,251\n", - "Tx hash: 47FDA80F5D2E56E1D2C567341ABFF9028663FB6EC0906E95C19F9C0DA77FE465\n" + "\tmerkle_root: 0cd70e3c34ff111de47721ca40ece8fad8d49549bfc16d29f5d074781bdd3ff1\n", + "Gas used: 130,976\n", + "Tx hash: F20198A196F13F8D1FB93E66116A66ADE77C7E43726AA8BEBAF419ADBD316E82\n" ] } ], @@ -828,8 +772,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gift contract bostrom17s8kkfm5lf8lacz704f4fjmfxzuvyqd8cksakrlhnrass4yacvxqhu673c\n", - "{'data': {'merkle_root': '9cd04665a7e1232d6af027e7890cb5b043a694d5272ec74931a37bb825054c37'}}\n" + "Gift contract bostrom1gc5wcdn9ges00w0l2cfxd7r2puyflak5dmkg26rsh083afmnrjxq3q6aaa\n", + "{'data': {'merkle_root': '0cd70e3c34ff111de47721ca40ece8fad8d49549bfc16d29f5d074781bdd3ff1'}}\n" ] } ], @@ -877,7 +821,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "6b1152631b8f45b0a24c0fe24a12faaa" + "model_id": "9888696f1aa7491e9d667c08d72ffbac" } }, "metadata": {}, @@ -885,7 +829,7 @@ } ], "source": [ - "NUMBER_ADDRESSES_IN_SENDING_CHUNK = 900\n", + "NUMBER_ADDRESSES_IN_SENDING_CHUNK = 800\n", "\n", "bostrom_addresses = claims_with_proofs_df.bostrom_address.to_list()\n", "bostrom_addresses_chunks = [bostrom_addresses[i: i+ NUMBER_ADDRESSES_IN_SENDING_CHUNK] for i in range(0, len(bostrom_addresses), NUMBER_ADDRESSES_IN_SENDING_CHUNK)]\n", @@ -898,7 +842,7 @@ " from_seed=WALLET_SEED,\n", " to_addresses=bostrom_addresses_item,\n", " amounts=[1] * len(bostrom_addresses_item),\n", - " gas=min(150_000 + 30_000 * len(bostrom_addresses_item), int(24e6)),\n", + " gas=min(150_000 + 30_000 * len(bostrom_addresses_item), int(22e6)),\n", " display_data=DISPLAY_TX_EXECUTION))\n", " except Exception as e:\n", " print(f'Error in the {i} chunk: {e}')\n", @@ -913,147 +857,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "coin received\n", - "\treceiver: bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc\n", - "\tamount: 1boot\n", - "\treceiver: bostrom10usrwj4knqraus5wcek7a8yxxk9n7yh47u6m0c\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1qvpwm6a2e0asksgr0qysu29v42gwvgrhrrl3n5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1c7s7rxtm7wucxv00uldyxp3cu9jp9yfsd4hlw9\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1exwwe53ev75afrhgrcguh8dchq3v3836ul0ndp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y0fyp8mrmjnj8mup6tlz857hu3atuqmypljdux\n", - "\tamount: 1boot\n", - "\treceiver: bostrom155ckth72jne85wf5z7ly62qgct4d2sy68sazmq\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1lzdt4wdzrrf9rgc2sr6kt8dez2exfl6u4jquex\n", - "\tamount: 1boot\n", - "\treceiver: bostrom12ghyly4gvdnkaj6apqnjadczmejp2x27kw2pku\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1y49f2ja6kjfmdqyvd8dmd8gmgpctl3mzk29ma5\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1glz3832qtlc9kx5mu652yclz090yjadpy352ad\n", - "\tamount: 1boot\n", - "\treceiver: bostrom17fadfef3kgjvgvzsn7cq2frwa43wft2rvcwrwy\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1eky6aqsgac5xasmh67fwg67y626dv4c3a77lqp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1809tax5g8prmdljgmhxvav5x99a3hf28874xrp\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1fklqnt78adke0ttgamla85xesjamu8jw4qc4fm\n", - "\tamount: 1boot\n", - "\treceiver: bostrom1v0lzvpq7n5jrw4wwx9zna0gmerx2gpc32f6tsu\n", - "\tamount: 1boot\n", - "\n", - "coin spent\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\tspender: Passport Owner Address\n", - "\tamount: 1boot\n", - "\n", - "{'attributes': [{'key': 'action', 'value': '/cosmos.bank.v1beta1.MsgMultiSend'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'sender', 'value': 'bostrom1mxdtr8lruutugqtxgpw2sf2tl2mhzlq5fd2du0'}, {'key': 'module', 'value': 'bank'}], 'type': 'message'}\n", - "\n", - "transfer\n", - "\trecipient: bostrom1gsdle3czkc5gr25yykd2f5jjrh623nmkl90jqv\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1nk8lxsa7c5fg4hrtgemrjhtmv2j8fcddwhkzd6\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc\n", - "\tamount: 1boot\n", - "\trecipient: bostrom10usrwj4knqraus5wcek7a8yxxk9n7yh47u6m0c\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1qvpwm6a2e0asksgr0qysu29v42gwvgrhrrl3n5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1c7s7rxtm7wucxv00uldyxp3cu9jp9yfsd4hlw9\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1exwwe53ev75afrhgrcguh8dchq3v3836ul0ndp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y0fyp8mrmjnj8mup6tlz857hu3atuqmypljdux\n", - "\tamount: 1boot\n", - "\trecipient: bostrom155ckth72jne85wf5z7ly62qgct4d2sy68sazmq\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1lzdt4wdzrrf9rgc2sr6kt8dez2exfl6u4jquex\n", - "\tamount: 1boot\n", - "\trecipient: bostrom12ghyly4gvdnkaj6apqnjadczmejp2x27kw2pku\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1y49f2ja6kjfmdqyvd8dmd8gmgpctl3mzk29ma5\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1glz3832qtlc9kx5mu652yclz090yjadpy352ad\n", - "\tamount: 1boot\n", - "\trecipient: bostrom17fadfef3kgjvgvzsn7cq2frwa43wft2rvcwrwy\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1eky6aqsgac5xasmh67fwg67y626dv4c3a77lqp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1809tax5g8prmdljgmhxvav5x99a3hf28874xrp\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1fklqnt78adke0ttgamla85xesjamu8jw4qc4fm\n", - "\tamount: 1boot\n", - "\trecipient: bostrom1v0lzvpq7n5jrw4wwx9zna0gmerx2gpc32f6tsu\n", - "\tamount: 1boot\n", - "Gas used: 564,949\n", - "Tx hash: 702F9CC6E07293D2CCB69CB629E77C95099CEF0556750C81EC1FF3054A565003\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "contract_utils.parse_contract_execution_json(contract_execution_json=send_output[0])" ], @@ -1078,29 +883,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of tasks: 20\n", - "Number of threads: 100\n" - ] - }, - { - "data": { - "text/plain": " 0%| | 0/20 [00:00 bool:\n", " _output, _error = execute_bash(bash_command=f'{PYTHON_PATH} create_passport_and_claim_job.py temp/{row_index//10_000}_{PARTICIPANTS_FILE_NAME.split(\"/\")[1]} {row_index} {gift_contract_address}')\n", @@ -1128,11 +912,13 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "outputs": [], "source": [ - "with open('temp/contract_participation_execution_log_10000.txt', 'r') as f:\n", - " data = json.load(f)" + "import json\n", + "with open('temp/contract_participation_execution_log_2.txt', 'r') as f:\n", + " data = json.load(f)\n", + "data" ], "metadata": { "collapsed": false, @@ -1143,37 +929,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Name Subgraph Contract\n", - "\texecute contract: Avatar Subgraph Contract\n", - "\n", - "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Name Subgraph Contract\n", - "\treply contract: Avatar Subgraph Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: mint\n", - "\tminter: Passport Contract\n", - "\towner: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", - "\ttoken_id: 518458\n", - "Gas used: 342,373\n", - "Tx hash: 5828264EA6AB3B89BFDDB4BDD9F93B97D3AB52DF0C7715712C73044D3864B339\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "contract_utils.parse_contract_execution_json(data['create'], row=claims_with_proofs_df.loc[1,:])" ], @@ -1186,34 +943,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Proof Subgraph Contract\n", - "\n", - "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Proof Subgraph Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16524182639991\n", - "\taddress: 0x18fb581ee5d55bdbb4628490fcc323a8683e0182\n", - "Gas used: 237,523\n", - "Tx hash: 2487472AC6E27B38D36E7488464426BD4E606C06CF6393D2E3EE072A8C441043\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "contract_utils.parse_contract_execution_json(data['proof_ethereum'], row=claims_with_proofs_df.loc[1,:])" ], @@ -1226,34 +957,8 @@ }, { "cell_type": "code", - "execution_count": 23, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Proof Subgraph Contract\n", - "\n", - "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Proof Subgraph Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: proof_address\n", - "\tnickname: john16524182639991\n", - "\taddress: cosmos18x96qyxfj9kxnqerj5ye4430gl4mdm0032vlm5\n", - "Gas used: 240,955\n", - "Tx hash: 17522237555D106CABA1FB0E454803AB674B8C7A408CC6BC36907254841DE6ED\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "contract_utils.parse_contract_execution_json(data['proof_cosmos'], row=claims_with_proofs_df.loc[1,:])" ], @@ -1266,48 +971,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Events\n", - "\n", - "coin received\n", - "\treceiver: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", - "\tamount: 100000boot\n", - "\n", - "coin spent\n", - "\tspender: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", - "\tamount: 100000boot\n", - "\n", - "execute\n", - "\texecute contract: bostrom1zvjnc08uy0zz43m0nlh9f5aetpa3amn6a034yqvmsgvzshk9cldsqf2n5c\n", - "\texecute contract: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", - "\n", - "message from bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "transfer\n", - "\trecipient: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", - "\tsender: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", - "\tamount: 100000boot\n", - "\n", - "wasm\n", - "\t_contract_address: bostrom1zvjnc08uy0zz43m0nlh9f5aetpa3amn6a034yqvmsgvzshk9cldsqf2n5c\n", - "\taction: claim\n", - "\toriginal: cosmos18x96qyxfj9kxnqerj5ye4430gl4mdm0032vlm5\n", - "\ttarget: bostrom18x96qyxfj9kxnqerj5ye4430gl4mdm00jecv9n\n", - "\tamount: 264,200\n", - "\t_contract_address: bostrom1nfktgkcdysf38rx6wcycfwz5yhuw6cq9el970p845sj9nm5c99sq6qs023\n", - "\taction: execute\n", - "\towner: bostrom1zvjnc08uy0zz43m0nlh9f5aetpa3amn6a034yqvmsgvzshk9cldsqf2n5c\n", - "Gas used: 397,959\n", - "Tx hash: 959556655E6A91D3F40FB4E25EC3CB0E642F39D31460AB686E5DBA075CF2F255\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "contract_utils.parse_contract_execution_json(data['claim_cosmos'], row=claims_with_proofs_df.loc[1,:])" ], @@ -1332,23 +997,23 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 20, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of tasks: 20\n", + "Number of tasks: 5,000\n", "Number of threads: 100\n" ] }, { "data": { - "text/plain": " 0%| | 0/20 [00:00 str:\n", - " return query_contract(query=f'''{{\"tokens\": {{\"owner\": \"{bostrom_address}\"}}}}''',\n", - " contract_address=passport_contract_address)['data']['tokens'][0]" + " try:\n", + " return query_contract(query=f'''{{\"tokens\": {{\"owner\": \"{bostrom_address}\"}}}}''',\n", + " contract_address=passport_contract_address)['data']['tokens'][0]\n", + " except (json.JSONDecodeError, IndexError) as e:\n", + " print(f'Error in the get passport: {e}')\n", + " return ''" ], "metadata": { "collapsed": false, @@ -1536,166 +1137,81 @@ }, { "cell_type": "code", - "execution_count": 30, - "outputs": [ - { - "data": { - "text/plain": "0it [00:00, ?it/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "f7b13e5d0db6418381a00835c2f5aeba" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "TRANSFER\n", - "\n", - "Events\n", - "\n", - "cyberlinks\n", - "\tQmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji -> Nickname\n", - "\tNickname -> QmPcFZbajorUYkkdeowYUD1zJRAWA13N4Koy4rLeZ4cDji\n", - "\tneuron: Name Subgraph Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Name Subgraph Contract\n", - "\texecute contract: Avatar Subgraph Contract\n", - "\n", - "message from bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "reply\n", - "\treply contract: Avatar Subgraph Contract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: transfer_nft\n", - "\tsender: bostrom12fqp8lu305fm6jmuahl337eruln9c78apphyqz\n", - "\trecipient: Passport Owner Address\n", - "\ttoken_id: 542556\n", - "Gas used: 387,935\n", - "Tx hash: 28B05249A624A1A96AA17BFB82A7E5F219E01FDE15D8915EC7AC13F36B6CF8E0\n", - "\n", - "BURN\n", - "\n", - "Events\n", - "out of gas in location: WriteFlat; gasWanted: 400000, gasUsed: 401295: out of gas\n", - "Gas used: 401,295\n", - "Tx hash: 1632692CC26CE76A85036A9DE01BB460D5550CA6E906546DB4FD9B32A7E5FF5F\n", - "\n", - "UPDATE NAME\n", - "\n", - "Events\n", - "\n", - "cyberlinks\n", - "\tPassport Owner Address -> QmdpqRUvVSJYU6vofSBP9axBSps8Pf1eUn9eSZEqnJouQd\n", - "\tQmdpqRUvVSJYU6vofSBP9axBSps8Pf1eUn9eSZEqnJouQd -> Passport Owner Address\n", - "\tneuron: Name Subgraph Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Name Subgraph Contract\n", - "\n", - "message from bostrom1xd76dswkdt2vl3fr9eh9g5rjymx9yjdn2vr4w2 wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: update_nickname\n", - "\told_name: john16524556463\n", - "\tnew_name: john16524556463_new\n", - "Gas used: 296,307\n", - "Tx hash: 0EBA79570CD0F19ECD034CC31582366E7F8B688556D06B8E16DAC8A25F8B027C\n", - "\n", - "UPDATE AVATAR\n", - "\n", - "Events\n", - "\n", - "cyberlinks\n", - "\tNickname -> QmXnkwVZcnPuUse3B8KtzR2E1w7Rver8vvceTU3Z1V6a9A\n", - "\tQmXnkwVZcnPuUse3B8KtzR2E1w7Rver8vvceTU3Z1V6a9A -> Nickname\n", - "\tneuron: Avatar Subgraph Contract\n", - "\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\texecute contract: Avatar Subgraph Contract\n", - "\n", - "message from bostrom1zyuzqfq8raq8fss7jvt9w8gxsrz4y96zfez3zc wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: update_avatar\n", - "\tnickname: john16524556464\n", - "\tnew_avatar: QmXnkwVZcnPuUse3B8KtzR2E1w7Rver8vvceTU3Z1V6a9A\n", - "Gas used: 288,250\n", - "Tx hash: A0F942FA09D292D44F567DB13E4CC6E9DDAF1FC0E9FFDE379253DD1D39A6E7DD\n", - "\n", - "REMOVE ADDRESS\n", - "\n", - "Events\n", - "\n", - "execute\n", - "\texecute contract: Passport Contract\n", - "\n", - "message from bostrom10usrwj4knqraus5wcek7a8yxxk9n7yh47u6m0c wasm /cosmwasm.wasm.v1.MsgExecuteContract\n", - "\n", - "wasm\n", - "\t_contract_address: Passport Contract\n", - "\taction: remove_address\n", - "\tnickname: john16524556465\n", - "\taddress: terra10usrwj4knqraus5wcek7a8yxxk9n7yh4mt5gnl\n", - "Gas used: 139,666\n", - "Tx hash: B2C1C74D5C62FE670147E080BD36CA24F7302EDEB1AEB10EEADA71034D004FE0\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ - "for index, row in tqdm(claims_with_proofs_df[:10].iterrows()):\n", - " if index == 1:\n", + "def execute_passport_test(row_index: int, contract_utils=contract_utils) -> bool:\n", + " row = claims_with_proofs_df.iloc[row_index]\n", + " if row_index % 5 == 1:\n", " transfer_passport_json = contract_utils.transfer_passport(\n", " row,\n", " token_id=get_passport_id(row['bostrom_address']),\n", " to_address=WALLET_ADDRESS,\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " print('\\nTRANSFER')\n", - " contract_utils.parse_contract_execution_json(transfer_passport_json, row=row)\n", - " elif index == 2:\n", + " if row_index < 6:\n", + " print('\\nTRANSFER')\n", + " contract_utils.parse_contract_execution_json(transfer_passport_json, row=row)\n", + " elif row_index % 5 == 2:\n", " burn_passport_json = contract_utils.burn_passport(\n", " row,\n", " token_id=get_passport_id(row['bostrom_address']),\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " print('\\nBURN')\n", - " contract_utils.parse_contract_execution_json(burn_passport_json, row=row)\n", - " elif index == 3:\n", + " if row_index < 6:\n", + " print('\\nBURN')\n", + " contract_utils.parse_contract_execution_json(burn_passport_json, row=row)\n", + " elif row_index % 5 == 3:\n", " update_name_json = contract_utils.update_name(\n", " row,\n", " new_nickname=row['nickname'] + '_new',\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " print('\\nUPDATE NAME')\n", - " contract_utils.parse_contract_execution_json(update_name_json, row=row)\n", - " elif index == 4:\n", + " if row_index < 6:\n", + " print('\\nUPDATE NAME')\n", + " contract_utils.parse_contract_execution_json(update_name_json, row=row)\n", + " elif row_index % 5 == 4:\n", " update_avatar_json = contract_utils.update_avatar(\n", " row,\n", " new_avatar=get_ipfs_cid_from_str(row['nickname'] + '_new_avatar'),\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " print('\\nUPDATE AVATAR')\n", - " contract_utils.parse_contract_execution_json(update_avatar_json, row=row)\n", - " elif index == 5:\n", + " if row_index < 6:\n", + " print('\\nUPDATE AVATAR')\n", + " contract_utils.parse_contract_execution_json(update_avatar_json, row=row)\n", + " elif row_index % 5 == 0:\n", " remove_address_json = contract_utils.remove_address(\n", " row,\n", " removed_address=row['cosmos_address'],\n", " display_data=DISPLAY_TX_EXECUTION)\n", - " print('\\nREMOVE ADDRESS')\n", - " contract_utils.parse_contract_execution_json(remove_address_json, row=row)" + " if row_index < 6:\n", + " print('\\nREMOVE ADDRESS')\n", + " contract_utils.parse_contract_execution_json(remove_address_json, row=row)\n", + " print(f'Finish: {row_index}')\n", + " return True\n", + "\n", + "NUMBER_OF_THREADS = 100\n", + "\n", + "tasks = list(range(NUMBER_OF_ACTIVATED_PARTICIPANTS))[:20]\n", + "print(f'Number of tasks: {len(tasks):>,}')\n", + "print(f'Number of threads: {NUMBER_OF_THREADS:>,}')\n", + "\n", + "for row_index in tqdm(range(34, NUMBER_OF_ACTIVATED_PARTICIPANTS)):\n", + " execute_passport_test(row_index)\n", + "# with Pool(processes=NUMBER_OF_THREADS) as pool:\n", + "# # res_passport_test = list(tqdm(pool.imap(execute_passport_test, tasks), total=len(tasks)))\n", + "# res_passport_test = list(pool.imap(execute_passport_test, tasks))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "# claims_with_proofs_df\n", + "execute_passport_test(0)" ], "metadata": { "collapsed": false, @@ -1761,7 +1277,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "outputs": [], "source": [], "metadata": { From 088984dd201b913233e30d7023d06310072c281a Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Tue, 5 Jul 2022 17:26:11 +0800 Subject: [PATCH 53/69] Pre-repelase updates and refactoring --- Cargo.lock | 195 +-- Cargo.toml | 2 +- .../cw-cyber-airdrop/schema/execute_msg.json | 173 --- .../Cargo.toml | 27 +- .../README.md | 0 .../examples/schema.rs | 3 +- .../all_release_stage_state_response.json | 22 + .../schema/claim_response.json | 0 .../schema/config_response.json | 0 .../cw-cyber-gift/schema/execute_msg.json | 1170 +++++++++++++++++ .../schema/instantiate_msg.json | 0 .../schema/is_claimed_response.json | 0 .../schema/merkle_root_response.json | 0 .../schema/query_msg.json | 30 + .../schema/release_stage_state_response.json | 0 .../schema/state_response.json | 0 .../src/contract.rs | 19 +- .../src/error.rs | 0 .../src/execute.rs | 62 +- .../src/helpers.rs | 0 .../src/lib.rs | 0 .../src/msg.rs | 18 +- .../src/query.rs | 22 +- .../src/state.rs | 0 .../src/tests.rs | 19 +- ...drop_stage_1_test_data_cosmos_address.json | 0 ...op_stage_1_test_data_ethereum_address.json | 0 .../testdata/cw-cybergift-data.md | 0 .../testdata/generate_test_data/.env.example | 0 .../testdata/generate_test_data/.gitignore | 0 .../airdrop_stage_1_list.json | 0 .../generate_test_data/contract_utils.py | 0 .../create_passport_and_claim_job.py | 0 ..._and_passport_contracts_load_testing.ipynb | 0 .../gift_and_passport_contracts_testing.ipynb | 0 .../gift_final_merkle_tree.ipynb | 0 .../testdata/generate_test_data/index.ts | 0 .../testdata/generate_test_data/package.json | 0 .../generate_test_data/signed_messages.ipynb | 0 .../testdata/generate_test_data/tsconfig.json | 0 .../testdata/generate_test_data/yarn.lock | 0 contracts/cw-cyber-passport/Cargo.toml | 13 +- .../cw-cyber-passport/examples/schema.rs | 6 +- .../schema/address_response.json | 13 + .../schema/config_response.json | 25 + .../cw-cyber-passport/schema/execute_msg.json | 860 ++++++++++++ .../schema/portid_response.json | 15 + .../schema/signature_response.json | 13 + contracts/cw-cyber-passport/src/contract.rs | 31 +- contracts/cw-cyber-passport/src/execute.rs | 83 +- contracts/cw-cyber-passport/src/helpers.rs | 10 +- contracts/cw-cyber-passport/src/msg.rs | 8 +- contracts/cw-cyber-passport/src/query.rs | 2 +- contracts/cw-cyber-passport/src/tests.rs | 63 +- contracts/cw-cyber-subgraph/Cargo.toml | 22 +- .../cw-cyber-subgraph/examples/schema.rs | 2 + .../schema/config_response.json | 23 + contracts/cw-cyber-subgraph/src/contract.rs | 4 +- 58 files changed, 2438 insertions(+), 517 deletions(-) delete mode 100644 contracts/cw-cyber-airdrop/schema/execute_msg.json rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/Cargo.toml (79%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/README.md (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/examples/schema.rs (74%) create mode 100644 contracts/cw-cyber-gift/schema/all_release_stage_state_response.json rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/claim_response.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/config_response.json (100%) create mode 100644 contracts/cw-cyber-gift/schema/execute_msg.json rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/instantiate_msg.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/is_claimed_response.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/merkle_root_response.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/query_msg.json (80%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/release_stage_state_response.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/schema/state_response.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/contract.rs (84%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/error.rs (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/execute.rs (90%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/helpers.rs (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/lib.rs (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/msg.rs (89%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/query.rs (73%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/state.rs (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/src/tests.rs (97%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/airdrop_stage_1_test_data_cosmos_address.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/airdrop_stage_1_test_data_ethereum_address.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/cw-cybergift-data.md (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/.env.example (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/.gitignore (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/airdrop_stage_1_list.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/contract_utils.py (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/create_passport_and_claim_job.py (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/gift_final_merkle_tree.ipynb (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/index.ts (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/package.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/signed_messages.ipynb (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/tsconfig.json (100%) rename contracts/{cw-cyber-airdrop => cw-cyber-gift}/testdata/generate_test_data/yarn.lock (100%) create mode 100644 contracts/cw-cyber-passport/schema/address_response.json create mode 100644 contracts/cw-cyber-passport/schema/config_response.json create mode 100644 contracts/cw-cyber-passport/schema/portid_response.json create mode 100644 contracts/cw-cyber-passport/schema/signature_response.json create mode 100644 contracts/cw-cyber-subgraph/schema/config_response.json diff --git a/Cargo.lock b/Cargo.lock index cfbb5ea..54dbbad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,12 +14,6 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - [[package]] name = "arrayvec" version = "0.7.2" @@ -56,17 +50,6 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - [[package]] name = "blake2b_simd" version = "1.0.0" @@ -74,18 +57,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" dependencies = [ "arrayref", - "arrayvec 0.7.2", - "constant_time_eq", -] - -[[package]] -name = "blake2s_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", + "arrayvec", "constant_time_eq", ] @@ -96,23 +68,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" dependencies = [ "arrayref", - "arrayvec 0.7.2", - "constant_time_eq", -] - -[[package]] -name = "blake3" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "cc", - "cfg-if 0.1.10", + "arrayvec", "constant_time_eq", - "crypto-mac 0.8.0", - "digest 0.9.0", ] [[package]] @@ -122,9 +79,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" dependencies = [ "arrayref", - "arrayvec 0.7.2", + "arrayvec", "cc", - "cfg-if 1.0.0", + "cfg-if", "constant_time_eq", ] @@ -171,29 +128,12 @@ version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cid" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b8976b33648136e969aafa6eb33d58ff0d301fa0b4e8d513db58fd32cd81aa" -dependencies = [ - "multibase", - "multihash 0.14.0", - "unsigned-varint", -] - [[package]] name = "cid" version = "0.8.4" @@ -202,7 +142,7 @@ checksum = "a52cffa791ce5cf490ac3b2d6df970dc04f931b04e727be3c3e220e17164dfc4" dependencies = [ "core2", "multibase", - "multihash 0.16.2", + "multihash", "serde", "unsigned-varint", ] @@ -324,16 +264,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "crypto-mac" version = "0.11.1" @@ -358,11 +288,10 @@ dependencies = [ ] [[package]] -name = "cw-cyber-airdrop" +name = "cw-cyber-gift" version = "1.0.0" dependencies = [ "anyhow", - "base64", "cosmwasm-schema", "cosmwasm-std", "cw-cyber-passport", @@ -381,9 +310,7 @@ dependencies = [ "schemars", "semver", "serde", - "serde_json", "sha2 0.9.9", - "sha3 0.9.1", "thiserror", ] @@ -393,7 +320,6 @@ version = "1.0.0" dependencies = [ "base64", "bech32", - "cid 0.7.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -420,30 +346,22 @@ name = "cw-cyber-subgraph" version = "1.0.0" dependencies = [ "anyhow", - "base64", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus", - "cw-utils", - "cw0", "cw2", - "cw20", "cyber-std", - "hex", "schemars", "semver", "serde", - "serde_json", - "sha2 0.9.9", - "sha3 0.9.1", "thiserror", ] [[package]] name = "cw-multi-test" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbea57e5be4a682268a5eca1a57efece57a54ff216bfd87603d5e864aad40e12" +checksum = "a3f9a8ab7c3c29ec93cb7a39ce4b14a05e053153b4a17ef7cf2246af1b7c087e" dependencies = [ "anyhow", "cosmwasm-std", @@ -460,9 +378,9 @@ dependencies = [ [[package]] name = "cw-storage-plus" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9336ecef1e19d56cf6e3e932475fc6a3dee35eec5a386e07917a1d1ba6bb0e35" +checksum = "648b1507290bbc03a8d88463d7cd9b04b1fa0155e5eef366c4fa052b9caaac7a" dependencies = [ "cosmwasm-std", "schemars", @@ -471,9 +389,9 @@ dependencies = [ [[package]] name = "cw-utils" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "babd2c090f39d07ce5bf2556962305e795daa048ce20a93709eb591476e4a29e" +checksum = "9dbaecb78c8e8abfd6b4258c7f4fbeb5c49a5e45ee4d910d3240ee8e1d714e1b" dependencies = [ "cosmwasm-std", "schemars", @@ -495,9 +413,9 @@ dependencies = [ [[package]] name = "cw1" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a49c89069a3d8eeec288c758c522428c25b7080e652b60f2bd01cb96c4a556" +checksum = "362649aa18f898ff8a7a18f2bfc5568e9ba56417f3c9ce0e01bc32ccb2e125e0" dependencies = [ "cosmwasm-std", "schemars", @@ -506,9 +424,9 @@ dependencies = [ [[package]] name = "cw1-subkeys" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0001b9d0ad0baaf189893fcbfd3916372cd125dfead4eec63851b4b8c3baa254" +checksum = "8d2a36327a5a87663c74438a88cca275fcdf858baac4d7ac7dbb6a91f528b3a5" dependencies = [ "cosmwasm-std", "cw-storage-plus", @@ -524,9 +442,9 @@ dependencies = [ [[package]] name = "cw1-whitelist" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fafceaf79c0094da49eedf2d45975c8cbc71b83fd0deb6552e45d7e284afd44" +checksum = "5f4d6d212426746c4c052892166cf239d6604deec850d94c6eb57f8019b1afaa" dependencies = [ "cosmwasm-std", "cw-storage-plus", @@ -540,9 +458,9 @@ dependencies = [ [[package]] name = "cw2" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993df11574f29574dd443eb0c189484bb91bc0638b6de3e32ab7f9319c92122d" +checksum = "04cf4639517490dd36b333bbd6c4fbd92e325fd0acf4683b41753bc5eb63bfc1" dependencies = [ "cosmwasm-std", "cw-storage-plus", @@ -552,9 +470,9 @@ dependencies = [ [[package]] name = "cw20" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356d364602c5fe763544ea00d485b825d6ef519a2fc6a3145528d7df3a603f40" +checksum = "4cb782b8f110819a4eb5dbbcfed25ffba49ec16bbe32b4ad8da50a5ce68fec05" dependencies = [ "cosmwasm-std", "cw-utils", @@ -596,7 +514,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ba03b7658a0f54674726aafddbe00a73460adbc4dde854bd57b0e60cdeb0e68" dependencies = [ - "cid 0.8.4", + "cid", "cosmwasm-std", "cw721", "schemars", @@ -784,7 +702,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -795,7 +713,7 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.10.2+wasi-snapshot-preview1", ] @@ -823,7 +741,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac", "digest 0.9.0", ] @@ -848,7 +766,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "ecdsa", "elliptic-curve", "sec1", @@ -884,54 +802,23 @@ dependencies = [ "data-encoding-macro", ] -[[package]] -name = "multihash" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" -dependencies = [ - "blake2b_simd 0.5.11", - "blake2s_simd 0.5.11", - "blake3 0.3.8", - "digest 0.9.0", - "generic-array", - "multihash-derive 0.7.2", - "sha2 0.9.9", - "sha3 0.9.1", - "unsigned-varint", -] - [[package]] name = "multihash" version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3db354f401db558759dfc1e568d010a5d4146f4d3f637be1275ec4a3cf09689" dependencies = [ - "blake2b_simd 1.0.0", - "blake2s_simd 1.0.0", - "blake3 1.3.1", + "blake2b_simd", + "blake2s_simd", + "blake3", "core2", "digest 0.10.3", - "multihash-derive 0.8.0", + "multihash-derive", "sha2 0.10.2", "sha3 0.10.1", "unsigned-varint", ] -[[package]] -name = "multihash-derive" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" -dependencies = [ - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", - "synstructure", -] - [[package]] name = "multihash-derive" version = "0.8.0" @@ -1139,9 +1026,9 @@ checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" [[package]] name = "serde" -version = "1.0.136" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47" dependencies = [ "serde_derive", ] @@ -1157,9 +1044,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c" dependencies = [ "proc-macro2", "quote", @@ -1195,7 +1082,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.9.0", "opaque-debug", @@ -1207,7 +1094,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.10.3", ] @@ -1291,18 +1178,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 72aa1a2..66ffce9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] members = ["contracts/*"] -[profile.release.package.cw-cyber-airdrop] +[profile.release.package.cw-cyber-gift] codegen-units = 1 incremental = false diff --git a/contracts/cw-cyber-airdrop/schema/execute_msg.json b/contracts/cw-cyber-airdrop/schema/execute_msg.json deleted file mode 100644 index 8de878c..0000000 --- a/contracts/cw-cyber-airdrop/schema/execute_msg.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "oneOf": [ - { - "type": "object", - "required": [ - "update_owner" - ], - "properties": { - "update_owner": { - "type": "object", - "properties": { - "new_owner": { - "type": [ - "string", - "null" - ] - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "update_passport_addr" - ], - "properties": { - "update_passport_addr": { - "type": "object", - "required": [ - "new_passport_addr" - ], - "properties": { - "new_passport_addr": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "update_treasury_addr" - ], - "properties": { - "update_treasury_addr": { - "type": "object", - "required": [ - "new_treasury_addr" - ], - "properties": { - "new_treasury_addr": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "update_target" - ], - "properties": { - "update_target": { - "type": "object", - "required": [ - "new_target" - ], - "properties": { - "new_target": { - "$ref": "#/definitions/Uint64" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "register_merkle_root" - ], - "properties": { - "register_merkle_root": { - "type": "object", - "required": [ - "merkle_root" - ], - "properties": { - "merkle_root": { - "description": "MerkleRoot is hex-encoded merkle root.", - "type": "string" - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "required": [ - "gift_amount", - "gift_claiming_address", - "nickname", - "proof" - ], - "properties": { - "gift_amount": { - "$ref": "#/definitions/Uint128" - }, - "gift_claiming_address": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "proof": { - "description": "Proof is hex-encoded merkle proof.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "release" - ], - "properties": { - "release": { - "type": "object", - "required": [ - "gift_address" - ], - "properties": { - "gift_address": { - "type": "string" - } - } - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - } - } -} diff --git a/contracts/cw-cyber-airdrop/Cargo.toml b/contracts/cw-cyber-gift/Cargo.toml similarity index 79% rename from contracts/cw-cyber-airdrop/Cargo.toml rename to contracts/cw-cyber-gift/Cargo.toml index e28acc1..bbca11a 100644 --- a/contracts/cw-cyber-airdrop/Cargo.toml +++ b/contracts/cw-cyber-gift/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "cw-cyber-airdrop" +name = "cw-cyber-gift" version = "1.0.0" authors = ["CyberHead"] edition = "2018" @@ -43,27 +43,24 @@ optimize = """docker run --rm -v "$(pwd)":/code \ [dependencies] anyhow = "1" cw0 = "0.10.3" -cw2 = "0.13.2" -cw20 = "0.13.2" -cw1-subkeys = "0.13.2" +cw2 = "0.13.4" +cw20 = "0.13.4" +cw1-subkeys = "0.13.4" cosmwasm-std = { version = "1.0.0" } -cw-utils = { version = "0.13.2" } +cyber-std = { version = "0.2.1" } +cw-utils = { version = "0.13.4" } cw-cyber-passport = { path = "../cw-cyber-passport", features = ["library"] } cw-cyber-subgraph = { path = "../cw-cyber-subgraph", features = ["library"] } -cw-storage-plus = { version = "0.13.2" } -schemars = "0.8.3" -serde = { version = "1.0.103", default-features = false, features = ["derive"] } -thiserror = { version = "1.0.27" } +cw-storage-plus = { version = "0.13.4" } +schemars = "0.8.8" +serde = { version = "1.0.137", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.31" } hex = "0.4" sha2 = { version = "0.9.5", default-features = false } -sha3 = "0.9" -serde_json = "1.0" -base64 = "0.13" semver = "1" [dev-dependencies] cosmwasm-schema = { version = "1.0.0" } -cw-multi-test = { version = "0.13.2" } -cw1-whitelist = { version = "0.13.2" } -cyber-std = { version = "0.2.1" } +cw-multi-test = { version = "0.13.4" } +cw1-whitelist = { version = "0.13.4" } cyber-std-test = { version = "0.2.1" } diff --git a/contracts/cw-cyber-airdrop/README.md b/contracts/cw-cyber-gift/README.md similarity index 100% rename from contracts/cw-cyber-airdrop/README.md rename to contracts/cw-cyber-gift/README.md diff --git a/contracts/cw-cyber-airdrop/examples/schema.rs b/contracts/cw-cyber-gift/examples/schema.rs similarity index 74% rename from contracts/cw-cyber-airdrop/examples/schema.rs rename to contracts/cw-cyber-gift/examples/schema.rs index e6ebf8d..6455b31 100644 --- a/contracts/cw-cyber-airdrop/examples/schema.rs +++ b/contracts/cw-cyber-gift/examples/schema.rs @@ -2,7 +2,7 @@ use std::env::current_dir; use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_airdrop::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, ConfigResponse, StateResponse, IsClaimedResponse, ClaimResponse, ReleaseStageStateResponse, MerkleRootResponse}; +use cw_cyber_gift::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, ConfigResponse, StateResponse, IsClaimedResponse, ClaimResponse, ReleaseStageStateResponse, AllReleaseStageStateResponse, MerkleRootResponse}; fn main() { let mut out_dir = current_dir().unwrap(); @@ -19,4 +19,5 @@ fn main() { export_schema(&schema_for!(ConfigResponse), &out_dir); export_schema(&schema_for!(StateResponse), &out_dir); export_schema(&schema_for!(ReleaseStageStateResponse), &out_dir); + export_schema(&schema_for!(AllReleaseStageStateResponse), &out_dir); } diff --git a/contracts/cw-cyber-gift/schema/all_release_stage_state_response.json b/contracts/cw-cyber-gift/schema/all_release_stage_state_response.json new file mode 100644 index 0000000..1d5cd47 --- /dev/null +++ b/contracts/cw-cyber-gift/schema/all_release_stage_state_response.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AllReleaseStageStateResponse", + "type": "object", + "required": [ + "releases" + ], + "properties": { + "releases": { + "type": "array", + "items": { + "$ref": "#/definitions/Uint64" + } + } + }, + "definitions": { + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-airdrop/schema/claim_response.json b/contracts/cw-cyber-gift/schema/claim_response.json similarity index 100% rename from contracts/cw-cyber-airdrop/schema/claim_response.json rename to contracts/cw-cyber-gift/schema/claim_response.json diff --git a/contracts/cw-cyber-airdrop/schema/config_response.json b/contracts/cw-cyber-gift/schema/config_response.json similarity index 100% rename from contracts/cw-cyber-airdrop/schema/config_response.json rename to contracts/cw-cyber-gift/schema/config_response.json diff --git a/contracts/cw-cyber-gift/schema/execute_msg.json b/contracts/cw-cyber-gift/schema/execute_msg.json new file mode 100644 index 0000000..35cd6b0 --- /dev/null +++ b/contracts/cw-cyber-gift/schema/execute_msg.json @@ -0,0 +1,1170 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "msgs" + ], + "properties": { + "msgs": { + "type": "array", + "items": { + "$ref": "#/definitions/CosmosMsg_for_CyberMsgWrapper" + } + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "update_owner" + ], + "properties": { + "update_owner": { + "type": "object", + "properties": { + "new_owner": { + "type": [ + "string", + "null" + ] + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "update_treasury_addr" + ], + "properties": { + "update_treasury_addr": { + "type": "object", + "required": [ + "new_treasury_addr" + ], + "properties": { + "new_treasury_addr": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "update_target" + ], + "properties": { + "update_target": { + "type": "object", + "required": [ + "new_target" + ], + "properties": { + "new_target": { + "$ref": "#/definitions/Uint64" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "register_merkle_root" + ], + "properties": { + "register_merkle_root": { + "type": "object", + "required": [ + "merkle_root" + ], + "properties": { + "merkle_root": { + "description": "MerkleRoot is hex-encoded merkle root.", + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "required": [ + "gift_amount", + "gift_claiming_address", + "nickname", + "proof" + ], + "properties": { + "gift_amount": { + "$ref": "#/definitions/Uint128" + }, + "gift_claiming_address": { + "type": "string" + }, + "nickname": { + "type": "string" + }, + "proof": { + "description": "Proof is hex-encoded merkle proof.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "release" + ], + "properties": { + "release": { + "type": "object", + "required": [ + "gift_address" + ], + "properties": { + "gift_address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "BankMsg": { + "description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto", + "oneOf": [ + { + "description": "Sends native tokens from the contract to the given address.\n\nThis is translated to a [MsgSend](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto#L19-L28). `from_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "send" + ], + "properties": { + "send": { + "type": "object", + "required": [ + "amount", + "to_address" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "to_address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This will burn the given coins from the contract's account. There is no Cosmos SDK message that performs this, but it can be done by calling the bank keeper. Important if a contract controls significant token supply that must be retired.", + "type": "object", + "required": [ + "burn" + ], + "properties": { + "burn": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + } + } + }, + "additionalProperties": false + } + ] + }, + "Binary": { + "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec", + "type": "string" + }, + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + } + }, + "CosmosMsg_for_CyberMsgWrapper": { + "oneOf": [ + { + "type": "object", + "required": [ + "bank" + ], + "properties": { + "bank": { + "$ref": "#/definitions/BankMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "custom" + ], + "properties": { + "custom": { + "$ref": "#/definitions/CyberMsgWrapper" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "staking" + ], + "properties": { + "staking": { + "$ref": "#/definitions/StakingMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "distribution" + ], + "properties": { + "distribution": { + "$ref": "#/definitions/DistributionMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "wasm" + ], + "properties": { + "wasm": { + "$ref": "#/definitions/WasmMsg" + } + }, + "additionalProperties": false + } + ] + }, + "CyberMsg": { + "oneOf": [ + { + "type": "object", + "required": [ + "cyberlink" + ], + "properties": { + "cyberlink": { + "type": "object", + "required": [ + "links", + "neuron" + ], + "properties": { + "links": { + "type": "array", + "items": { + "$ref": "#/definitions/Link" + } + }, + "neuron": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "investmint" + ], + "properties": { + "investmint": { + "type": "object", + "required": [ + "amount", + "length", + "neuron", + "resource" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "length": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "neuron": { + "type": "string" + }, + "resource": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_energy_route" + ], + "properties": { + "create_energy_route": { + "type": "object", + "required": [ + "destination", + "name", + "source" + ], + "properties": { + "destination": { + "type": "string" + }, + "name": { + "type": "string" + }, + "source": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "edit_energy_route" + ], + "properties": { + "edit_energy_route": { + "type": "object", + "required": [ + "destination", + "source", + "value" + ], + "properties": { + "destination": { + "type": "string" + }, + "source": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Coin" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "edit_energy_route_name" + ], + "properties": { + "edit_energy_route_name": { + "type": "object", + "required": [ + "destination", + "name", + "source" + ], + "properties": { + "destination": { + "type": "string" + }, + "name": { + "type": "string" + }, + "source": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "delete_energy_route" + ], + "properties": { + "delete_energy_route": { + "type": "object", + "required": [ + "destination", + "source" + ], + "properties": { + "destination": { + "type": "string" + }, + "source": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_thought" + ], + "properties": { + "create_thought": { + "type": "object", + "required": [ + "load", + "name", + "particle", + "program", + "trigger" + ], + "properties": { + "load": { + "$ref": "#/definitions/Load" + }, + "name": { + "type": "string" + }, + "particle": { + "type": "string" + }, + "program": { + "type": "string" + }, + "trigger": { + "$ref": "#/definitions/Trigger" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "forget_thought" + ], + "properties": { + "forget_thought": { + "type": "object", + "required": [ + "name", + "program" + ], + "properties": { + "name": { + "type": "string" + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "change_thought_input" + ], + "properties": { + "change_thought_input": { + "type": "object", + "required": [ + "input", + "name", + "program" + ], + "properties": { + "input": { + "type": "string" + }, + "name": { + "type": "string" + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "change_thought_period" + ], + "properties": { + "change_thought_period": { + "type": "object", + "required": [ + "name", + "period", + "program" + ], + "properties": { + "name": { + "type": "string" + }, + "period": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "change_thought_block" + ], + "properties": { + "change_thought_block": { + "type": "object", + "required": [ + "block", + "name", + "program" + ], + "properties": { + "block": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_pool" + ], + "properties": { + "create_pool": { + "type": "object", + "required": [ + "deposit_coins", + "pool_creator_address", + "pool_type_id" + ], + "properties": { + "deposit_coins": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "pool_creator_address": { + "type": "string" + }, + "pool_type_id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "deposit_within_batch" + ], + "properties": { + "deposit_within_batch": { + "type": "object", + "required": [ + "deposit_coins", + "depositor_address", + "pool_id" + ], + "properties": { + "deposit_coins": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "depositor_address": { + "type": "string" + }, + "pool_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw_within_batch" + ], + "properties": { + "withdraw_within_batch": { + "type": "object", + "required": [ + "pool_coin", + "pool_id", + "withdrawer_address" + ], + "properties": { + "pool_coin": { + "$ref": "#/definitions/Coin" + }, + "pool_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "withdrawer_address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "swap_within_batch" + ], + "properties": { + "swap_within_batch": { + "type": "object", + "required": [ + "demand_coin_denom", + "offer_coin", + "offer_coin_fee", + "order_price", + "pool_id", + "swap_requester_address", + "swap_type_id" + ], + "properties": { + "demand_coin_denom": { + "type": "string" + }, + "offer_coin": { + "$ref": "#/definitions/Coin" + }, + "offer_coin_fee": { + "$ref": "#/definitions/Coin" + }, + "order_price": { + "$ref": "#/definitions/Decimal" + }, + "pool_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "swap_requester_address": { + "type": "string" + }, + "swap_type_id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + } + ] + }, + "CyberMsgWrapper": { + "type": "object", + "required": [ + "msg_data", + "route" + ], + "properties": { + "msg_data": { + "$ref": "#/definitions/CyberMsg" + }, + "route": { + "$ref": "#/definitions/CyberRoute" + } + } + }, + "CyberRoute": { + "description": "CyberRoute is enum type to represent cyber query route path", + "type": "string", + "enum": [ + "rank", + "graph", + "resources", + "grid", + "dmn", + "bandwidth", + "liquidity" + ] + }, + "Decimal": { + "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", + "type": "string" + }, + "DistributionMsg": { + "description": "The message types of the distribution module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgSetWithdrawAddress](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L29-L37). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "set_withdraw_address" + ], + "properties": { + "set_withdraw_address": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "The `withdraw_address`", + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgWithdrawDelegatorReward](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L42-L50). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "withdraw_delegator_reward" + ], + "properties": { + "withdraw_delegator_reward": { + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "The `validator_address`", + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] + }, + "Link": { + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + } + }, + "Load": { + "type": "object", + "required": [ + "gas_price", + "input" + ], + "properties": { + "gas_price": { + "$ref": "#/definitions/Coin" + }, + "input": { + "type": "string" + } + } + }, + "StakingMsg": { + "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "delegate" + ], + "properties": { + "delegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "undelegate" + ], + "properties": { + "undelegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "redelegate" + ], + "properties": { + "redelegate": { + "type": "object", + "required": [ + "amount", + "dst_validator", + "src_validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "dst_validator": { + "type": "string" + }, + "src_validator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] + }, + "Trigger": { + "type": "object", + "required": [ + "block", + "period" + ], + "properties": { + "block": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "period": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "WasmMsg": { + "description": "The message types of the wasm module.\n\nSee https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto", + "oneOf": [ + { + "description": "Dispatches a call to another contract at a known address (with known ABI).\n\nThis is translated to a [MsgExecuteContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L68-L78). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "contract_addr", + "funds", + "msg" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "msg": { + "description": "msg is the json-encoded ExecuteMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code.\n\nThis is translated to a [MsgInstantiateContract](https://github.com/CosmWasm/wasmd/blob/v0.16.0-alpha1/x/wasm/internal/types/tx.proto#L47-L61). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readbale label for the contract", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Migrates a given contracts to use new wasm code. Passes a MigrateMsg to allow us to customize behavior.\n\nOnly the contract admin (as defined in wasmd), if any, is able to make this call.\n\nThis is translated to a [MsgMigrateContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L86-L96). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "required": [ + "contract_addr", + "msg", + "new_code_id" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "msg": { + "description": "msg is the json-encoded MigrateMsg struct that will be passed to the new code", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "new_code_id": { + "description": "the code_id of the new logic to place in the given contract", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Sets a new admin (for migrate) on the given contract. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "update_admin" + ], + "properties": { + "update_admin": { + "type": "object", + "required": [ + "admin", + "contract_addr" + ], + "properties": { + "admin": { + "type": "string" + }, + "contract_addr": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Clears the admin on the given contract, so no more migration possible. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "clear_admin" + ], + "properties": { + "clear_admin": { + "type": "object", + "required": [ + "contract_addr" + ], + "properties": { + "contract_addr": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/contracts/cw-cyber-airdrop/schema/instantiate_msg.json b/contracts/cw-cyber-gift/schema/instantiate_msg.json similarity index 100% rename from contracts/cw-cyber-airdrop/schema/instantiate_msg.json rename to contracts/cw-cyber-gift/schema/instantiate_msg.json diff --git a/contracts/cw-cyber-airdrop/schema/is_claimed_response.json b/contracts/cw-cyber-gift/schema/is_claimed_response.json similarity index 100% rename from contracts/cw-cyber-airdrop/schema/is_claimed_response.json rename to contracts/cw-cyber-gift/schema/is_claimed_response.json diff --git a/contracts/cw-cyber-airdrop/schema/merkle_root_response.json b/contracts/cw-cyber-gift/schema/merkle_root_response.json similarity index 100% rename from contracts/cw-cyber-airdrop/schema/merkle_root_response.json rename to contracts/cw-cyber-gift/schema/merkle_root_response.json diff --git a/contracts/cw-cyber-airdrop/schema/query_msg.json b/contracts/cw-cyber-gift/schema/query_msg.json similarity index 80% rename from contracts/cw-cyber-airdrop/schema/query_msg.json rename to contracts/cw-cyber-gift/schema/query_msg.json index 71b9489..838ce39 100644 --- a/contracts/cw-cyber-airdrop/schema/query_msg.json +++ b/contracts/cw-cyber-gift/schema/query_msg.json @@ -117,6 +117,36 @@ } }, "additionalProperties": false + }, + { + "type": "object", + "required": [ + "all_release_stage_state" + ], + "properties": { + "all_release_stage_state": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false } ], "definitions": { diff --git a/contracts/cw-cyber-airdrop/schema/release_stage_state_response.json b/contracts/cw-cyber-gift/schema/release_stage_state_response.json similarity index 100% rename from contracts/cw-cyber-airdrop/schema/release_stage_state_response.json rename to contracts/cw-cyber-gift/schema/release_stage_state_response.json diff --git a/contracts/cw-cyber-airdrop/schema/state_response.json b/contracts/cw-cyber-gift/schema/state_response.json similarity index 100% rename from contracts/cw-cyber-airdrop/schema/state_response.json rename to contracts/cw-cyber-gift/schema/state_response.json diff --git a/contracts/cw-cyber-airdrop/src/contract.rs b/contracts/cw-cyber-gift/src/contract.rs similarity index 84% rename from contracts/cw-cyber-airdrop/src/contract.rs rename to contracts/cw-cyber-gift/src/contract.rs index 10a1e80..5eda0c2 100644 --- a/contracts/cw-cyber-airdrop/src/contract.rs +++ b/contracts/cw-cyber-gift/src/contract.rs @@ -1,18 +1,20 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Decimal, Deps, DepsMut, Env, Response, StdResult, Uint64, MessageInfo, Empty, attr}; +use cosmwasm_std::{to_binary, Binary, Decimal, Deps, DepsMut, Env, StdResult, Uint64, MessageInfo, Empty}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; use crate::state::{Config, CONFIG, State, STATE}; -use crate::execute::{execute_claim, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_passport, execute_update_target, execute_update_treasury}; -use crate::query::{query_claim, query_config, query_is_claimed, query_merkle_root, query_release_stage_state, query_release_state, query_state}; -use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; +use crate::execute::{execute_claim, execute_execute, execute_register_merkle_root, execute_release, execute_update_owner, execute_update_target, execute_update_treasury}; +use crate::query::{query_all_release_stage_state, query_claim, query_config, query_is_claimed, query_merkle_root, query_release_stage_state, query_release_state, query_state}; +use cyber_std::CyberMsgWrapper; use semver::Version; +type Response = cosmwasm_std::Response; + // Version info, for migration info -const CONTRACT_NAME: &str = "cw-cyber-gift"; +const CONTRACT_NAME: &str = "cyber-gift"; const CONTRACT_VERSION: &str = "1.0.0"; #[cfg_attr(not(feature = "library"), entry_point)] @@ -21,7 +23,7 @@ pub fn instantiate( _env: Env, info: MessageInfo, msg: InstantiateMsg, -) -> Result { +) -> StdResult { set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; let owner = msg @@ -60,10 +62,8 @@ pub fn execute( msg: ExecuteMsg, ) -> Result { match msg { + ExecuteMsg::Execute { msgs } => execute_execute(deps, env, info, msgs), ExecuteMsg::UpdateOwner { new_owner } => execute_update_owner(deps, env, info, new_owner), - ExecuteMsg::UpdatePassportAddr { new_passport_addr: new_passport } => { - execute_update_passport(deps, env, info, new_passport) - } ExecuteMsg::UpdateTreasuryAddr { new_treasury_addr: new_treasury } => { execute_update_treasury(deps, env, info, new_treasury) } @@ -93,6 +93,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { QueryMsg::Claim { address } => to_binary(&query_claim(deps, address)?), QueryMsg::ReleaseState { address } => to_binary(&query_release_state(deps, address)?), QueryMsg::ReleaseStageState { stage } => to_binary(&query_release_stage_state(deps, stage)?), + QueryMsg::AllReleaseStageState {start, limit} => to_binary(&query_all_release_stage_state(deps, start, limit)?), } } diff --git a/contracts/cw-cyber-airdrop/src/error.rs b/contracts/cw-cyber-gift/src/error.rs similarity index 100% rename from contracts/cw-cyber-airdrop/src/error.rs rename to contracts/cw-cyber-gift/src/error.rs diff --git a/contracts/cw-cyber-airdrop/src/execute.rs b/contracts/cw-cyber-gift/src/execute.rs similarity index 90% rename from contracts/cw-cyber-airdrop/src/execute.rs rename to contracts/cw-cyber-gift/src/execute.rs index 6cb76ad..52a2387 100644 --- a/contracts/cw-cyber-airdrop/src/execute.rs +++ b/contracts/cw-cyber-gift/src/execute.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{Addr, attr, BankMsg, Coin, CosmosMsg, Decimal, DepsMut, Empty, Env, MessageInfo, Response, StdResult, to_binary, Uint128, Uint64, WasmMsg}; +use cosmwasm_std::{Addr, attr, BankMsg, Coin, CosmosMsg, Decimal, DepsMut, Empty, Env, MessageInfo, StdResult, to_binary, Uint128, Uint64, WasmMsg}; use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; @@ -8,41 +8,37 @@ use std::ops::{Add, Mul}; use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; use crate::msg::{AddressResponse, SignatureResponse}; use cw1_subkeys::msg::{ExecuteMsg as Cw1ExecuteMsg}; +use cyber_std::CyberMsgWrapper; -const RELEASE_STAGES: u64 = 9; - +type Response = cosmwasm_std::Response; +// TODO change 9 to 90 before release +const RELEASE_STAGES: u64 = 9; -pub fn execute_update_owner( +pub fn execute_execute( deps: DepsMut, _env: Env, info: MessageInfo, - new_owner: Option, + msgs: Vec>, ) -> Result { + let mut res = Response::new().add_attribute("action", "execute"); + let cfg = CONFIG.load(deps.storage)?; let owner = cfg.owner.ok_or(ContractError::Unauthorized {})?; if info.sender != owner { return Err(ContractError::Unauthorized {}); } - let mut tmp_owner = None; - if let Some(addr) = new_owner { - tmp_owner = Some(deps.api.addr_validate(&addr)?) - } - - CONFIG.update(deps.storage, |mut exists| -> StdResult<_> { - exists.owner = tmp_owner; - Ok(exists) - })?; + res = res.add_messages(msgs); - Ok(Response::new().add_attributes(vec![attr("action", "update_owner")])) + Ok(res) } -pub fn execute_update_passport( +pub fn execute_update_owner( deps: DepsMut, _env: Env, info: MessageInfo, - new_passport: String, + new_owner: Option, ) -> Result { let cfg = CONFIG.load(deps.storage)?; let owner = cfg.owner.ok_or(ContractError::Unauthorized {})?; @@ -50,17 +46,17 @@ pub fn execute_update_passport( return Err(ContractError::Unauthorized {}); } - let passport = deps.api.addr_validate(&new_passport)?; + let mut tmp_owner = None; + if let Some(addr) = new_owner { + tmp_owner = Some(deps.api.addr_validate(&addr)?) + } - CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> { - cfg.passport_addr = passport; - Ok(cfg) + CONFIG.update(deps.storage, |mut exists| -> StdResult<_> { + exists.owner = tmp_owner; + Ok(exists) })?; - Ok(Response::new().add_attributes(vec![ - attr("action", "update_passport"), - attr("passport", new_passport), - ])) + Ok(Response::new().add_attributes(vec![attr("action", "update_owner")])) } pub fn execute_update_treasury( @@ -229,13 +225,6 @@ pub fn execute_claim( ]})?, funds: vec![] }) - // .add_message(BankMsg::Send { - // to_address: res.address.clone(), - // amount: vec![Coin { - // denom: config.allowed_native, - // amount: Uint128::new(CLAIM_BOUNTY), - // }], - // }) .add_attributes(vec![ attr("action", "claim"), attr("original", gift_claiming_address), @@ -274,7 +263,7 @@ pub fn execute_release( return Err(ContractError::GiftReleased {}); } - // TODO change HOUR to DAY after tests + // TODO change HOUR to DAY before release let amount: Uint128; if release_state.stage.is_zero() { // first claim, amount 10% of claim @@ -336,13 +325,6 @@ pub fn execute_release( ]})?, funds: vec![] }) - // .add_message(BankMsg::Send { - // to_address: release_state.clone().address.into(), - // amount: vec![Coin { - // denom: config.allowed_native, - // amount - // }], - // }) .add_attributes(vec![ attr("action", "release"), attr("address", release_state.clone().address.to_string()), diff --git a/contracts/cw-cyber-airdrop/src/helpers.rs b/contracts/cw-cyber-gift/src/helpers.rs similarity index 100% rename from contracts/cw-cyber-airdrop/src/helpers.rs rename to contracts/cw-cyber-gift/src/helpers.rs diff --git a/contracts/cw-cyber-airdrop/src/lib.rs b/contracts/cw-cyber-gift/src/lib.rs similarity index 100% rename from contracts/cw-cyber-airdrop/src/lib.rs rename to contracts/cw-cyber-gift/src/lib.rs diff --git a/contracts/cw-cyber-airdrop/src/msg.rs b/contracts/cw-cyber-gift/src/msg.rs similarity index 89% rename from contracts/cw-cyber-airdrop/src/msg.rs rename to contracts/cw-cyber-gift/src/msg.rs index 01d10b7..7d4a1bf 100644 --- a/contracts/cw-cyber-airdrop/src/msg.rs +++ b/contracts/cw-cyber-gift/src/msg.rs @@ -1,8 +1,9 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use cosmwasm_std::{Decimal, Uint128, Uint64}; +use cosmwasm_std::{CosmosMsg, Decimal, Uint128, Uint64}; use cw_utils::Expiration; +use cyber_std::CyberMsgWrapper; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct InstantiateMsg { @@ -20,12 +21,12 @@ pub struct InstantiateMsg { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { + Execute { + msgs: Vec>, + }, UpdateOwner { new_owner: Option, }, - UpdatePassportAddr { - new_passport_addr: String, - }, UpdateTreasuryAddr { new_treasury_addr: String, }, @@ -56,6 +57,10 @@ pub enum QueryMsg { Claim { address: String }, ReleaseState { address: String }, ReleaseStageState { stage: Uint64 }, + AllReleaseStageState { + start: Option, + limit: Option, + }, } #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] @@ -109,6 +114,11 @@ pub struct ReleaseStageStateResponse { pub releases: Uint64, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct AllReleaseStageStateResponse { + pub releases: Vec, +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct SignatureResponse { pub signed: bool, diff --git a/contracts/cw-cyber-airdrop/src/query.rs b/contracts/cw-cyber-gift/src/query.rs similarity index 73% rename from contracts/cw-cyber-airdrop/src/query.rs rename to contracts/cw-cyber-gift/src/query.rs index 1d4df29..be8289c 100644 --- a/contracts/cw-cyber-airdrop/src/query.rs +++ b/contracts/cw-cyber-gift/src/query.rs @@ -1,7 +1,10 @@ -use cosmwasm_std::{Deps, StdResult, Uint64}; -use crate::msg::{ClaimResponse, ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStageStateResponse, ReleaseStateResponse, StateResponse}; +use cosmwasm_std::{Deps, Order, StdResult, Uint64}; +use cw_storage_plus::Bound; +// use test::RunIgnored::No; +use crate::msg::{AllReleaseStageStateResponse, ClaimResponse, ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStageStateResponse, ReleaseStateResponse, StateResponse}; use crate::state::{CLAIM, CONFIG, MERKLE_ROOT, RELEASE, RELEASE_INFO, STATE}; + pub fn query_config(deps: Deps) -> StdResult { let cfg = CONFIG.load(deps.storage)?; Ok(ConfigResponse { @@ -72,3 +75,18 @@ pub fn query_release_stage_state(deps: Deps, stage: Uint64) -> StdResult, limit: Option) -> StdResult { + let start = start.map(Bound::inclusive); + let limit = limit.unwrap_or(100) as usize; + + let all_release_stage_state = RELEASE_INFO + .range(deps.storage, start, None, Order::Ascending) + .take(limit) + .map(|item| item.unwrap().1) + .collect::>(); + let resp = AllReleaseStageStateResponse { + releases: all_release_stage_state + }; + Ok(resp) +} diff --git a/contracts/cw-cyber-airdrop/src/state.rs b/contracts/cw-cyber-gift/src/state.rs similarity index 100% rename from contracts/cw-cyber-airdrop/src/state.rs rename to contracts/cw-cyber-gift/src/state.rs diff --git a/contracts/cw-cyber-airdrop/src/tests.rs b/contracts/cw-cyber-gift/src/tests.rs similarity index 97% rename from contracts/cw-cyber-airdrop/src/tests.rs rename to contracts/cw-cyber-gift/src/tests.rs index 7973ca9..b712e25 100644 --- a/contracts/cw-cyber-airdrop/src/tests.rs +++ b/contracts/cw-cyber-gift/src/tests.rs @@ -2,7 +2,7 @@ mod tests { use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; use cosmwasm_std::{attr, from_binary, Binary, Coin, Uint128, Uint64, Empty, Addr, coins, BlockInfo}; - use crate::msg::{ConfigResponse, ExecuteMsg, InstantiateMsg, MerkleRootResponse, QueryMsg, ReleaseStageStateResponse, StateResponse}; + use crate::msg::{AllReleaseStageStateResponse, ConfigResponse, ExecuteMsg, InstantiateMsg, MerkleRootResponse, QueryMsg, ReleaseStageStateResponse, StateResponse}; use crate::ContractError; use crate::contract::{execute, instantiate, query}; use cw_multi_test::{next_block, Contract, ContractWrapper, Executor}; @@ -34,7 +34,7 @@ mod tests { } pub fn contract_gift() -> Box> { - let contract = ContractWrapper::new_with_empty( + let contract = ContractWrapper::new( crate::contract::execute, crate::contract::instantiate, crate::contract::query, @@ -175,16 +175,6 @@ mod tests { ); app.update_block(next_block); - let _res = app.execute_contract( - Addr::unchecked(OWNER), - passport_addr.clone(), - &PassportExecuteMsg::SetMinter { - minter: passport_addr.to_string() - }, - &[], - ); - app.update_block(next_block); - (gift_addr, passport_addr, treasury_addr) } @@ -309,6 +299,11 @@ mod tests { let info: StateResponse = app.wrap().query_wasm_smart(&gift_addr, &QueryMsg::State {}).unwrap(); println!("STATE - {:?}", info); + let res: AllReleaseStageStateResponse = app.wrap().query_wasm_smart( + &gift_addr, + &QueryMsg::AllReleaseStageState {start:Some(7u8), limit:Some(2u8)} + ).unwrap(); + println!("RELEASES - {:?}", res); } #[test] diff --git a/contracts/cw-cyber-airdrop/testdata/airdrop_stage_1_test_data_cosmos_address.json b/contracts/cw-cyber-gift/testdata/airdrop_stage_1_test_data_cosmos_address.json similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/airdrop_stage_1_test_data_cosmos_address.json rename to contracts/cw-cyber-gift/testdata/airdrop_stage_1_test_data_cosmos_address.json diff --git a/contracts/cw-cyber-airdrop/testdata/airdrop_stage_1_test_data_ethereum_address.json b/contracts/cw-cyber-gift/testdata/airdrop_stage_1_test_data_ethereum_address.json similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/airdrop_stage_1_test_data_ethereum_address.json rename to contracts/cw-cyber-gift/testdata/airdrop_stage_1_test_data_ethereum_address.json diff --git a/contracts/cw-cyber-airdrop/testdata/cw-cybergift-data.md b/contracts/cw-cyber-gift/testdata/cw-cybergift-data.md similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/cw-cybergift-data.md rename to contracts/cw-cyber-gift/testdata/cw-cybergift-data.md diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example b/contracts/cw-cyber-gift/testdata/generate_test_data/.env.example similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/.env.example rename to contracts/cw-cyber-gift/testdata/generate_test_data/.env.example diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore b/contracts/cw-cyber-gift/testdata/generate_test_data/.gitignore similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/.gitignore rename to contracts/cw-cyber-gift/testdata/generate_test_data/.gitignore diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/airdrop_stage_1_list.json b/contracts/cw-cyber-gift/testdata/generate_test_data/airdrop_stage_1_list.json similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/airdrop_stage_1_list.json rename to contracts/cw-cyber-gift/testdata/generate_test_data/airdrop_stage_1_list.json diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py b/contracts/cw-cyber-gift/testdata/generate_test_data/contract_utils.py similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/contract_utils.py rename to contracts/cw-cyber-gift/testdata/generate_test_data/contract_utils.py diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py b/contracts/cw-cyber-gift/testdata/generate_test_data/create_passport_and_claim_job.py similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/create_passport_and_claim_job.py rename to contracts/cw-cyber-gift/testdata/generate_test_data/create_passport_and_claim_job.py diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb b/contracts/cw-cyber-gift/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb rename to contracts/cw-cyber-gift/testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb b/contracts/cw-cyber-gift/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb rename to contracts/cw-cyber-gift/testdata/generate_test_data/gift_and_passport_contracts_testing.ipynb diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb b/contracts/cw-cyber-gift/testdata/generate_test_data/gift_final_merkle_tree.ipynb similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/gift_final_merkle_tree.ipynb rename to contracts/cw-cyber-gift/testdata/generate_test_data/gift_final_merkle_tree.ipynb diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts b/contracts/cw-cyber-gift/testdata/generate_test_data/index.ts similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/index.ts rename to contracts/cw-cyber-gift/testdata/generate_test_data/index.ts diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json b/contracts/cw-cyber-gift/testdata/generate_test_data/package.json similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/package.json rename to contracts/cw-cyber-gift/testdata/generate_test_data/package.json diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/signed_messages.ipynb b/contracts/cw-cyber-gift/testdata/generate_test_data/signed_messages.ipynb similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/signed_messages.ipynb rename to contracts/cw-cyber-gift/testdata/generate_test_data/signed_messages.ipynb diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/tsconfig.json b/contracts/cw-cyber-gift/testdata/generate_test_data/tsconfig.json similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/tsconfig.json rename to contracts/cw-cyber-gift/testdata/generate_test_data/tsconfig.json diff --git a/contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock b/contracts/cw-cyber-gift/testdata/generate_test_data/yarn.lock similarity index 100% rename from contracts/cw-cyber-airdrop/testdata/generate_test_data/yarn.lock rename to contracts/cw-cyber-gift/testdata/generate_test_data/yarn.lock diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index 0d8c6a0..a1ac78f 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -43,16 +43,15 @@ optimize = """docker run --rm -v "$(pwd)":/code \ [dependencies] cosmwasm-std = { version = "1.0.0" } cosmwasm-storage = { version = "1.0.0" } -cw-storage-plus = "0.13.2" -cw2 = "0.13.2" +cw-storage-plus = "0.13.4" +cw2 = "0.13.4" cw721 = { version = "0.13.2" } -schemars = "0.8.3" -serde = { version = "1.0.127", default-features = false, features = ["derive"] } -thiserror = { version = "1.0.26" } -cid = "0.7.0" +schemars = "0.8.8" +serde = { version = "1.0.137", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.31" } cyber-std = { version = "0.2.1" } cw-cyber-subgraph = { path = "../cw-cyber-subgraph" } -cw-utils = { version = "0.13.2" } +cw-utils = { version = "0.13.4" } hex = "0.4" sha2 = { version = "0.9.5", default-features = false } sha3 = "0.9" diff --git a/contracts/cw-cyber-passport/examples/schema.rs b/contracts/cw-cyber-passport/examples/schema.rs index 0036dac..e77119f 100644 --- a/contracts/cw-cyber-passport/examples/schema.rs +++ b/contracts/cw-cyber-passport/examples/schema.rs @@ -3,7 +3,7 @@ use std::fs::create_dir_all; use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; -use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use cw_cyber_passport::msg::{ExecuteMsg, InstantiateMsg, QueryMsg, ConfigResponse, PortidResponse, AddressResponse, SignatureResponse}; use cw_cyber_passport::state::{Config, PassportMetadata}; fn main() { @@ -17,4 +17,8 @@ fn main() { export_schema(&schema_for!(QueryMsg), &out_dir); export_schema(&schema_for!(Config), &out_dir); export_schema(&schema_for!(PassportMetadata), &out_dir); + export_schema(&schema_for!(ConfigResponse), &out_dir); + export_schema(&schema_for!(PortidResponse), &out_dir); + export_schema(&schema_for!(AddressResponse), &out_dir); + export_schema(&schema_for!(SignatureResponse), &out_dir); } diff --git a/contracts/cw-cyber-passport/schema/address_response.json b/contracts/cw-cyber-passport/schema/address_response.json new file mode 100644 index 0000000..48242b6 --- /dev/null +++ b/contracts/cw-cyber-passport/schema/address_response.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AddressResponse", + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-passport/schema/config_response.json b/contracts/cw-cyber-passport/schema/config_response.json new file mode 100644 index 0000000..5d93675 --- /dev/null +++ b/contracts/cw-cyber-passport/schema/config_response.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "type": "object", + "required": [ + "avatar_subgraph", + "name_subgraph", + "owner", + "proof_subgraph" + ], + "properties": { + "avatar_subgraph": { + "type": "string" + }, + "name_subgraph": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "proof_subgraph": { + "type": "string" + } + } +} diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index 54f0ee7..eb4e5dc 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -2,6 +2,29 @@ "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", "oneOf": [ + { + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "msgs" + ], + "properties": { + "msgs": { + "type": "array", + "items": { + "$ref": "#/definitions/CosmosMsg_for_CyberMsgWrapper" + } + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -498,10 +521,619 @@ } ], "definitions": { + "BankMsg": { + "description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto", + "oneOf": [ + { + "description": "Sends native tokens from the contract to the given address.\n\nThis is translated to a [MsgSend](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto#L19-L28). `from_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "send" + ], + "properties": { + "send": { + "type": "object", + "required": [ + "amount", + "to_address" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "to_address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This will burn the given coins from the contract's account. There is no Cosmos SDK message that performs this, but it can be done by calling the bank keeper. Important if a contract controls significant token supply that must be retired.", + "type": "object", + "required": [ + "burn" + ], + "properties": { + "burn": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + } + } + }, + "additionalProperties": false + } + ] + }, "Binary": { "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec", "type": "string" }, + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + } + }, + "CosmosMsg_for_CyberMsgWrapper": { + "oneOf": [ + { + "type": "object", + "required": [ + "bank" + ], + "properties": { + "bank": { + "$ref": "#/definitions/BankMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "custom" + ], + "properties": { + "custom": { + "$ref": "#/definitions/CyberMsgWrapper" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "wasm" + ], + "properties": { + "wasm": { + "$ref": "#/definitions/WasmMsg" + } + }, + "additionalProperties": false + } + ] + }, + "CyberMsg": { + "oneOf": [ + { + "type": "object", + "required": [ + "cyberlink" + ], + "properties": { + "cyberlink": { + "type": "object", + "required": [ + "links", + "neuron" + ], + "properties": { + "links": { + "type": "array", + "items": { + "$ref": "#/definitions/Link" + } + }, + "neuron": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "investmint" + ], + "properties": { + "investmint": { + "type": "object", + "required": [ + "amount", + "length", + "neuron", + "resource" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "length": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "neuron": { + "type": "string" + }, + "resource": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_energy_route" + ], + "properties": { + "create_energy_route": { + "type": "object", + "required": [ + "destination", + "name", + "source" + ], + "properties": { + "destination": { + "type": "string" + }, + "name": { + "type": "string" + }, + "source": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "edit_energy_route" + ], + "properties": { + "edit_energy_route": { + "type": "object", + "required": [ + "destination", + "source", + "value" + ], + "properties": { + "destination": { + "type": "string" + }, + "source": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Coin" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "edit_energy_route_name" + ], + "properties": { + "edit_energy_route_name": { + "type": "object", + "required": [ + "destination", + "name", + "source" + ], + "properties": { + "destination": { + "type": "string" + }, + "name": { + "type": "string" + }, + "source": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "delete_energy_route" + ], + "properties": { + "delete_energy_route": { + "type": "object", + "required": [ + "destination", + "source" + ], + "properties": { + "destination": { + "type": "string" + }, + "source": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_thought" + ], + "properties": { + "create_thought": { + "type": "object", + "required": [ + "load", + "name", + "particle", + "program", + "trigger" + ], + "properties": { + "load": { + "$ref": "#/definitions/Load" + }, + "name": { + "type": "string" + }, + "particle": { + "type": "string" + }, + "program": { + "type": "string" + }, + "trigger": { + "$ref": "#/definitions/Trigger" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "forget_thought" + ], + "properties": { + "forget_thought": { + "type": "object", + "required": [ + "name", + "program" + ], + "properties": { + "name": { + "type": "string" + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "change_thought_input" + ], + "properties": { + "change_thought_input": { + "type": "object", + "required": [ + "input", + "name", + "program" + ], + "properties": { + "input": { + "type": "string" + }, + "name": { + "type": "string" + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "change_thought_period" + ], + "properties": { + "change_thought_period": { + "type": "object", + "required": [ + "name", + "period", + "program" + ], + "properties": { + "name": { + "type": "string" + }, + "period": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "change_thought_block" + ], + "properties": { + "change_thought_block": { + "type": "object", + "required": [ + "block", + "name", + "program" + ], + "properties": { + "block": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "name": { + "type": "string" + }, + "program": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_pool" + ], + "properties": { + "create_pool": { + "type": "object", + "required": [ + "deposit_coins", + "pool_creator_address", + "pool_type_id" + ], + "properties": { + "deposit_coins": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "pool_creator_address": { + "type": "string" + }, + "pool_type_id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "deposit_within_batch" + ], + "properties": { + "deposit_within_batch": { + "type": "object", + "required": [ + "deposit_coins", + "depositor_address", + "pool_id" + ], + "properties": { + "deposit_coins": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "depositor_address": { + "type": "string" + }, + "pool_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw_within_batch" + ], + "properties": { + "withdraw_within_batch": { + "type": "object", + "required": [ + "pool_coin", + "pool_id", + "withdrawer_address" + ], + "properties": { + "pool_coin": { + "$ref": "#/definitions/Coin" + }, + "pool_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "withdrawer_address": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "swap_within_batch" + ], + "properties": { + "swap_within_batch": { + "type": "object", + "required": [ + "demand_coin_denom", + "offer_coin", + "offer_coin_fee", + "order_price", + "pool_id", + "swap_requester_address", + "swap_type_id" + ], + "properties": { + "demand_coin_denom": { + "type": "string" + }, + "offer_coin": { + "$ref": "#/definitions/Coin" + }, + "offer_coin_fee": { + "$ref": "#/definitions/Coin" + }, + "order_price": { + "$ref": "#/definitions/Decimal" + }, + "pool_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "swap_requester_address": { + "type": "string" + }, + "swap_type_id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + } + ] + }, + "CyberMsgWrapper": { + "type": "object", + "required": [ + "msg_data", + "route" + ], + "properties": { + "msg_data": { + "$ref": "#/definitions/CyberMsg" + }, + "route": { + "$ref": "#/definitions/CyberRoute" + } + } + }, + "CyberRoute": { + "description": "CyberRoute is enum type to represent cyber query route path", + "type": "string", + "enum": [ + "rank", + "graph", + "resources", + "grid", + "dmn", + "bandwidth", + "liquidity" + ] + }, + "Decimal": { + "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", + "type": "string" + }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ @@ -565,6 +1197,36 @@ } } }, + "Link": { + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + } + }, + "Load": { + "type": "object", + "required": [ + "gas_price", + "input" + ], + "properties": { + "gas_price": { + "$ref": "#/definitions/Coin" + }, + "input": { + "type": "string" + } + } + }, "MintMsg_for_PassportMetadata": { "type": "object", "required": [ @@ -642,9 +1304,207 @@ } ] }, + "Trigger": { + "type": "object", + "required": [ + "block", + "period" + ], + "properties": { + "block": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "period": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" + }, + "WasmMsg": { + "description": "The message types of the wasm module.\n\nSee https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto", + "oneOf": [ + { + "description": "Dispatches a call to another contract at a known address (with known ABI).\n\nThis is translated to a [MsgExecuteContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L68-L78). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "contract_addr", + "funds", + "msg" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "msg": { + "description": "msg is the json-encoded ExecuteMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code.\n\nThis is translated to a [MsgInstantiateContract](https://github.com/CosmWasm/wasmd/blob/v0.16.0-alpha1/x/wasm/internal/types/tx.proto#L47-L61). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readbale label for the contract", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Migrates a given contracts to use new wasm code. Passes a MigrateMsg to allow us to customize behavior.\n\nOnly the contract admin (as defined in wasmd), if any, is able to make this call.\n\nThis is translated to a [MsgMigrateContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L86-L96). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "required": [ + "contract_addr", + "msg", + "new_code_id" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "msg": { + "description": "msg is the json-encoded MigrateMsg struct that will be passed to the new code", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "new_code_id": { + "description": "the code_id of the new logic to place in the given contract", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Sets a new admin (for migrate) on the given contract. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "update_admin" + ], + "properties": { + "update_admin": { + "type": "object", + "required": [ + "admin", + "contract_addr" + ], + "properties": { + "admin": { + "type": "string" + }, + "contract_addr": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Clears the admin on the given contract, so no more migration possible. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "clear_admin" + ], + "properties": { + "clear_admin": { + "type": "object", + "required": [ + "contract_addr" + ], + "properties": { + "contract_addr": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] } } } diff --git a/contracts/cw-cyber-passport/schema/portid_response.json b/contracts/cw-cyber-passport/schema/portid_response.json new file mode 100644 index 0000000..c3731af --- /dev/null +++ b/contracts/cw-cyber-passport/schema/portid_response.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PortidResponse", + "type": "object", + "required": [ + "portid" + ], + "properties": { + "portid": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } +} diff --git a/contracts/cw-cyber-passport/schema/signature_response.json b/contracts/cw-cyber-passport/schema/signature_response.json new file mode 100644 index 0000000..1d4b5cf --- /dev/null +++ b/contracts/cw-cyber-passport/schema/signature_response.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SignatureResponse", + "type": "object", + "required": [ + "signed" + ], + "properties": { + "signed": { + "type": "boolean" + } + } +} diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 67039ba..76e4649 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -1,30 +1,28 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{attr, Binary, Deps, DepsMut, Empty, Env, MessageInfo, Reply, StdResult, to_binary}; +use cosmwasm_std::{Binary, Deps, DepsMut, Empty, Env, MessageInfo, Reply, StdResult, to_binary}; use cw2::{get_contract_version, set_contract_version}; use cyber_std::CyberMsgWrapper; use semver::Version; use crate::error::ContractError; -use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_minter, execute_set_owner, execute_set_subgraphs, execute_transfer_nft, execute_update_avatar, execute_update_name, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data, execute_update_particle}; +use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_owner, execute_set_subgraphs, execute_transfer_nft, execute_update_avatar, execute_update_name, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data, execute_update_particle, execute_execute}; use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; -use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passort_signed, query_passport_by_nickname, query_portid}; +use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passport_signed, query_passport_by_nickname, query_portid}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; type Response = cosmwasm_std::Response; -const CONTRACT_NAME: &str = "cw-cyber-passport"; +const CONTRACT_NAME: &str = "cyber-passport"; const CONTRACT_VERSION: &str = "1.0.0"; #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( - deps: DepsMut, + mut deps: DepsMut, env: Env, info: MessageInfo, - msg: InstantiateMsg, + mut msg: InstantiateMsg, ) -> StdResult { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - let config = Config { owner: deps.api.addr_validate(&msg.clone().owner)?, name_subgraph: deps.api.addr_validate(&msg.clone().name_subgraph)?, @@ -35,7 +33,12 @@ pub fn instantiate( CONFIG.save(deps.storage, &config)?; PORTID.save(deps.storage, &0u64)?; - PassportContract::default().instantiate(deps, env, info, msg.into()) + // override minter to contract itself + msg.minter = env.clone().contract.address.into_string(); + let res = PassportContract::default().instantiate(deps.branch(), env, info, msg.into())?; + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + Ok(res) } #[cfg_attr(not(feature = "library"), entry_point)] @@ -46,14 +49,18 @@ pub fn execute( msg: ExecuteMsg, ) -> Result { match msg { + ExecuteMsg::Execute { msgs } => execute_execute(deps, env, info, msgs), ExecuteMsg::CreatePassport {nickname, avatar} => execute_create_passport(deps, env, info, nickname, avatar), ExecuteMsg::UpdateName { old_nickname, new_nickname} => execute_update_name(deps, env, info, old_nickname, new_nickname), ExecuteMsg::UpdateAvatar { nickname, new_avatar} => execute_update_avatar(deps, env, info, nickname, new_avatar), ExecuteMsg::UpdateData { nickname, data} => execute_update_data(deps, env, info, nickname, data), ExecuteMsg::UpdateParticle { nickname, particle} => execute_update_particle(deps, env, info, nickname, particle), - ExecuteMsg::ProofAddress { nickname, address, signature } => execute_proof_address(deps, env, info, nickname, address, signature), + ExecuteMsg::ProofAddress { + nickname, + address, + signature + } => execute_proof_address(deps, env, info, nickname, address, signature), ExecuteMsg::RemoveAddress {nickname, address } => execute_remove_address(deps, env, info, nickname, address), - ExecuteMsg::SetMinter { minter } => execute_set_minter(deps, env, info, minter), ExecuteMsg::SetOwner { owner } => execute_set_owner(deps, env, info, owner), ExecuteMsg::SetActive { token_id } => execute_set_active(deps, env, info, token_id), ExecuteMsg::SetSubgraphs { @@ -87,7 +94,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::AddressByNickname {nickname} => to_binary(&query_address_by_nickname(deps, nickname)?), QueryMsg::PassportByNickname {nickname} => to_binary(&query_passport_by_nickname(deps, nickname)?), QueryMsg::MetadataByNickname {nickname} => to_binary(&query_metadata_by_nickname(deps, nickname)?), - QueryMsg::PassportSigned {nickname, address} => to_binary(&query_passort_signed(deps, nickname, address)?), + QueryMsg::PassportSigned {nickname, address} => to_binary(&query_passport_signed(deps, nickname, address)?), QueryMsg::ActivePassport { address } => to_binary(&query_active_passport(deps, address)?), // CW721 methods _ => PassportContract::default().query(deps, env, msg.into()), diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index ec6e781..017a926 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -1,6 +1,5 @@ use std::ops::{Add, Mul}; -use cosmwasm_std::{attr, Binary, DepsMut, Env, MessageInfo, Uint128}; -use cw2::{get_contract_version, set_contract_version}; +use cosmwasm_std::{attr, Binary, CosmosMsg, DepsMut, Env, MessageInfo, Uint128}; use cw721::{Cw721Execute, Cw721Query}; use cw721_base::MintMsg; use cw_utils::must_pay; @@ -20,6 +19,25 @@ type Response = cosmwasm_std::Response; const CONSTITUTION: &str = "QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV"; pub const CYBERSPACE_ID_MSG: u64 = 420; +pub fn execute_execute( + deps: DepsMut, + _env: Env, + info: MessageInfo, + msgs: Vec>, +) -> Result { + let mut res = Response::new().add_attribute("action", "execute"); + + let config = CONFIG.load(deps.storage)?; + let owner = config.owner; + if info.sender != owner { + return Err(ContractError::Unauthorized {}); + } + + res = res.add_messages(msgs); + + Ok(res) +} + pub fn execute_create_passport( deps: DepsMut, env: Env, @@ -39,6 +57,13 @@ pub fn execute_create_passport( return Err(ContractError::NotValidName {}); } + for byte in nickname.as_bytes().iter() { + // - && 0-9 && a-z + if (*byte != 45) && (*byte < 48 || *byte > 57) && (*byte < 97 || *byte > 122) { + return Err(ContractError::NotValidName {}); + } + } + if nickname_length < 8 { let must_pay = must_pay(&info, "boot").unwrap_or_default(); let mul = 10u64.checked_pow(8-nickname_length as u32).unwrap(); @@ -84,7 +109,7 @@ pub fn execute_create_passport( token_uri: None, extension: PassportMetadata { addresses: None, - avatar, + avatar: avatar.clone(), nickname: nickname.clone(), data: None, particle: None @@ -142,6 +167,13 @@ pub fn execute_update_name( return Err(ContractError::NotValidName {}); } + for byte in new_name.as_bytes().iter() { + // - && 0-9 && a-z + if (*byte != 45) && (*byte < 48 || *byte > 57) && (*byte < 97 || *byte > 122) { + return Err(ContractError::NotValidName {}); + } + } + if nickname_length < 8 { let must_pay = must_pay(&info, "boot").unwrap_or_default(); let mul = 10u64.checked_pow(8-nickname_length as u32).unwrap(); @@ -449,6 +481,9 @@ pub fn execute_remove_address( .tokens .update(deps.storage, &address_portid.clone().portid, |token| match token { Some(mut token_info) => { + if token_info.clone().extension.addresses.is_none() { + return Err(ContractError::AddressNotFound {}) + } let mut addresses = token_info.clone().extension.addresses.unwrap(); let index = addresses.iter().position(|x| *x.address == address.clone()); if index.is_none() { @@ -503,11 +538,11 @@ pub fn execute_mint( } pub fn execute_transfer_nft( - deps: DepsMut, - env: Env, - info: MessageInfo, - recipient: String, - token_id: String, + _deps: DepsMut, + _env: Env, + _info: MessageInfo, + _recipient: String, + _token_id: String, ) -> Result { // let config = CONFIG.load(deps.storage)?; // @@ -638,6 +673,13 @@ pub fn execute_burn( let token_info = cw721_contract.tokens.load(deps.storage, &token_id.clone())?; + // strict access only for owner without approvals + let address_portid = NICKNAMES.load(deps.storage, &token_info.clone().extension.nickname)?; + let nft_owner = cw721_contract.owner_of(deps.as_ref(), env.clone(), address_portid.clone().portid, false)?; + if nft_owner.owner != info.clone().sender { + return Err(ContractError::Unauthorized {}); + } + if !NICKNAMES.has(deps.storage, &token_info.clone().extension.nickname) { return Err(ContractError::NicknameNotFound {}); }; @@ -670,28 +712,6 @@ pub fn execute_burn( Ok(response.add_submessage(name_subgraph_submsg)) } -pub fn execute_set_minter( - deps: DepsMut, - _env: Env, - info: MessageInfo, - new_minter: String, -) -> Result { - let config = CONFIG.load(deps.storage)?; - let owner = config.owner; - if info.sender != owner { - return Err(ContractError::Unauthorized {}); - } - - let new_minter = deps.api.addr_validate(&new_minter)?; - let cw721_contract = PassportContract::default(); - cw721_contract.minter.save(deps.storage, &new_minter)?; - - Ok(Response::new().add_attributes(vec![ - attr("action", "set_minter"), - attr("action", new_minter.to_string()) - ])) -} - pub fn execute_set_owner( deps: DepsMut, _env: Env, @@ -806,6 +826,9 @@ pub fn execute_set_address_label( .tokens .update(deps.storage, &address_portid.clone().portid, |token| match token { Some(mut token_info) => { + if token_info.clone().extension.addresses.is_none() { + return Err(ContractError::AddressNotFound {}) + } let mut addresses = token_info.clone().extension.addresses.unwrap(); let index = addresses.iter().position(|x| *x.address == address.clone()); if index.is_none() { diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 043a26c..88c4d7a 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -123,7 +123,6 @@ pub fn proof_address_cosmos( signature: Binary, ) -> Result { // ADR-36 signed object, need to construct this object part by part and add encoded signed data with signer - // let obj = json!( // { // "account_number":"0", // "chain_id":"", @@ -138,7 +137,7 @@ pub fn proof_address_cosmos( // } // }], // "sequence":"0" - // }); + // }; let msg = passport_owner.add(":").add(&message); let mut msg_adr36:Vec = vec![123,34,97,99,99,111,117,110,116,95,110,117,109,98,101,114,34,58,34,48,34,44,34,99,104,97,105,110,95,105,100,34,58,34,34,44,34,102,101,101,34,58,123,34,97,109,111,117,110,116,34,58,91,93,44,34,103,97,115,34,58,34,48,34,125,44,34,109,101,109,111,34,58,34,34,44,34,109,115,103,115,34,58,91,123,34,116,121,112,101,34,58,34,115,105,103,110,47,77,115,103,83,105,103,110,68,97,116,97,34,44,34,118,97,108,117,101,34,58,123,34,100,97,116,97,34,58,34]; @@ -150,9 +149,7 @@ pub fn proof_address_cosmos( let hash = Sha256::digest(&msg_adr36); let sig: CosmosSignature = from_binary(&signature).unwrap(); - // deps.api.addr_validate(&address.clone())?; let (prefix, _, _) = bech32::decode(&address.clone()).unwrap(); - let address_sig = pub_key_to_address(&deps, &sig.pub_key, &prefix)?; if address != address_sig.to_string() { @@ -169,6 +166,7 @@ pub fn proof_address_cosmos( .map_err(|err| ContractError::IsNotEligible { msg: err.to_string(), }); + return result; } @@ -176,10 +174,12 @@ pub fn proof_address_cosmos( fn pub_key_to_address(_deps: &Deps, pub_key: &[u8], prefix: &str) -> StdResult { let compressed_pub_key = to_compressed_pub_key(pub_key)?; let mut ripemd160_hasher = Ripemd160::new(); + ripemd160_hasher.update(Sha256::digest(&compressed_pub_key)); + let addr_bytes = ripemd160_hasher.finalize().to_vec(); let addr_str = bech32::encode(prefix, addr_bytes.to_base32(), Variant::Bech32).unwrap(); - // deps.api.addr_validate(&addr_str) + Ok(Addr::unchecked(&addr_str)) } diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index d12d62a..37cbd30 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::Binary; +use cosmwasm_std::{Binary, CosmosMsg}; use cw721::Expiration; use cw721_base::{ MintMsg as CW721MintMsg, @@ -7,10 +7,11 @@ use cw721_base::{ QueryMsg as CW721QueryMsg, }, }; +use cyber_std::CyberMsgWrapper; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::state::{Config, Extension}; +use crate::state::Extension; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] @@ -47,6 +48,9 @@ pub type MintMsg = CW721MintMsg; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { + Execute { + msgs: Vec>, + }, CreatePassport { nickname: String, avatar: String, diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index 2881bae..329b8af 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -50,7 +50,7 @@ pub fn query_active_passport(deps: Deps, address: String) -> StdResult { owner: deps.api.addr_validate(&citizen).unwrap(), approvals: vec![], token_uri: None, extension: PassportMetadata { - nickname: "test_nickname".to_string(), + nickname: "test-nickname".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, data: None, particle: None, } }; - assert_eq!(query_passport_by_nickname(deps.as_ref(), "test_nickname".into()).unwrap(), expected_passport); + assert_eq!(query_passport_by_nickname(deps.as_ref(), "test-nickname".into()).unwrap(), expected_passport); assert_eq!(query_active_passport(deps.as_ref(), citizen.into()).unwrap(), expected_passport); // check that is available to change name let update_name_msg = ExecuteMsg::UpdateName { - old_nickname: "test_nickname".to_string(), - new_nickname: "test_nickname_new".to_string(), + old_nickname: "test-nickname".to_string(), + new_nickname: "test-nickname-new".to_string(), }; let info = mock_info(&citizen, &[]); execute(deps.as_mut(), mock_env(), info, update_name_msg).unwrap(); - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname".into()).is_err(), true); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname".into()).is_err(), true); let expected_passport_metadata = PassportMetadata { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), addresses: None, data: None, particle: None, }; - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname-new".into()).unwrap(), expected_passport_metadata); // check that is available to change avatar let update_avatar_msg = ExecuteMsg::UpdateAvatar { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), new_avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), }; @@ -114,18 +113,18 @@ mod tests { execute(deps.as_mut(), mock_env(), info, update_avatar_msg).unwrap(); let expected_passport_metadata = PassportMetadata { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: None, data: None, particle: None, }; - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname-new".into()).unwrap(), expected_passport_metadata); // check that is available to proof address let proof_address_msg = ExecuteMsg::ProofAddress { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), }; @@ -134,16 +133,16 @@ mod tests { execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap(); let expected_passport_metadata = PassportMetadata { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: Option::from(vec![LabeledAddress{ label: None, address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string() }]), data: None, particle: None, }; - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname-new".into()).unwrap(), expected_passport_metadata); let proof_address_msg = ExecuteMsg::ProofAddress { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), }; @@ -151,7 +150,7 @@ mod tests { let info = mock_info(&citizen, &[]); execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap(); let expected_passport_metadata = PassportMetadata { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: Option::from(vec![ LabeledAddress{ label: None, address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string() }, @@ -160,12 +159,12 @@ mod tests { data: None, particle: None, }; - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname-new".into()).unwrap(), expected_passport_metadata); // check that is not available to proof same address twice let proof_address_msg = ExecuteMsg::ProofAddress { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), }; @@ -176,7 +175,7 @@ mod tests { assert_eq!(err, ContractError::IsNotEligible { msg: "Address already exist".to_string() }); let proof_address_msg = ExecuteMsg::ProofAddress { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), }; @@ -189,7 +188,7 @@ mod tests { // check that is available to delete proved addresses let remove_address_msg = ExecuteMsg::RemoveAddress { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), }; @@ -197,16 +196,16 @@ mod tests { execute(deps.as_mut(), mock_env(), info, remove_address_msg).unwrap(); let expected_passport_metadata = PassportMetadata { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: Option::from(vec![LabeledAddress{ label: None, address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string() }]), data: None, particle: None, }; - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname-new".into()).unwrap(), expected_passport_metadata); let remove_address_msg = ExecuteMsg::RemoveAddress { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), }; @@ -214,25 +213,25 @@ mod tests { execute(deps.as_mut(), mock_env(), info, remove_address_msg).unwrap(); let expected_passport_metadata = PassportMetadata { - nickname: "test_nickname_new".to_string(), + nickname: "test-nickname-new".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), addresses: None, data: None, particle: None, }; - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname_new".into()).unwrap(), expected_passport_metadata); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname-new".into()).unwrap(), expected_passport_metadata); // check that is possible to buy name let update_name_msg = ExecuteMsg::UpdateName { - old_nickname: "test_nickname_new".to_string(), + old_nickname: "test-nickname-new".to_string(), new_nickname: "name".to_string(), }; let info = mock_info(&citizen, &[coin(10_000_000_000, "boot")]); execute(deps.as_mut(), mock_env(), info, update_name_msg).unwrap(); - assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test_nickname".into()).is_err(), true); + assert_eq!(query_metadata_by_nickname(deps.as_ref(), "test-nickname".into()).is_err(), true); let expected_passport_metadata = PassportMetadata { nickname: "name".to_string(), avatar: "QmWfy5AzuaTLh4CtPcymE85KgBR36FNfokMmoGqYJoLALt".to_string(), diff --git a/contracts/cw-cyber-subgraph/Cargo.toml b/contracts/cw-cyber-subgraph/Cargo.toml index 4419052..f50daaa 100644 --- a/contracts/cw-cyber-subgraph/Cargo.toml +++ b/contracts/cw-cyber-subgraph/Cargo.toml @@ -42,20 +42,14 @@ optimize = """docker run --rm -v "$(pwd)":/code \ [dependencies] anyhow = "1" -cw0 = "0.10.3" -cw2 = "0.13.2" -cw20 = "0.13.2" +cw2 = "0.13.4" cosmwasm-std = { version = "1.0.0" } -cw-utils = { version = "0.13.2" } cyber-std = { version = "0.2.1" } -cw-storage-plus = "0.13.2" -schemars = "0.8.3" -serde = { version = "1.0.127", default-features = false, features = ["derive"] } -thiserror = { version = "1.0.27" } -hex = "0.4" -sha2 = { version = "0.9.5", default-features = false } -sha3 = "0.9" -serde_json = "1.0" -cosmwasm-schema = "1.0.0" -base64 = "0.13" +cw-storage-plus = "0.13.4" +schemars = "0.8.8" +serde = { version = "1.0.137", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.31" } semver = "1" + +[dev-dependencies] +cosmwasm-schema = { version = "1.0.0" } diff --git a/contracts/cw-cyber-subgraph/examples/schema.rs b/contracts/cw-cyber-subgraph/examples/schema.rs index f78d181..6b182cd 100644 --- a/contracts/cw-cyber-subgraph/examples/schema.rs +++ b/contracts/cw-cyber-subgraph/examples/schema.rs @@ -5,6 +5,7 @@ use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; use cw_cyber_subgraph::msg::{ ExecuteMsg, InstantiateMsg, QueryMsg, }; +use cw_cyber_subgraph::query::ConfigResponse; fn main() { let mut out_dir = current_dir().unwrap(); @@ -15,4 +16,5 @@ fn main() { export_schema(&schema_for!(InstantiateMsg), &out_dir); export_schema(&schema_for!(ExecuteMsg), &out_dir); export_schema(&schema_for!(QueryMsg), &out_dir); + export_schema(&schema_for!(ConfigResponse), &out_dir); } diff --git a/contracts/cw-cyber-subgraph/schema/config_response.json b/contracts/cw-cyber-subgraph/schema/config_response.json new file mode 100644 index 0000000..1f341cb --- /dev/null +++ b/contracts/cw-cyber-subgraph/schema/config_response.json @@ -0,0 +1,23 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "type": "object", + "required": [ + "admins", + "executors" + ], + "properties": { + "admins": { + "type": "array", + "items": { + "type": "string" + } + }, + "executors": { + "type": "array", + "items": { + "type": "string" + } + } + } +} diff --git a/contracts/cw-cyber-subgraph/src/contract.rs b/contracts/cw-cyber-subgraph/src/contract.rs index 93587f6..06c3e96 100644 --- a/contracts/cw-cyber-subgraph/src/contract.rs +++ b/contracts/cw-cyber-subgraph/src/contract.rs @@ -1,6 +1,6 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply, Api, Addr, Empty, attr}; +use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, StdResult, MessageInfo, Reply, Api, Addr, Empty}; use cw2::{get_contract_version, set_contract_version}; use crate::error::ContractError; @@ -14,7 +14,7 @@ use semver::Version; type Response = cosmwasm_std::Response; -const CONTRACT_NAME: &str = "cw-cyber-subgraph"; +const CONTRACT_NAME: &str = "cyber-subgraph"; const CONTRACT_VERSION: &str = "1.0.0"; #[cfg_attr(not(feature = "library"), entry_point)] From cd916a1e57f2fa2d72934f130b0217f92f166e18 Mon Sep 17 00:00:00 2001 From: snedashkovsky Date: Wed, 6 Jul 2022 13:48:27 +0800 Subject: [PATCH 54/69] - update readme --- README.md | 26 +++++++++++++++++++++- contracts/cw-cyber-gift/README.md | 9 ++++++++ gift_execution.png | Bin 346566 -> 0 bytes img/claim_gift.png | Bin 0 -> 678277 bytes img/contract_initiation_and_functions.png | Bin 0 -> 560171 bytes img/create_passport.png | Bin 0 -> 331461 bytes img/gift_execution.png | Bin 0 -> 478202 bytes img/prove_address.png | Bin 0 -> 730731 bytes img/release_gift.png | Bin 0 -> 644219 bytes 9 files changed, 34 insertions(+), 1 deletion(-) delete mode 100644 gift_execution.png create mode 100644 img/claim_gift.png create mode 100644 img/contract_initiation_and_functions.png create mode 100644 img/create_passport.png create mode 100644 img/gift_execution.png create mode 100644 img/prove_address.png create mode 100644 img/release_gift.png diff --git a/README.md b/README.md index 99591a6..08ab956 100644 --- a/README.md +++ b/README.md @@ -1 +1,25 @@ -# cw-cybergift +# cyberGift Contracts +## Contracts +### Gift Contract +[cw-cyber-airdrop](contracts/cw-cyber-airdrop) +### Passport Contract +[cw-cyber-passport](contracts/cw-cyber-passport) +### Subgraph Contract +[cw-cyber-subgraph](contracts/cw-cyber-subgraph) +### Treasury Contract +[cw1-subkeys](https://github.com/CosmWasm/cw-plus/tree/main/contracts/cw1-subkeys) +## Gift Execution +![Gift Execution](img/gift_execution.png) +## Contracts Initial Data and Functions +![Contracts Initial Data and Functions](img/contract_initiation_and_functions.png) +## User Story +### Create Passport +![Create Passport](img/create_passport.png) +### Prove Address +![Prove Address](img/prove_address.png) +### Claim Gift +![Claim Gift](img/claim_gift.png) +### Release Gift +![Release Gift](img/release_gift.png) +## Load testing +[Jupyter notebook](testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb) \ No newline at end of file diff --git a/contracts/cw-cyber-gift/README.md b/contracts/cw-cyber-gift/README.md index 99591a6..1adbddf 100644 --- a/contracts/cw-cyber-gift/README.md +++ b/contracts/cw-cyber-gift/README.md @@ -1 +1,10 @@ # cw-cybergift + +## Generate root, proofs and verify proofs + +### cw20-merkle-airdrop helper +This is a helper client shipped along contract +[merkle-airdrop-cli](https://github.com/CosmWasm/cw-tokens/tree/main/contracts/cw20-merkle-airdrop/helpers) + +### Calculation of Merkle Root and Proofs for Final Distribution +[Jupyter notebook](testdata/generate_test_data/gift_final_merkle_tree.ipynb) \ No newline at end of file diff --git a/gift_execution.png b/gift_execution.png deleted file mode 100644 index 45f31bf5ab2ef41a21f8e1531e83554e5e12cb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346566 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 z 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/Pl*>=A>VD%7J9m$=L1C8_oy9&2J`S&HP_x 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 diff --git a/img/claim_gift.png b/img/claim_gift.png new file mode 100644 index 0000000000000000000000000000000000000000..433c7df89f50ec4086e888634d1ec4d8011bdd7c GIT binary patch literal 678277 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

l)9&#PLzt0xE7n^?c%f8g5_x-GTJa~&> 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ⅆ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
kV|fRxTYxpZ*jN5VF%^O5W8uu@1;Mre5iwLhxM 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%0DmpM3y-`NE{J%%I1@#=_|szl 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%0D%{@?$_v)pag0t?FkWK6E|zQqgd_ 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�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%0DE2f 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∈_AQP~=c}(~0HR~d2e+R5 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%0D-Tc9G?)){ivx@W$7tWu% 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�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

;WJ|+nLmTYkm+E=BsVe^c{!wG2#ppC?c_TM9 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%0APIm6;yQ6H|iIkEs@uavxalSQ@ko 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

=cdT>r9AzBSNXM@oGk=l*AU6pUj)X+ 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 literal 0 HcmV?d00001 diff --git a/img/prove_address.png b/img/prove_address.png new file mode 100644 index 0000000000000000000000000000000000000000..c15b3c4df53c5b8286306bd437258f75eb8687d5 GIT binary patch literal 730731 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

L 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 *={w-4g78iskZO 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

gJr)pE7SUx#yETaa++;<;kf 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 z z9HacK%`K6l@Xa@gBew&fefu9(Vh50)KFunw57}nMVWPM-f9- zq{*3Lw3VE_mpSi52?+*(Cys(&LBHr!TWE%aw|U&3CtHFfBCkDI)?9+n-S4O}+#GT} zA81HS=4BNh>RhiL1xU$0)DM-RL%{ZMtW_WI6V8{iw0aZ$$S!og_MLMfzxXRG9ZR1w zc}7lQcyu$3%|XrEYZyyWB!F$s{x*w zHp;P;=Q%XoC|?qOO3@;Ngr74bW`-M5_XEH2%t1!adHKd6C{JK?DNHlId!P)}sW#5Q z(#_}n#_uUL?l$O!+g`wpMYq#URB$A;C$B=(6+58a6WOX$uD?kPVXxknwBMh)$y7Lg zSWGAGeXE10hDjDfS(}7}cn{JoRZN`7)^#&0QQmy-o;)n{uvV42VhKzPddv=RKpzr=;Gh)g1*K7ByPG_(3 zEF398g&@Gd034H!Yci-2aqxIDYa|P)0S^tcd$p{zRZ|)Ku9uIc<=23i385SAUsNB% znOJ&oqKC}y!!+-+#K-P(@{&C3k1lm{b1qhaxn&_8*}ztmu|eFNPi5QytQ!>!rexly zSx15Y!6KAi(Rbg`rY&J2du-uuHe2A@A7UBY8^EX+dp4RXg$p1#~ z7?fFXNdj#NI>i3FB|tG$+BvQkY1diLFovk&08l|_UM>YuC5Mw#QE)5n-#tx; z>VECUc)AL8;=UA=K|KFTuHOx%@b(#5(L*fh!A_Y~&o2!(A{sOULnOPCRpO!h4c27_ zxf~_BuL!<_U)-`Q?DW3*Fc6^{&iPdwRvjGW_$K$=$z0+{wE0FnVJ4m-MZn#9P&UaI zRy(N=%f%MF+~JYZ;-0)t=2z{$!h$H;>tmeD+x(Tsh1ro}V#8I2# zq)9$J$}cW*lgx4R2|-Rd8&t|Hv5yUmmlogNZAmkClgZKs{kQ~|6nLSm2B#s_YS5PK6`x+X z;b$qi`Sdf^05YlW`3ovp`bQw+BaJ#x`eq;({qhSqMT39o?u`K&)@l8Zh3iORFmEo? z9*C6ieI2_MQzM&(xg67ACD_0%dR`D+seml`4QEY5Ol(J!bHdWtZyJ|fKZilQJ1n-4 z=Z?D(IV3e#NLC*mw=j^_3G^9KC?u_Dwr|n6J^B1~10V!O@CbOp`a7{mX#%Hx8pGmA z&w>SxU)LRTLWM|l?*#W@QuZiH<-Xv7(IB<_m8^aRzk?2%KL@1T-X-z5iI%%ibxG@f z+Q7PY(Vt+0j#E8H;TI5;SuNAlZV;Ir%1B-A6MeDH9{p*HyUskcBEr7h=K*hjBo_e5 z!_hf!hItK_=LKgp+cDqF^lwQ9dy)5<6R5(Qs!~ZpOqos93v`69;$*Uoj!tD*k`6q_ z)iKnC_Qclt&uEhcV{*T(H%@MYE3UdeB9Vd}+UPVg|C$>u9o(pdicmqWyHhxmAfcQw;KT-Wt_Voqnqtj$l@w{a zU9Gdg2Q!j86!-@+GPa((&F(x356cqTeVvg5f*qBhk_Qxs0u}b#ETdx&ue?GX5XF-ZHMOsOugq6lu}oPSD~|+zAwS zcL@}Cij+cuAf*&{clSbZYlFKLw-)zOyd)5kfBHN#@4WM2=2L#jP42zfckgrdS$nT_ zq;R*5lQJj<28+|strq@89!*jQ7Ao$n$T-~pU*QWvfe9Fu&}427p}&W~a=i9-cV47t z4crufXnxN`+gA7Ov;J;Z+epc{RbDfR_3ice#qkwvdBU#m4V*Ysh_mM1>5>Un{*tA{ zz})9Y5IVrXKqr}$*;;V{L#7Jh7OayW=&RgGkHfi)obY%s84mi2A#6V;&gPfFwe@t| zf`73?F`*KgKi9x~@g}Lyq3epz*09(xsgM~Nyr%-AbY8ZN1qAC{ zk^;Yj$$2cf+Kc%B;O`jZYGiX?{4CkC&BhfSe{!Z8=u1srvYH~em88jD=Y>xOwk40Pz){JA=5WU8{DD_r`Eg=7zF&93qR z)ZeQ@Oe{I09#0^1-!&}*9{ZSyA2&^4=9ciNgEcOC@JqWuxX8B+nmZHwqlnt-F4NjnDSlv+wY}>zJLD3h_3Ypa zdTFU;pV>Earg#HTfXLo#%L5Fg!s<`m7ZkE8c))}i+Ww@~Z&Z1zxI@0PcV=;h>))zo z$`bv(L$6-PALqLPlaU&1S{bu^D`MYjlPob$Ai=0aM#dzY>BYEz1Qi-{^L(YNIScrD z<^G&I-Dz=gTNLJ!Eew!pm9UIWybBymi=4kdO8TbKwGqw}?FE%Wnu-}huo57r+4VY+ zD-tU9&v^_uzZxbONwj>gj!Zq(p*=Tk) zK)+0&HFs()`6Kd+smAV7?4uSKF#qtL?Z_l?w}jvWoFM*g61% zi_!hXaA76hm(Y?%k+ctko6p(KJGuPehy8?eP5xUWryT6|MO6%jYCSX-_w;5(y*VZpWW^!V(a; zg#&F8CJf2n_gya--$`(;M3?!4#9R8jqDJ(J?B2=YN2=Ygq;S zRjArDslgulyx2TN(BEG8K^|z5m)f1wzWKa!4`hPBQu&(IWZ0L*2nK<-E+!9Cq4WMN ziEQ%TH0*8Bc7|^i^{9M z<-7spqIl$-Q-g)G|JyIKfek!YxdV4O#JFVIW#>)bj*a85@t@~%fH&a&&~%zsttIyl z18mspg&OiE%pc|63+{n>8%Q%dOEY>^@7Y**d1r;{Alyi*7?$${q+88Zg@7wDH&N__ z*o7GDfs;PVY+)tz=QGT7f_|)NaAASWaX#Gd6i^NxzaQukhA~t8`jpEK7T5;6F3@&v z7rZ^0e7HfQd)0hF7&<#-lI(D>`Njmkz}YJ&e0wEAgG6VybJ@*bY7FT?%(>6Jd#ofk zXmpS`U-0neXxrkkG(|`1n$9&A+?F5R7OIs->J+rPSSgo#1nm~F?0dQ()wdunME8r- z_CDS!HqD611!T&bo=h-%YQ{=RyUac4!!m_fq!&RO!MpT{kX8MRN1YOLbegbt)y+xk zS5DnCuA8aftbo{AK~LRNkC z@rv0LWDifSV}t>&HP9>7-)X;New?%TwSjrkP5kG$>BgC)c0BgsH^YXYt~%)t)B&;! z?E44`b_@aU1kE~5zKgL;ikHoPiwX;rzyx zQ5d0PWf7BF^AMr=@IpA}u;)F_;i{3`;!~U&iJz+YK|1r{I0U6X|8l+a8G5)-$HZJL zsA9w2{B1!0Bhko}ogs&|pgzM^&?D;2k;4697zq0a@UkEx@#JyxFH6|3H)y2%>YrX0 z-*A&_LEj^BVDWzk{#Jlwqsw6%Ihbtcjg!UNMJP4tuz`B*3z+`buGa@r(L@OpDZ|ABg2sAKVFA`;QQZ^Q-F_1*SDn`3`Hk=r!HsK3%-bX_$AdD* ziBvBErX(%Q8J)`?ml9(06{nGPzKC58utAFN0~c+He>gE7!SwOg_Xo=r@)e@#F>SQX zKJg%uJgp8at>a4B%Q-TfrcV!c6D}qOQyCN2czMKItY7{C>t&g7#KZR zwK%xGXk%A_17wa?j>BEId86Q!En-=#QKtNozye_8V z=+{DQD{YCUk4^B4LIzursjm5bjlHp07++pAEWm~c+SoR?GKCb@Y0`qZf91?Hdt{=J z8El*)GZ#7ioq~U_vx>RDX-|2bf^&Qoh2HvV_j&4O-1_I6_cPcy-YLpx zYwWcRpBIt3soT@lZM1zvm6*V;W026oa~!ersBpDl9me0hWK>EF*(^^a_;(5jj0#1* z)<|6mzOAn$kNjL@lHHAt0N_7*4w6H1o#hne&UxvOnjj<;o{0%F9`n!GSGo3`bXd~9 zr`dMcY3McEViBY9{85)76}TQogj^;KQI-%$IE8S&SCa4Zaq+(;vbPo!Y!5;TZnG6k z9U~WYbiQ5xkP<(%W3QS%K_hkhaP>IhAFy+E59x$Z88j0Ds3gI#_RzuwO3wVFFyMU&9sf( z6cV$jIIpsx%!fj`zM5FX5+03Z_E!>W;nv|}k{uVD!>uFdPoKAxx32cL)0)E_X0gfg z$_{%eh{>KCTyX~zl7yjyf@TCafTngLU8g8gHFm-6-jeS6hPqG0tp3K%!0U%JmUpn)i^{ zSC79D!(;DxgWxS`RXE9vfY`~ zYcp961>6=U_MW5KYSy49t>P4q12}5{WVM)kqmx|u&2Ti>6soxJill&Q7`%$zm@+`# zI-YJiXAKN}0t^nh9d-_IwaFiFcbBx~GPaC!-=6d~k&z4d*x~Vr4h>?@C6^)OVuV&~ zW%cKOlpCqJ7?GrFo$0|{zp!2%I{Vc6p^r$MR4ra^c`>z!p>L_%im>0)h%G!q31Z{r`=5I1@)HSREArP?tf6W!#m9LM{2#lD^RQ7>BFhZJC|r!{ z>Xix6_TcLT@G2)eYjK)o7|HLB+eTKc^fGWgK_inJ&d5Ej#Ez(sac%OPy_YNj#I|Gl&6@u;)E+`|%sNP!LFy+EJo!aDe;~Ak}#vAk9 z79i;aH9Jb9t_2e=|F)L3J)un+n_y1aXw(gAypDe@habH{0Ke4gnt`zePuQr&4-1E* z=Zw!uv8#@OBeTwNi`^_?0aR&q?C8WTp{=BJ4b4q&@;XM{^Q4mXi&*NPoa=6@4VA;_ zRjvv*!S0bS8-@4gYW4{aA;d&Q6$CeA3X3Tjjf)&e^pJ~L?3JA;efS0?HNnnk_C#Ds zd|8?OxH#(`oDUw0wLU{vE!~Ajt4#WNE%+TA3~MgG)c1Y6z7>kQnV~KRY1aOe@)yzI0S^-QIJyVRKOhl~&3jpb zg?`OHdcaeY8Xw*D(v$)_?mkXjKg?J}eht;7>~&eK%xSCY>WGQQUB!$L84@0oHcbU2 zxE}2AY&GP_@Ru)9;M|DP4p(ozpOUVv@Z5sDLbmzAQs>Iw@mDSq^UCGCHGad@+px_x5@@s zmp!>f=Nzc?d4#JLCHTpz-I7ekEru13bYX@$8UQ9(q+9tW$PkNnc%V(Go z38M5IyE89I`$cupNX5ikcM#wR_dEk3@7k<)a$L6_@8H4r#-ujK5jZ{zJ9O^V;mGl# z&&7#?_rmH6^*7dl9fUDyxCmwGhSEz*L9(KI7>K`OwlL&8F9J1wn&Xcd9R zScvtxEA4JN;lY8aEdrDjOI{hoYhi>V|8FU0-z%*ISwyN=8U1{Uu?aYgQ!QiiMpe(% z@+*Mik#M!)ThHSH-r_28BOCURrsGjG)CXOSdtE7~A)JS`~v!Eqa};={e69$x@5<21Zh> zWgb78TkfLNPF=EJ*+R3Vfo1KT9NHP&7Yt<6%FG z4rcLS4=HHLj7U8G(%#?jg1fjXZ`-J(OZuz(Ng#Ax&T`O(HwyDB&qokf)KBEn3HT-4 zm;3Q2k5?Ifp?S-A3E5Kk;kN$s4C8L8Clk$DTI!_nJ1^&fWWaRn794Z5!#{#s@Z8Fi z>IQDQP~ZDz_gx#sh2LT({k_`y9Hi{1uG0xxvEE;pORl$#@jm7UkOhRRC>^q-+dKz( zU`u-_9YMmm-M~eG{bcsal|Tz~()IH^fv2d9%nE8-D6sHPuv)geD&iwTKf@ycCVCpo zUd4pVsdfQ*M({*Qs|KSoyuqEPhvG`K{?J%SZJ=!5}c@xF^nIs=^elPnp(U z*P#1nMAYy0)VQD%4X$93phtPwR+l`rQf+eDZPY2`bx|k;!6;IQpkYR$qbz@xjzmDW zoH`%B|KNlLBm8|>LmV=YZ$lP~vqZ37CMYw~eBPnAX5#te+n~p>bv}HdzYn?b#e2aAFXAR$Mh2e!(ywKRW8-YBRg^mB|-b{0w%z z12TuqdJb7)CzPgongxVgiDW~CgRyL-5;))%`X=8D+ z8jB)18u7N&F{S+I83}Xl3^9USTZuB{_~ksEQcM9t8WqF*_(MOk_N-Q&7>K=4=_%sJ za;0~X4Pm0H6usJikM@F#OcfSC^NPF}TINB1;XP~E-Nuh8=Hhao>!AA83SnW=1Yeeh zw%gS0kQybn?}rn-y?&Km1y^L$)K|c;*;qC(4XWTA(j`Oe1fc2+rRZ#b><1iE`;=F5 z`XQ|kh0lR>#SNbtit@}%^{_*Fj*{|)4tm|3?;oJf(&bm#b#U;yN}grlVxIu@Qg02YoeTo;Z#Fp}jkXY^Zh%uS_UwM1~t zxH^hW(r6&hs*%4}+FpWPyy0NH$HI7?kQtv?!22vdp$CTCofuo{{`yC)vvT!A-nmv+ zib=E{`BzlK+LU~@z(?*+iLu34Bl2d&zckvg2MuU6|6?6pY!A-(e}-*d3*DTwk*~>G zpikZzWU>5~_4&8RVN_eh(5(l-)ch^n1y3rm~Qer-goI4lE*8Xh7JqWlyDHKQp< zKkDtaF%Y@!Kodj5PjuL8-Ve2Qd)56N{|tV5Sm;c%{)`0`3Et4EmYCW1JPUC4r(gZ* zAm|}4)F=R92=fS}Qm}}Ag3PtJXtmg4icRXy+jh+hy^SER*VBX29h?VXj6?Kl?FJkT zq101r4J&R8TJAzsO5n&R{U;Vex5sKZzDW8*F~%)DsP8S*Iob;+G`2#`B1BI0SYwGVf-=fmRn!4)-mn} zgo#sASMMzMx*Pv_7RYHc+16}=aKT5pGqA#1;tm6Wd(AgmNN0(dhFM2Tfmzz1+v8JH z>00@c>c%GOt?SNgj|$P6>ZBOw0H~OOupt~l1+>Zgx#MUJ@BZGO^GoVR6Tl*B71%hVH=Zd5%+x49cEBHM(EAc%Qj2dma3A$7nq!ObX448blec!4Je^j5 z`+6$U2u7EEc8`z06L0mjw^de&QsmWU%gBwLh9yL`M##J>hXGL#7k8O&d^Q0$E7qaC``hR>=Q@gi!z_JO{9a+(S&^@^Wgsh>!KU~gCjljrT z?9WfuhT!rwE3qHF=9oj^kb{vE0-cQGv`xkUf=&&XZ*u1iHF!#7CEl7 z5?0k_aX-3`GS9tzz(q5BTU<8>xLsjQ>pRrXd>@@O6AGLKOKwBf0Z^UnzfVoHJ6&Ca zk=7@a3%c?`)~!aoMB4eT&z%n(3ejR-R&%9hYzb)C^Dm_Zl5%f}mIzgt76C!*8OH24 zj}&OOquzXO#cpi|sQQv9E*wkn=2Je}#u*m@ql?O_?j2Ms z6IrN8?3Zo{p515@C-7T^AyqI~6&FR-C4#r!`90^Z(&POu3q1unz?3oI`Ll?W_@p_& zSbDTwzcYc0pv{#~gBp8#3xYFC3gyj&aEb#^5>UzN<+)@5oTng-S&^_MuFKT@s*v)6 zAZ8QzIW>=C`ELyP$b7)=*G2%xH`VAXx;UBBflvAjLS{p?tKlzk1%|omApdg{EMr;h zBu9jLMyeAm+myRx&_o3tJ%ixpvU%l{xM%?&79zIGGlWK?*n+xPBb+NujUm&6g$sk5 z81JdF_;d7!r=obO&l64A!}+MKWAQMtQ5l+ z*c2!6NPf^E5L_(cmvxmJwHYT09%C)YLe5{(D3U$=bA?o!Niyinl;^aWr-SD#obXzk zRWk{=9tqFC?bCy8)vd1lS~l(S{lgRh3!r&KssKcNqVM||$6=PboaORh=;r7yMkM$8 zV4Wi|t>_TkUaix2@(mIW6s#rJ)4rDvp_<)sy8TJJoGk&Gb3xl}S9IgxpSs z^ZUD^V$AT*oFPub8UcgV!QtmmhqUe5kTIJ9ipzH9{R1{EaeWP9JyP#7!~iJI5Ifo#{z2Tbg zB$evj#PgsFZ-8%(+jZ8T@b|+Xs(0-&J$q?i;qJtYuiOj{#J&*O!tU&iQzKWWQI~H< zCqRXbV`O5sS@clhHf5qG_c>+G>VLmC3GDRRl68x%O=FAzFv_W*8}b&PSyW#G!z=LSU%Xp~QOeQX&*CkN-5-Z? zZedT!V(aDDF{xhQ{U=%hYzj$0$tHOIBSL_^YLX-5KBS0!uyMKGl4iW-%N!<7Z3a(H z?p;iJ;z3w@kY_8u^_k0hp)Gr zcg0glG3(54g-J;2G13#Jk#{*l$y_cg0DnT zBUPfwryNNyy?;qVhl0NNn+j}GmQjFuwEg4HGG~1^wBJnm zl77ip_$Q}?G(nynmjGahR2wvYQR02<38QkBN*XnqY47bf@J9D)S~E(^=ck}$HI(SI*9FM(%5x-5k191KIq%&>Hh z326TNFDVm0G~7y@W%%4n;8a3R3^n7#(!o*b9+)tHVXez~3MoaF3z}NGvtrFQP}pA^ z?`N)dykSn5c$e=Q8@J0MC-T--mI9_6s?R!kr ztfoz7V4cVSZu5jmK0KCR1p!TT+_xSY=;|UR{Ds$_Tzg+L;BxM(qx>KZhw~v2#$S(o zD0~7iSlOw>sez$T&C`(ua6-VsCSV)o9#JUg@Px37yg`sG)C>0G7oZz{z{rk!QUsvUk3r zdm*=Yo*JKll(H@*sjG1^Z4H8XLyM?g55P*!RJUdi+Fw?5mw-=?B5=qJJPGJt`W((E zBgIyZGwJ;72G7C7`Nuu(;}6Rtb|;Bn%i0*GpF{mw5I(!K!<%1#{cs=dHmIUjV^B%$Rvt+eSf9Lb-iQtN>}~g`>h$-FisV$(FIz*KbRz>TI$++4!s2ltXOLG zld&KAFg~^1D0o=3Qq+_@W6<;I>7dZCRzZCy&}7#db>^i1b!MfLNZyaBzMM{Ix z7bE#vb=a-PDJfHo z=i_J#LRZ?ll4no;mo0`>zUiQBk^KMIVtIfXyOte2^uI=>oSP%*%DyS@9|34y={zPdZIFQiF#sT|4d24eEZsv6ivY; zf#NRwIo|*0EhX`!TyBT4=IUb>VDvV02}3XjJmaQJDWy*1IclOX&cF7A=ZdNZ zm?mFYy+rI9fROfVEz{shKjU83?v7Lfk)JaO!8-WS;}0-hGODKp-j7#&_1K$k^=7}>mbsw2DhR*j2i6WAHZ<6bb5vG?(vTn?15LS$5)JKG77>Ie$?oSIw z?W23uZbxNEX+|AFL zPr1*I2bWDkM#%WfPS|>$H*>ytL(!w|Zf=p|kWGwJ(kEv1+@V{RyinShAuW#;BO@+Hq<+x>OKyAylrzRiPzuq{cCuaVBvR36l3Nj3C77 ziQazUsa7wc+QlOY%D#lD%9Y*u5Q%Ofv{V(gxQfB~nMs}aD465kha{kNl)DKc#CM$( z_6(jfI;m4|F~@ z3c&QXGFCqKj*6Af%uNB*WW-m`_4eWFSB2I1{tt*mZ}-IRCO_;vIhQb#)#n?4tp`?VYZZS5;&8$E#QH_GkNbwr zqGHTr`;psVuyi6ow=nrdm+l7U#R7wj>qXssM=7nygL^FH#bfFcxEpNhn_*gC^ck9}-in{-E(8iTq5-2T3>XY|)T5)Sv}AcZ;F)0ui%!X4XGY`?gW9bakJtCdoD!l+iB(SuO<59+Lg4=ACT(Pub?4B&Sx zFiEWShq=1S56gn;h`p&ZEVC$Cd^~*^Q{^Av!e-~e3|0ktgNbf57sXsY ztrua5-kgH%)rq|7@%#*rE>3No4Ud8P#ex=IJUzPyih0&H3f6wyXUV?)>G-zvhrtMPkpmng^EGYTcYlam=EdRQa(R|3U`OL{ zKTJ}b%8(ip&*|jnj1lHyQL#?dX$oPH1!CuQ`2j_6pgdYBGl0`mbNT9YNc+j_oQkeL zuUI)fo06?hM(8@xfX?KoG1Aj@5<+xGAI=j}n}&3Gji9uOVkipYC;CR%SHnuOpaXL;asGmR;4fHQSvlfEt(kg<&yULKLDP#Id;^ z*CJwm-jExd{RK&~hl8p$viV}`vTXG?&16_%eQkoDey7vu_>YeUdNZgZ!ROAP1?{JG;2;$Y= z@;PMiKFZeq7uEEAUPR@Y|I<;ZLj$UC(1b#uqn~`zi{yd;@il9}kCwv7_zy_X)n9!` z^Oaim&&dM}WT}*%pVcc-9Lm{+4`%PMV1=Qo3U2P%b6M$C6Rj-FjhUZ|0-{%+a5d4D zg`ar2T?#fZ=4!nvt8#im+rFQjb=+Ohh)tPF_~bg3*Y%e7iI~1dtkIP7*LrQf2Wzn} zbVL={a3ak~3C4;fJu)FZnJ1)?K1Gmy8mS$wi_MBjpoA)4WU8;;Ol}F0X?qLYW+>Y$ znmG&B(eBLwh2CosHxZ0nOf9` z|IS_duWhssk44JPMNGJ8C;Bac+VeI&GoA}VBKvbW$ zVG99f?`<>v!ZDyhp>Rk_XhTn(!k?bT)La8$IAX+Z{`v82p@MWs>U_rb7m$IngxvfTcWQs z6`0~x#{ZR~_9Aogz%@lBnCVsy!(4(Tj3N%#DGXx@B-j5`CKSjocZO9Z$P6M%efcDn zGWp+LU$VJ0iV2jAXJxV169Kq!l+m7^-vM1Bfc$sD|{ew%4MKi?#n z@pdJ3@qZL$(16cKP$R{a+rW+ILRE6!-|NDOCNi$Qate?ybM;fYTV@pWqD?$JH=sK; z$B}N4J<-u*gMi(PQ~o7UZCmJ2Z#;HhrJBIFm&Aeo=R?7{Ih4%Jm%wX{`hf}irArjS zV!fiZ=Q+T@=dj#Fr#wS5KI#%1GxfYs9vt}XH+X~fKECAL^CBt;rfS!o{dZVgOij!= zF!5K_Yv6a&uOYZiT294r`=kOq1U2=aq-i zF0(WL?#i@3cD+cQUz;M9D1d{yY&_hDjD$XHw6Bo7v5}m&;D<;)v=uMR(kx@ad5)gk z03{5=SW^BhG}fdk*&&FgN~kwlPsu0VosCnQm3Fd{??wvA4bp%cJC(-xyLU-}eL1I)s0Cas z_$Os3FWR9OD=zQlGt$fI3iE=uuPX40Ej#z-huk9R^Kh~5X{hT95t_Lo$@<#Th8et; zFB^KUno@*j3#HWc#I)39EH$F-**|sfdrslO9i3W2P^(!$kZr*5j8O;(JmpGlr*N;MSlTh&L&+)6{%ww(brRJ}aI{DY_00F-&Jm)j zSdmDb!&Txie~Y+12g{k+eRS6DgotwEi_O`{>*4ySMi?L!hURsMqcKXz=1(w!r1j z2m94<4n1A765IJAQ?}!PBU$HPHhen%6Y-EuM_`XI3P5uJ)CRx--}Y5ZrLb{o{H*c> z%QS)%IdU1mrA=@BLPi}hLhmp2j?1s|x7iTulWxvL2DaXB+u*PLy6BmV@( zRCb_if67wG+!rKJ_x=Ewdc~M>ArwBiK(#BXV2|H}9`fkNFbn9h7K!TGjO(NR0gv6Z zK~;T7m2-Ibk)Jj{6s3_h@DDDRC-QB1^%#JliE=2)EbgKPOoLTbJldFy9ip#=Ko{;)2mPZ~F zooYhP#J~{ORGW1(6zTS?0h#dUPiN;%Wq8d@pQ8yKN}gl!%s{b>cz(klkQgvFT$0aa z$XN$XrvM>p(gnhG4r-IXCk7A$^wndG#xKB>n1&t%b-v!uQU^D$8)M4{zKo3KkX_qN zsvDP1a#DG%o;oRKq}7>nGh-E2w*o%=h)n@?7rXa=+HS9E(OBFB9Gqszns*`BsS%Na z!{d&ga5>I#brv=@Z5LrD#@fsoIl)z*2Nqp>#X|l|Vno&})ufGs8LIjR!}+RT}2XSc=bNKG%c_ zfAdI9@ILBY4kbbAY?w+UlPeie@()Pr(qQXx$2{BBl2l&Moyd;DFwy!^kztCV`OUzD zNI_8rwYVp=dQvK$fdd~g_M4i9Z2JRP>{)9|VL5r-pHayh$poI{pBJQq;yUe6`!Qy( z6#9vToPl#Mk9q_){J@>)=o}*14nTNDl>WrddmlcTD@n2L`lpDWtc|rd~aqdw-kLwaMI8pLWYn2X%Gnngb zO2?4ISXFcSsiDRFx+<P0W{`;}B3+1!9H!dR>;oTtGlo{??*fF^u+7x|lx4w-QIols4&$}!C<#5w zi%-+SWUQZDbp$an^n<-xP|1)q(gKMU_rvfRg^?#McDvgy@+ z%`t^X_4IK}uLIlZ2NsYi;W&!KX3#C?{FuTV`_d79Y` zXJN>-R#&zWfPWrp^A_!2_cOT?d24?bcp3TU;e@-8;6(77th3&z%bDKAFl4PCf{@Z0 zg%t{$!{;0fi;zk`kR~QNXL7hT_@>})GDbETA#T)^M}tWWR79NeEjUc6vEMzK#_)s; z0Pd^5ARqMP7QZ-hzj<;ba}72TGn4^e^EH-)3lpAr%$DT({<AJxq^I|fh&!rjElM6vQ#yQLl%ZyJKA;c3i$OB85 z2b^oJ%N)dE)vR%#6==NXE2;8M`lMaY)Qkm`7-&MSg(O{49GdI!(?0fFQPiuH<2pmG z8OGWK+hz+v;vsZJF*V{gE)=^`r3lY4X+3 zXGs>C41Hy*i?oHBd6p97l{g4(#(b_$9^l-3ZIhCU>ncjhYu2h!@pv9!D&*QjT5rXP zZ|<9%Pbj9I)3Pqy4{;gOfE`3IHoe(yUt2c2%~c=y^;kY{Rmq7U!+kmN(f?28%c*YF zTKcHby&s9Td53S@?qnq!(jo;RN$0=-r6m-r_FC)1*q_Icr|?!%Ak1?pTvdS1*FxZf zg+_!twrYOhRJtC9#l=r2*t_4jO@XT#`{`Jk{waU3^Y9TXk|&T8cGo0ib&=VQ`{k~Q z!QDNL*klv;>xxuvC5?HdrU)w{Us6AD2`}<-yPYq7fivv#PrnE}H6%2L6Ht8wiCr4j zPR83UWop7}xZf!1ykKzKQ8Klb36DPsU9+^ROU`ue4AYo`D z8sD@No|t1G)=@MjXfUdqOmhs7j;@4KMf3{4>kp%N&0;W`6!mq85O%3tm&~knuv)T} z2laOTLv{FSk5jNSusu{aOGlUm%$#?mLrU;(J?ev4uMYko{%6J3Zus}A033+iA8e-R zkh(;O3KYHuUO>t**~#{_r|Q7W1*j$z`Dw_mb}vUr;{h!W*EGyUj%;t{U=;Lo$Nw3r z^u0|cYIIYzgOK%U8mL?<>$kt#wb17%OhUpD@&qvzU@-dg>kEkQnHuaI7*ccj=OLfb zkGf56WgyXW^sn?KBk(~TwpU)OV+ns;#Z`O8sjgImX_&FMSc5yHMW4o?2sP(Q7l(P1 zlJfYSh=i3dc?aA@UzhiI#dDT%a*mgmlo;f+oG@bN+oXxiBkyW7f{=xJI_<@2MV2gz zBQk7i=ghnri3Jein1*O4^R_**h1550f|Ct~+62<4Hr195)pe#agtvvI;fVKcz{yDc zw||iXm3(BJ%YlGLnpNlaUHg+GHv1DcZFQbB4y9a|Wp{$1)z@d>2nV{z@w}e3+j7zj z`$32?lBVozI?CyLNNqDR15ryJ!dD9F(Hk!g8h_m_#tENgq9cF}J?eG8H7`eAU~8r5 z%`!u@m^mz)iCc}-ARtI+h)A2Q)3EL)P zbc7GYhS^GE{cvD5TairKVD)l8w3<*pS9rpqPv8sDuw8ZnFx|ZSZ};o<@7_P|1h9nI zxi}1RsrEs#`w>{!`LLn|Okn*-=BpokR%mm3D!T`khNkT}eg`&if)Oa$g6o?j_3@-5 z8DxDaa{NzDB2AUu=jh5d??*WDs9rg|K@OLE#9pl;N>eTGe4w+(7w!~^xq$82vGWw4 z_(@&^Y%p%bkHiN9UIzVV__6V}m>)QI;27$LSLeSZH2f%RZHaz8n#~(K_`` z(lsUT9s1>X>?9BlWE!TMs|weScMY9Ah&lPJ_8tv;&l-hkft#Xsd9H}XGv3Oe)SV{b zG|6H^Gf7@Q@1|0LoP--D0iQ)SR0D6f?sA$6tb08ja`V9+^h&lTQ;LZxoXx&54%2tC z%OrR=o8-rv)%wcE%MFDZg(C95=*5}b@dlu~sDvL7M05adF;dNCrAc|Qx7oE{5iJ$eaCW{>bh0axoW$*c$z*y`a@@(Wv9+xX_$!f zY5*|%FYNyi_SIogMcun70s<1!jY@ZS3?bbDf^?T4-7!c?D@ZpCE!{cNsdOVlH_{9- zamVkwzkC0>&;4(n{mh)T&p!LiUh7@&yH-_Q@-b<_4uIC;I>lsN~49wYvs>OovknBAO(w829o2Ga*kK?e&z&$VjwI?ic&V$v($Y;giRvy3>g+%`sGdY|#+ar%lC}Q){ zO!4)wPm`wi`#+`o>jJ*MHzi08)@+*(K^jOQh!qhUcELC16|3dVCn49Vl`kG1`g{3( zFIk&=#JARlZ3m0kE-%y;l}%a4@d1x7r&zG=&&J*uDl|X+W$b%em8L}x4yvBX4L+UQ zXSswU&AzGBb!n^UdUsrs9h);5oZ1hidBJiR9yO#Y6*o6Z>4YPe z$-kMj8;e`g^x{r`(WY^Gk5~3)mke$9>)Q`|;?)X<(*Mag8CYMrijwHr4pzlSxDk_0 zs$W6S?xENBwLHS~px8S3-3BatDiBZ4>+t$PSB{NEpEgAdn2GXXU1@cPD( zB>t}F@o%6%G}m{nspj&qBMZ$f#u5>EKYUY|OUUL*nPmIUg9hnGsE;8K)-muCxXOh@ z)!{JG#tZZ`l#@*z!}?TCe8|lg4-`ZU=X#c1e-4X<*uyY)pGa2!KvbQ_BT;+5R?R$bQozy>!j#$oh3+tiSA|D0PQ0mB*s@=WCD5B?BUIh(B zLiGfd;gdhfWSzUWg{a0@jE=6Owo1`|6s$ikzWRWtpbJHx?28ESeznv2(2ZR70;0}vo$~4a`E#gLZcpdZ znW{5EkTG+78}7NoFlqnX^u2LYL0FiRf%C<2(;^%8L-q~0;uh$ZC{1s?Y2?*1#+68R z#6lEI!K<---t#!J+^`pYKeN4Y1)^@@B|@&G;_l=sO)A#CyG1UWmwf6byTpeXJu%_> z)mGg=3Nscut`qt0XGhK0iWPEsDYUX@y=lzJ0#4)16w{RUA7rggY`@cILo?Twy+5oH zDUV#{Bkz8rP|&-YlvCj%Vd#j4wEf~9w-d2h@WihSxhrqGuvjoU5=dG@_uZIF;uJk{ z=d+U73(AKL(6fn6|2MM1T%~nEHLCdWclrD>J?4&Hz%wYKJzfAlLET4DIk*GxL8H(g%p1oGW6|+|^(*A9466qiv_^KvxV3woo zQ0I@Z1-+AOBmw~A4WW&(=oKKITvo7DR!L7uwyTic)lAPl71CLkNsNy;Q#TSB^+aC27Sq zF2H+4%qAPPKO*#S+3yOrux5Je=$zJS3{vmXf0v|qv6f#tjk~8?`x35H;8X$;a$rDG z`-VSTIYjSUe6P>X5|kwWcq(qA>d5APG8{1NVv!Z&fe(;a>IgK~57T&r+1@{d_s%?j zuMup?w)=ow{y5afHVs@&4RThK*jwZoce)!2Kwex;gH%P`hRFb;qn5zs%g;~ z@*4q?==U+Xte9WB*Ao0$=H<%=*s>?D>T8kBr@v8Hq;1l6twKIDjj3_ykPMu&CaGWf z4VgBPSCD2fRX2)eICWvfkLAc?R&C6g)P1f0;jX*ni6&6;7KgQkkzC)HY1z8q$&nZ= zXV^k);hi*fKow^eB6FeND-j6a%aut1SQtCvg09d>Ppf1Rz-Ks>gG*cX+!AemqGBy# z5BV7e+X2lGnW(>>&u5!0G3Us5tKSr)DgTcaMpfw$B@@DkkI{vp4tx5~>U$-DhK|Cv zS>=v3a$I9+9CfCzWa~kJWJ0qfvoY0fG`4fko-wl8rv^K8uK>Rj+;OR>7?miYlBWRD zm*QGZP6+ondam-d+IdW|Od_Bid*HiX4Zmz!C0f6t(@gdXRRkW5SK%9)tsKxIFQWPn zG8AIX?4d(}q{;kuapkshL&xS46?ct zfqz|V_CP>^Vz{pKVa-p8Y=%4a)Ud5}4s^Y*BnP+;+_eDjJyAr(n?1IW6C7^%!0h~+ zgM%H;#hB-_>!Faq2q6eCo*^C(vVFeA=6dbYg`#dGzj3}mH5OovJ$0#j=Jb)XfJ6Z& zggr+(YKx5;zagnC4AuG8fGhP|_#~s1*uz%3h2yNu1rRpVtQ{1eo)-M=@ z(tgBSWW|z0xQo-8-R*DUeJ5m6pJh#?XrRpzV_>C(wwHVs}$p3pR9FXOHi~}-5@~K4 zb5xU8%^V%?v3AU}Csn~79 zVp9)OBlFK0oHEh9{=U;01DWvUI-^cB!O1XPC<{o~K?bqyGdgM3sc;B9DM2oX8y@0_ z4(Ag*aAxtnZ$;y;zFIHq(?LY80B7{k{W1zDfw$(w$}AChIj>jt&XL7yTUad6M8tq2 zcl4AXOJCB2=y1}K9#3N>RO`hkHjQ=Dm(zazojmp1el`o?EHwTN_d?OP2b_l5mT~z; z+L<%XIF^3;MJ|;k@^U+hV>V2GN5wNqeOGq|38_4km8TDuG<8eHtvLVV580c+goKcl zD_i8F<$mnh*l~dY?{chA`78sHL;Vqy&*F{%NG^%0)H=derW|HkaqWHu8=ETvwTaKh!1QwNSl(4j%$)t-(O7Z zV_w%RdlV${>%?CMSB4(sLDTAe0sm@Kd>GEWLL0?iv-97@%V}KjyzU;R$p!ODT4c(0 z-7j3tnHc1OIr!P2ihPL0ScZXxEJh@zR?YDXjQQbOGafZN7=d(j;&dGK?&E(zy^|2$Aun| z?;6nuhhDC5S~3MzuMr-^Ydm9LedPPIURgg3nEk2GoU5BhZhb*kY|2CV+yn5o23@9V z>u!=%w8jmK#_bvH9JsVuTaN0eZ7-U@iA6KeNGRTBB8=5UPo58J}yjE z34^+u_H={F013`q4t9k+_9X3*;zN78TRR0h8zm$J&Q61j6Q!`!$a|&N4Pu}MTgw{# z(w+k4R_{|M3LdgW{i2pB^^{w^t@f9%0YP+)eX5Qd7v_cibzb!~Eopm`cchxA*sU>~ z7cq>v5p+SP*EMhkx(d;Vl!|7g2NrL19I-De_dLyR@jdc>VV7!3P^LrYVvMA_-RQvn zUG6ehcx<_(hv2RlrkU7Sxtl)b$8~yklpCdSc>ld`uo0nrSk3RSwhK&U0#>E}mKhWn zP#L~i?%1R~LEdQmWftGg8m?C&zpV%hk4^W@^GOgdUy8XAPxG{E`rR8ZC|d4zp?H5% zu%mILgA`KiE{X({IV ze!dcNoT92u4b@@#OVg05`~^jR<^+ag;uR5VN`6k`{-D}uKiRUCWAW;T`f$E*c$Ghyl4TE)U0 zzo~Hbltx2m>#*j(>X47faEl}Q(=+0chRl@tyUa9`jeLB0WUI$Q+IY;Vz`O za3~mqg=WEupiJG_XFYFh^V!a?z#0C=g8@&V!f6LB{)C|DL7IgClz!X;yda9r)9PaH zZs)Fou4Ez;o$JLWT*>pYj67d;1g<~T4se0_al06!auAXeLp>Y5Zj8UnmY2dSN$qlT zeQvC05WhZ>9fw#~Zxr;sVE+WH7cJ)vA9L3ZenH2HL6CvOpnbGVRi?ZhTzMYU=P|lk zE>5D|E*O!-PQMmYh`^ywS!v?z4KlYBLB`|8=D z$gjsqC|IW!GYwfB^`i78LtY6WUSOltM>|tT%C}f=VL78_~;QA4c%wDYpt5+V4kqBfJ9W{Mqp`?`R8=57q#X zm1y?e5#Yq+$XAdD5^jxmll>*(m%kQk>7-h(AAK>ykckGo9*fkR8sL{e20*finh5KP z+i8=K(8ew+kz384yu4(4;M2S?zMT2vri~ZLu$Mm4do%TMIE}RF{BYHs{f~#rNF;G= zdNZEr-=J_EE#t-Rk9JfpWeZCq-DmaY1@D~S^!&~J&@rHOTM+Oytv=joL&fXlL&v=Y z&siV=&~y_;md(|%_}#Eb_cdj|!y<-evOskZnTlIx4Jk)zQ>Jyg2j9Q#X3)A9_x>Cn z9~dzVnLMY{lMGj-(UbS8jM)UcSS|&=m8i2{*!tjWX*Y}2K$1jl7@G1IGa*ZzHsJD7 zIRzIE_CD=&BZN~vI(PE~s@M0QeSJx8`GLtV@iZa>L6);L9B5pxTZtL?!F`hKMk*0A zsq_79^p;e)oi(QZ$BBZhFO+&~2rg8dMQCoX?f%$W6E%DE((HCv?Fqg7eYwy>z;2P_ zyAVp@N_(*pwgXM2gvTsrCs#ND2bpwCrfs9cW7Mu_Z#`M#Ise8F@mx$xY=;0vj!n{5 z)jPBY2lXXQ6<5Fed=GRx?P@-Oav6p$XN^7*e4&9mr55L{_a5@Z+_SYg++C@O!Xb`( zF{32adBlyf{wvQ7BtgSnwp(ILG%gb$7Sf*s6mga-82l*BM87cy=99YT!CqZ@GhDe> z*+u1=n>4A*@1DD*c^#UNv4pb{5bweAr2Wtm$8W$uqq51|&g zWr9}Q)Sna-o1}K6$j%M!`d#1w<3b@SssBvZCR;5w+<68 z7Pw^cs5V0q6Oms-2fC?{D)uFJ2m=92C*l(GQGDi!J2>D`F1*P!C-kCp6vvp*s{{QKQSpC;b`c)%RPKT3rCY1ssd z@uu41gSWw!`BQb(O_v5S%YKySl4A&SG95$uOK@oiP2-9xD>XbFb68J)#sC@Z3OjOh{^4GY?hT1+wi_~kL zFfjuJ9HDAiep{?+y9kR5mq5MV3^9d9WLpAa6QdGk;T{`L7mQDZh1(9 zMgGi+v}B!j8hT+rk0UY@!NyKY$r3^!>a~NlBH(AGfrwT~1byHMpVvhF@N`!zq_p*d zg*u6QIoWlA0=j ze-d-%!c;uz>diJFbU+K_7F?^gX$9-Q$X986?8r3Hmn3mXx(=sIyEb$3HJ8`nM8&4RwD z*ou?L4D16(4>&pNr@}%VE+rhSJ{v{#t{3c{b=i$0AniG=JQH!_O?(wz3C18ml zEqa*xa(W)JrT}QP>w0&-Dd=^e9pL%b#Hh~V^CGz1s9Yx&f|n@i6MlA@)CyQf45bba z7033Y-hty-U05lqoqh8$=ex_YMS#Ee>2Cz;k54H-zB?zm2k9$u zgS$^CIEZMwOCUtAeh5@Zq}^R$hXj;R0iVh1v$5PEk{jk!DI1&UxAQG*!r7agA1HI9 zW;cs_sNwRw?!SgezVR2{#v>??phQpeUGRj3SJrPcnEnvF?k1 zKY1ewQWEu^3Pm7({UicAp&W#R{MZj~kwR>3aj+O|OckOf>c?X7n)@}69TLD4m^@JX zVt(!#Pe({0uV)|pQZIyhkjLPY=@QE~AX^#bjjQV+^lUMID2Y0$n%O()d9d+z-VWS6 z8VW#)|6XjIltvYigVp;Ft0j+Q`1dbAs|6}fA1kiaoNy~9 zvCRoqCnW~}olc7Wu@bj*X&3o|dVEKjlU>P}1e*B!DX&@rL+AJ z#*(GCFo463>ruiNY?O)vvh4@5BLJ|SMTsYU<>IQAb9%QF=!jJH)F0W{8P7h?lY^)x?oNFHk*wO zs$E{U;0^95dfRj3P^72(JLxjMrQb7h1GD6Ltk(Z|3`vMl=EKwyZLKN$<~iyr@ED7p z$egXpZh6qVrO=`9IW)E@;E?dfb8e-(r@uH@HZv@i@&nH@`>>Opug)6_Pt4gLe*Fp2 z0{ibyUIEYU@;~c-;_kdA%5h7{ET3gtN7~w!Ttk5{)47#n`bOFIR|M9`F4$=GiMIb;15fKLoub>};XhxCyz;eUY@^%lR8*QRxONJ57IFZ-Ja=5y&)Fd4;7v5qJp!ZbAW`20YT!S(Y%BqeJRU^pD@= z$H?s#=uq=B&zO6+<2shGM*=7|U+YZ(AnF-8br{|&k|!v7C>X-@6wrGGVk_ONdU6Iy z?8ciWl?%z#KDS4T4xYub$jT;!$+QP~)<4E1V3j#M_l=fzb^3+k@OkiZ$Jde+Qc}E0 z=OVSRc*4qq15%}y3KkygQ<(&kQfx-yeA|p4OGpPyQ|_tDA4AkT2a*EOo>8qLD2j^) z;<+qm_``7~AOChIapAB~>Q(4Xh2RoDGtP*O|5fm6zs4fm#@)pXD=8(b3jPjH3vvbi z20<1sVZ{jl=DJlNwN7-Y>;#$v16j z2a-?m=X3~B#$bPRL65T=cF%um-)=#wqh^Ddo`(v5ugt;hZ*2_s4Bwxl6f2BC-A^=X zgG=G6#w@BY56rC-fZx+tUx%G!Jl7Q!y6EF%ykKXMBhp=KAWXZEw00K<$Y^$^rr+I6 zqe_`g)l!hfzM$E`I;dJ)v3O-Fx$;zxCW;rEfkmzif45TBs@x{oCqtg0osiK}9Kl%J zyB)3D@}KjJM^LGV|A#-%r3Zy{>|cnAT4mOFuKk!dER`x-n&7D&Lblb9=6L% zPhYxd4)30Vi;uV_5V<~wr-C+f>4SRp{mL)W{gokGWR%F>4__0XodOkh+?|gu@+~}c z+FtRNo4(N|Rn8qWUh4l66U1)7dy$at~H}qQV@ewMpX(-x(Ot8q1 z_0Z?3pUjn(?-jmJi&M{B93CJmL=uX(n#Z%|5W`Hp_tKk_VlUn%Z15Hxut6gOGl__B z_(doMkGJHG!b8eswFy6@G*Sanue3Hs+PC#YvT02pf{WN$0cO zd-=qjF|X#r&nbf|BH}hW#-roE&ufkpn== zV`AQ*7I+K)=RSZD@ZzC?RY=CD*NH1^_6r}L=m-dPK{TIpUss?OITop%cIFe~N+L0- z-8(IQ_v(bWC%tYk`=i8X%TE=D@@epo+0Cl#O3gp?B;<8J25qiJR3S7zh@JkyQGNKl zgzzE{Y=Ill5Jze(x?CZ43E6sk@1y@_4)hNB~zwZ0@F1S)@WxofLf8*IL zw6rC8!)IBa@^3M|5X$Kxndq3Kz6gJ(B8wJvXDQ#!h={l*%$lXk25E)J1!i7MFnw5J zr;vXIj>VZEVNU*qt+}bG-K+dlZZg0*p8T#vG;WmRpoQkqMwC19_4F)xh(DrA{n;hi zNF0OLzb~F&wrV}FsKM$~I{H=hM>gpGW9ESQ^=ql8c&a|=2AX-C^sLZz-~8-&w=Q0m zzt4nHRFsvIWUP13u*rBPVkCN%*{}~^mY3y6ptBibPKXYmhMq?g&oE3e&JkBcC|~sD zv=PT^|NBjUQLc6@=g%+l|7V1@(vnw!?A5?)D!}e{U5B4P<-?$olQ#o7kY|sNTX8%y zm%HPU+FhWp0dG zuxr4TghsCyLp?W`u)@d!xmmh3O7`s{f0RS;PTmw6gsr+0+UFyHz^%)U4zXQ+A8<>z zCr_0da06!LpvGsfXnKDl;|#PtBnvzkPphHE*7%ndK~Jt?$2Fhgdrq&v+dCod#Le&Jy$Fya|bM708mdEi2LwBEAsDsL5d z^mg@p@jqy6@a0q9S;n(yau~H|P#{a=gi_O+*tC#o$m^H{At)T@@PXBQU0qm4LNCx>ote!vi zep(o{*SF}(3P+VayNBZ{s}FPiMT7uNe3qG(7T@3w9`&UBeaxRt<2F-mgk)5wIzM}O zyn4}+yMg)s1Wevy#yiQERiedOWE#-v7GJXX0M zrjyhb_?l`iNCq8z0dFb!r2W;2VV`C*E`*_N|vx6vGU10|r z0nlcwiUu30=Hn1XJgQ)(ZYj9%#{BFkIZR~;>?$3CuK%5McDgJiU)t;(uyVIa{XJ^; zq8n2K^n`&M^x}u;)`hF7HxpOzz4XfUG_{_&vHWQVjiOSXhtRGC0rMx|VT;h#-RS6< zoasY;=)-#42L&kyQ9GsPAv%q}kLlzln#e!)YHH_g`%{gCvBe7C=~Yz!RP z>^{z**1RtL759^6k)mI@6*w#b;EVh->!m!|;rvInv5B$5q&+FkK@Lcfi($y3cvIrt@|Qhnu3ZT&577qC7xZ*RA1}ub7?o#W?9UGHD&bQ*8tjJRs9u z{S7~u+U6`o$mz_nXfIo?>R#5`+UC42WNL`3`|4lK)YV%c|fLM||0D78LffcAt|2_+M+~ zXL7(SWUu}udT1U*t`fiL={6HPEeqZ%Ifs7>#NHm7=3q9*e$>^1qM(Ee+~#Zvx;tdGoqSAM{-Yu;)57p6I6?Nt~UyPNH!p*lBcUjJ3E%^p|qzpRB1@uj~{^ z(ols}(gm*&@Jcx3yofeOF19+1ca%7MqN0)acOyHEVBkz2GU1PG@RXRj)i|3S2X;pB z8}DnIx(Lm0@qihIuF@@x;|(9jWnCBG=7qPWNd@1`dx$r@0&eKd%TABer_U!LstUo1 zQ%AmbQ(^WY{U;@_%aC6KXr)i|-3Gv&BQ8R~Ul=6b+U*+{OY%cVq|ZX8R^ zPVx1x1% zzuaH0n_Ne|ONj*r^oV~+9OdlKG?`0N@FrIn0cT}dJF@eea4>IlR6Z2k$?|sH5S5 zruo%9*<7YUnwITNJmYXuiO0S|2<2N78odS;ao;RsTw=T0)@SZ1+tk%OF|+OA?cc&I z@`O)_46L8-bGc%J?nRRn6kcw@Ul57bJ_&e;BHf7I2Y<uX{NpyC1WTOvlu zkS>N%A&DgbA;OIeg#OhaX3>mqG~J>W{sdylzccTHMxOy~$wA8vZ`hEGd~YtlDIZDV z4~zr1$H4tZAlXUaB=YWVoIO}=8Y#fto{PCn0;s9QpWfOAgNl;u`k0<#D2pRfijw02 z_twP3uTQkU(qbpuD2tH6e^rrB9VfxithYZkFmiE818tB z9NBNsw|$5LW%bI`M`RZns(S4>C;K{D5d5*WkIxI2Mxfp6(g4ATU(uR>kKq!86grCA z{iI~IY^-vDb$uysfGg5*4amdqeF0iIVxOXqXgX-#EM7e167}i0rdL1_L#09;n}U8r z9F{)u*WM0J8LTj=K9 zd0AGX)Yb5u%f{&SW;VgBM6G&BSkV)&%ShmWtj4b3J{V9`{Si_kuLZ-op?vr-vEal3 z2XC}PEQxO&1szW2=X?+BL0szQ7z&m7ZXZ=H%Th(od`G}JTdkOZ+L?@>965_V+`2*1 zp#;aRV&z(4W5zy1&*B%H7-yP9@t=LaKhW$6dqepCP0k2mHh~s)A8n+)=A*Qr-3-!d zgiPcIUU~s}|C|D$+|43glmI+nLd&|Ar?cb;^y!5q+CaqiyJv12ZWXomP$u>fN7-Gb zzRahel;3_zrhFaOucejm|0{hT;J2~s3clg-(yow<(N_5M{w(M1^o2Geo>ftQW!`{I z?v!8>M8cIG%_V_{U#TMZllua<;zJH^B;FWe1*~^He<>;$R#2AzlX?=!1KfMu-csW! zT&Ol;S;{vs4^CM3w`Xg5{=mTA6bRS)%2x}FLSIKPjzs;#lu!2WhQY`Lsc+HET(^`I ze_j=2gZlZ1@ACwF-Bk_&5R6f5G zns)91W0!zZvFkb4C(#bGv8@i96A~LseLd6U5G5x5@S~5Rpy`7+gfd1h7H9{F<%vvS z3f0|QdyvEv-(|PlO#C%|SQ6bM>w>GZUILx|!IrMAuYf(I<^5e(n^B-XFZ+@-lS$~I z2%sZ9)(Wfbz3g|%_|xn-xN2Al&1mvoBPGxgzI3PcKQyDCD4-JDG%|vsPT~F+>;mIX z{a6{1H(=vUx3H_zqQ?Px?e41YW)H{ugx|!s51eqLAy8fpmqO9)2l_`0d5MJeXzSDN zMLH5X0yqw~ ze^GQNC>0nWRDZJKa!2@fO?VVfAnQaHRsZ%vUg9&kk4h*9nsHb)i~7?8HPR)t%nn|s z(9hRsN;6y$?tR>?FHx`;3XH!xg2YSItB9MC1w}q2DVHOdrRMyxbT5}z*O%zy#wSDR z`cTZ1?S_F#jAwocYVqrzXuZz%>zPAxSsq1fhd?ip>eADcG{nMO&AcSbX zP?Jq@hfcSVPy}H+Iix%AagxnLB0TdF+D3X^o)oVSHof}reWo;YF_XM~@TjvNPY2ItIS5SA%QUHS5eZ1E7JW@s z#AN;jwNbYhrslvS`wjh2qLA&OC)Dhf8lh4iQX=5ge9`KD%dN7iqHs(9%8?}PY0u^4 zF{=caI03wMmRx4F&uqkhOwi=GD_L1x)t8sDOu?fUrsOS%r~(oXr{&7d+n+BB`t^xy z6a;);524BiS-0;P=Ag)tt4T8wJcpY~qYwGHt}YU{y_~|{+O&Losz<;V66M!M-8+;< zXe@?hA;Z%b`S8r9{6l*6%V91dt1^M|_p7=vXYqoBJGiAI$FPDxHD(q!@m4I^8-{_y zAhCm%yeDRa+H-e*Fyg|UE>jL{_{3y(DK*-(S#hOXKK9ecKM6dT@k%V&fiMIsTBui7 zy5OV26Vmu+T=c#&Qo(zf``~o&-V`{~H!q(2x8^s1f0Z1Ig1J7cP;P(V9B}mOHCdYd zPn8qM4hKsNy!~uFFe|c$3RvxEXdXeeguuZ{Zi384hi=0A!}ji7=TCp8gY&urrX9=j zqi~|nkkB-);&k%>wmJ+;VCe#o2Wf`rMpTtXJcNA(BFm>8cFqV~fyt}+vpn0nu#JM) z^L*fYpB$|>b@4x+1p6M|Y1Pa5lhqZBo+ks?ca4>I*GeO|wKNysWru|<-{LiWx>swm z-Cb<}lT7|)V-o8(1$f+CPEg{b*xfLbp@wCG>B~i=s;Ld;JeME=ey)()iPwo(#sj|Ca6GvA zqD!w~9Hst~jbsV|f-!9uXEPx|Su?W&H;pt7s30eBOKKu70Qn1O$#7XaWyxap!%vyq zp2$wZd%#RHyZ++-<ZVsB;v8`34;>YYk2eD4oV72uW3Ktr>dPOI$B_ zj=P}*4A_I_e?#Q+9-hsWy091t#z70VbYZ{A%+A?DuFBwHsL(cvR7 z*!Em}%^Bt=PJND9&NpyV9qD zaYC>--@8+8(lNk;7pScuqTZME2mjz>J=1Oy{uG9 z;drqoTuQd$f`D^@4L0ba(I8mh4@bAo>O%w|SjIrssV zDp{IBpJFI~GDyZKj8Jn#o*oc=0BMJ?h-&gglg$p|G%1#Vz5fsyHC|H^j)Gnjd)>}1 zc%NA@&w0!FZV4snx@a){>cR>N<&(al`okE!+1SxkT{o=bCjI9NN~V3iN8D-=eq-BL z*4P98!Rt&mSzv`VzkF1%)xsS}`zYIuAoM=;eTw&Z@@q*3mcOJ7F zCw8PhS|}XWK3NsS$p!&m36%T6f^S>B&REBT_X@_5LTdRX_gWCm;6&*-%%n#}i#1`Z zw1w;>bDmw#bsciple2WA0MbA!70QF8?MXO>_lYN`um?nS@=svTIS|Ikx!>;?CLwH5 zd<(S7e0@F?d{dhtJFk#yCOTLP)v-TdJ{*q^uSD0p=zPJ#Py-~VZZaR2)F**uBmW(SJGs``0 z+wIaOO!%?;MzJ%h?1qJ~Z;aV_4Bz^#$|-u=MS;0>A3ppNyXTS3`+D$SW*CMgts^&_ z7>jhWAX!bwj6Ga6Gvl*@PEib%H7ut~lAVJqVFzyv`)Q2rA@ku$K?ln#8l`j-6=L~^ z3AG-RrdKr2NLa#l_W1qWy~qc@6Z*H^sq}w(vmZa~5~iYs#`25!eea+al@D=Bnk`{b z(pQ-o$=6F<(vC|S>PGLsyV01kGHJ|-x1r`QGCk|cdrvLoL_!-PnkKpd*{e1_1SCm2 zF^R3%<{=+sL0c;pFs=7F<3}i?>WO}9w^=9)o-LplqdZ*I|1m+pwYI)(yW}Nlsy$Pe zJ#xS0o^3Hh{8Q!1t;mc!OunzfwD89en8uK0Vt()dzLV?t_gS89`W%{Jn82`=9+0Iqw#A1w}vz>Z7dN6u6c%QnYuv5=q> z*+G^!iM=n_>5$;dGuJ+yo5Y-uC3u~#1NxnDPjJG-*cMapiPpyK(?uR2Wn+VQU(9^2 zrsSDH9~i^1rp@V4oyun+sp7b>m_YnKZXE2KoX8ZC*b!lxE2z`U&5GJWJDi$p&s<`q zT{zjipEP7N-pSt)J{P`AdBNP;iz~DO5(pmc9}(tC@K~x6J5&MH%cyZH{v6bs`G!f{ zPqY0&d`ZV_OeTwpK=+mX_qB!Q(=?lY6MJj7FgAk|iT4Ws_(Rp8Izj*Yk96>CcNRPC zL0Y{v+8MDxdmz7nkq#08FGq$VnryG$X9?`%alfvBZ-%toj+_GXWCw4f)9*%`39fHW z<2*FzO6py&X^S-7&Q{J2v-7TD(Fc@fGO@|sK;2O=DnV0cJ7S*nSL!fcpl*TyN7Vke ziBX%|=cdis8AQQkHw?(W3xR@LkyeWYa`1ghJ*9-cbv6DpT!_m<{ca+1jTg9m`U$q* zwI#@U*L#-&*va@#GHR`84`YKQ<*>={3h$>(L%N*kZdC)~TdF_271B@TN1U#Gq_ER7 zRdT6gnXU0Sk@beAm*kb1MN;aCp(?0-tYm>d_sS>_4S>_&R^kz|HGPP!$egZ4~#w4JhcE zt&5)X??av{1MgjfV(C$M;|Zs&_RMW#@yDV3$?$E?Xl65b`Hp4Y1?%>&Vb_8L`tHxm z#tgiH$L~L1U*PR{a_ zyYI3y)i7$2ntG64=&!gDF4lb4Az<;>5>IB>VR+~o8`SQq@+smf=R&V0M}4vWU<{(4J3Ws}i3a@hb_;>^i5S7rH_e<)H0 zL)FMx=go^zdk{=|8m%WprB1|=VY^r zY*5wS*{M`Qz|D~g{PCtN#7)!I#^xvU+-w*|oWt*IPx)qh^p_N+jJDJnzYB^Ym_k%M zGC%`z;otu(fg>)%)Um%xF*4e{cqa)D{)?32mB1F=@Ik|UCyC6?L6Vz#z1-cinUyDi z=ZC`~34g?}|-px&x6$C*45I6*3#_cU>@A!OP)n5PhUnd7JA^-yOj> z!9c1`0a0~nL}MaDI4k6lRRyQl6WD{K{uUB!%9W!+y(0*oc<%xl)g*4;l6_nRqcA`N zKY{Z#pFcZ~trTi=X26qZ!-s|NA=41RIkX!tG*5ar-S%P}F8(*I=Xs`XyC{-e>d`p! zLhykDYVrQP`FEyx-Q_hU#Mw$a<>RMj`9OiN+p`$y?9YCW$H!IfsvCA=qi119OApVB znwo1$W7$n!H}8wN$XG$# zl#Y&b@t^mj3ToAC>cyJ5;xnO$lkZ1bV(p>|Z~5!FIeu?N;vOc5c{Z`Cc;h7dH5gN& zJPWy#$zbSu8I#y@UqMt~oAG-RvaN{M}KNvOea4cZOP!(IM`oW{b_h6FKOQb+VS_0xGtPdp~IquSwAfF;(7^@I@#U*26>~i zapS&BG(MvdVJPS7|N1IhFY@UC#b2heF~LE$J(SlaPu2y)V4p`NFSc7*ELA-#%7u^F ztAwiB&A#+L-`U+eB$A#;J6gilbsog$#k6iL`DuF%+zi7o+!IimO-24LXWpYHHB$<@@1TbqvM_7m!De- zp^g!HTIA;cV(P5J+6cO~-xl{$9165pk>Xk`IK|zIyF>9JK?)RicZc9!G`JUc*U})x zog`oSyx03a-@lu^cC)iHJ7>KC8~9@E*aY0iwWr4xy!y)&dNIQ#QWCD)qW zz+oNXg$4}};h_ybs>{o;Q77mEO6Ev27TYGB&Ji7Qd{pgT8RvW@=axBOQMWFUz3Vkd zFuTbSvm`o#yBAYrOWBAMYN?Dao zKgxHsKK!>Aw;v)7cogLZ zDV*V~Qy;@mxHUQX>HaR+?)@>tB8YcLmSFEkmxaMmRQ zzrP{rZ=peEwY@$Ai?Je^*=WB0Ex(PGJg8UmLgN;ZgBn=bo(zkD61Gpf*fuP->H&ZVlew1MDCe5>py2Q2M;QL zB>V%Z-1b5ETkP2o0a}_yYfj{}qFqn5+VCV@6s<9>txGzll*kX>KO zZOg@4Rs4+hv6gE}M)qScIY#@}*_3=W*}Khf`T#zxEW9tlWxb!5=}>IhazjHynKb{R za-ws`Ff@Q){?dIC@lTPYpq<|h7aQc3^*M!)DP(|e`!1+i>d9DWawxgD_|Zo1*)Lh| zM((Ix?$LbS(Z#|oG^wo;;-pH^-N|%^hVu~92fUXaI0d^x{r2?mlm&Yt5oCf+P#JnMUm28^yGiVr5d`)rJP&=j0N9HV#vzo{f#a#fsD$)C`{P0Woay35v3sww zXU&|L*{BxFWAhxG=;8|PsZhNi`$X5j6HF*uM$|F>{MV-DL=Bja7&p!g$`|%adT z>Zx=5!w7 zF2_u#jnD{AjhhswfV>=PVc#CsfDb~R>jyjt=fG)fGc-ZEyDh6VU*0YTL@O|!ZCD+0HGo$7@69qJu=pEcC@zOk#MxVbkLaFW@jtpv~_c_ zoqK({;ku-Jgca4blDJnPnohbo!kZxpY*8ZhvGG^lkM#IN!UcwJk52<|jmvHY>;0{d zUz7AZ&mHEJk2%_Y7sK>A1y=(-bg)!W{n5o?H?(X5Ttp zorS8ZJ$5gFX3r&%@_{5I5RE}uPnfK6sMbkePGrSjvJ~5N$2xjyqE{G zIARM)VA^*Ivn-iNw1rw)dQkj5zYPqzN0p%`rRC z7D!LT=`(aQ4?1S1#WbUlWl#TTPGHk;mCxgOlumuP<;?uT&=G^G0vqW?m4GaZeGY#S zi2M`X8zI&=g5{&hFlCCvtzftc&&*z^%xguyUPoxMTJUaYh1RiRu^U^q`c8A^vxO!!+qzDib&g4oTA{Ll&gWFK@}T;o*&z zV~h^lW1FNb&Juh5VGNO%t{a%j*?IS*bkUT8tl$`FCe&-W&0yppkh;H*Vo<~TF?bk1 z8Tr+-S&xz}r=q+V*~l4$B9%+!JN3Wjk4`KvL>H18l&a;aFSv-${BHA$?v zzdWZC<_$yJi$nDADflr%=F; zD*5GgNAcUyQ73^gt3rG_X*}-G_e08v>fOhSBr?s+tjazCzl9>FOM9d@!H&X&gl)3p z7OKk*p`oO28l;xhQHI0p5{L&l|5HDsHUg_AmCgc;c8779+p1PqKYXCcPRfz&1ZaT+ zpylP|pHHNj30lw*2BdT(v=q*-PHO79+-m@zpb}7Lb(MeS?eJ+cmKC9`PI1?J8B#9q zZm2fTcejKr%T#~z)RJBBL@smRNrk)UWQJj@l>~^kKt0)i^knL3xH_uB!7Q=#-=KTs z)?j@9#*X1(PfwHGgqSF439I?ywygIg?f}#Z=k$qN+X_@Og5jb8Q4!aKXYhC7I0Jdg_%c136YFtN16$pNj`fyOxvBAT6UWn8GAiHt z&Vy}TDt72^4k53_S+TLH?`%nV?W>Woce8~Qu})t1AeMGq%Y4Z9riU0zDF0KGbUXUz z5GrIo&JPY~H0#z>U-SC&Zjw3IaG~X09uN=9;Z-;>>zCxZ0ld*(%kgLcYhUgk zA!#{cgVQh)@TViOd< zvr@L^&!~s?6fPWbm6AH>nC4R}Ao)9;@N-%Y%$==}BiB4;qHIpyZS*85kNl zZ4-rQ*H&=U9fHi{e^SlO?47 z7d|1PAKdW$$SwwwDwYW`kn7zmIvSZZyS}`CBVliR&!?5*lwXJ_zGpiP_q*`0`a5B; z3-yfA+a{HOA=O*zgJG@Z8$Il*upT$g-!|E|Wrb6U>fJ{d)vPH2Q*aoyBj78|DX9QC zPVoGB*88vYhk&BD*r$j7W)2Ga>QAR{05w9#?Ta}`qilbfdf%9MZPsFPSK>kdfm{Zb z?^t6j@IY;DUz$FPi(^c~f7c=ANJu8}Bv8ng89@~}{q+=XkTU^mbZJmL@8aA-{CWs< z8`-+1A1!T8u~Dq}6x%ab>m1+a%P}GAvkO zWr7~sOyn@<`d^DNB+k85cxDi(ATl+}jxbf{{z2Y78_Mm4c12)jVFJcoVmM+bew*Jk(L|Bs^-@+#C zn-FcfrTOga@ED4KsUL`-sYxI9C*1U6bbsIl@V%OJtp=!@hiLdW1pJKhX@h9t_B^sxa5AAWc+nXht;LLDQ8( z&@*+`ok;e&R}x>JXOl3m*`T-uuAFZrd`KbmE5Q~}!a?N>;5vb(U&?icSXYEmFauFQNGrh!Y8AKX9&h24;jvE66&bNYnd z^Am~UIYQ-!$0GUsMtV-_->|U7eZs=moM~*R;3B&ce#Q7(#OxRSpcR3nvoUF+ji}!% zWd7F$po4w0h%M5_fw+oLtZN?Hr3T!&XbVvk3Qa#31rHPbbXQ2{gt%y5(3G)|FntB? zOA8AD4Ggwo2nM-W^@8nhTZjM|Hbn!A(cBDwHcll&0nh6BqVohcXsTZvk&2C(hiP7C zMZ$Bt$G}8^NYb#(4tQSMRj~^mGl%TYYm5^WWo6uyv^171HPT~(tO(7^GD#n4ygJdB z&^kJL2!z`2dFoyE`mnFc#i+mU11w@ZZ!Dr4xImn~q(`siuMoEIwaczX?!d!>WkCd!-ng(5cP`mT<+3c}vot_V8YZb~49W zHKz|DW-zl5NV}Gzk)m-n>J=NkxjeRh^ZNCGrF4g9O|jz{4Dqc3BFk#hTedJ2BMLB# z;HixKUXQ&Dc`tRPK`T42WfG>cxz|jc?S4p(hVJ0~afh{>Rq9*%)wUy)i6(tn%DDDm zeUj@E$8or1O4e_+0B~bP%U71uFVI&Dr>o*Cj79z13XHVecqPY|AWCY0Qpt$1L3gNr z^RYAv6ri$_gNEhr^{KI^RNazjo%{6scosPEFWUz29GEv-I1m{M#_|*a%A@-zjd< zt*j9`FrN*)8?X%PCD3enl-@o=Naanpr(88JH^Jo|Li7ITIweNy;Rag|X!i|)M@OD& zo=-vZupd!saAh|8*NZUgM?<4~?vz`h+_7)eAuqJ*fUG2f3D zCzJhcVcU5-YtCllXTs){Yt9AhmeNQzB->*(YYoF=hk}F-JF0^!-!xBzFb^|LR5D|Y zKR=shRq&d-sZvr!BQCxhv$3twk^i~%(t0Pgn{Zm}()l26e4l1!fLIdv&!G%rRy&cCV;p5FsYB}=IR zKW=g6qYFDTz9q5ek2+yR0r7!^?Nj#UWKDR6f!Ywl0Ufdev%@;wXf;kAsq4Q3bM=h_ z?&D{z1p0PQYk}~(a;abC_^*JBm$H;ItAC(+ zbBlK&QCn2FvlWiCZ)1Dbepo+H>nGwN`dd&yMn=`pgQ2169f%5#~tv}Hv-1# ztr;$t^Op_u$p$P~z2QkBsf&)=3m)vXZh^3B$??lb*x!{(?ifwuD>r z^Tw}_(w9Mr2@AL`*kRl26_p#I?M-EmM|Sd4pOeHzttTgry`?$deyYY~#PVVBs(In;sn!9rRtxX%R%~`5uJ)a| zY^Au*Qs8w#UhH+%=6UseDxkRv_PIc6avN+UWw%hb(l!u4YL%y4y`{pFrFv^yzIJ;@ zUGzra*%szwU{zIwzNtA95{+SZKGtb0>upwpDYeOU{`zc$}18ak@Sh{)m&)#ftlJRW$WTy zE%Njsn6}UU&oP?CHHnYui};^i>j6X7Fas#JTw*u)(s^x59Ri3#kc1+r(|cRQa7w=O zOgc!;L&bE;F9{~xw_hUn?5B;xU-Vlf$$DR1_r6O|J0G|*E}^GojdF@ldcxE)q0oni zE-{yAiyA)QIiMoxX(Q~9a2zXy3A^AJhaISrw*Gl4Z38y}2N9KYR~J~i-rfRCf-R%2 z0yJVV@&s&N75JmSi%j4DiwB|XNp~?$ zM%B!Y1cJ4NZ-{ox*;Z$5 z|L}8A*wI(}9KgThtw;~6&bV$#JdE4yW#`EQZ!%q|tt1X+k4V5Oyq5MHNhdta!n+b6 z#s^(1^O9bsMe~!hov865A{Aro%;tIXb?WW!ECVNH3taY9N*$8r`CDY^LCu7*&3XL~ zOQG#idn`F)OTS9FCVq}V{ICz)DV5JTW`3jGVOCGl27D&dqqG@DgBP)$!3Y|szp33N z0Wm&k&{qfiB^Ov^R?CZUi8uVro4(Kti^+>gOx*$9A*5}DbN*`ztBb1kt>gyCr=+9U0SH~H{7OpZis;W;1F4DZUFh+!2f_|Y$zFV~$Z z#Y;r}KCjD^jHpXElrQ_z19UQv^>9K)^@lsvM_}wkOpY##wu*0 zw)iYZYr^p$XPav>I~|=pP@x2Xr0@(nWeQleu(c|NCcfD$hK^-$;1_h&1H!5k*$dvP z7+c2pK*o%}kITSBOAs;Vlc8YaHt~I^cU(E$<5VZt8CdYor?WUKJ$iufNeB$h+1Q+_ zm_ir+{?ESvUm+3P(EbaNmO)=g?<&_#?SeLMfeTkA;(N5cpDHKf#Uo<7G@jEmaa zd2z#jTnW_Ge+m1i?V@!tf_K8|xxAmutDWv0u%9TBE6l7vasuufPz@7tqURi6t31^F z=J~?6g33cxjQTlqxHv03clVCYW!q$zr<>E?Z(`{R75(OMhW&LCn#oB_PhTI#I^q6c z&YaKQm4}NcXS6k`rI%pj*Y>wj85**^vNQTu@6J}!w)0opaLev5ut5YIjepX(+!$Ne zBIY4~>_cHS4O;1}*OK^SY{DU+J^Wqol?XCTAHy)UGIKD!yU*wr>V)vFo@y7u8N|Fe zRTAR@D(54pQB72C=Cy2s(Iw1OfRE8bOPLw5?T5ZZdx(;Y^GN4UfA$e`j|6P?y(GAvZxg|QO=EcJ; zRdxy6knWHdE%vDW!alCm9`nHZ)<`-rAxG`tcyqv^xxf5R@v-gkE?R}fpdu4^Zdy(~ zz~_Qywf&rG%mK@q#7eCViXc!tpWSeo+YO6Nn}XORUH?bT9*?dth}U1O*4gYAL!j+p&|{%W3Dd&)Oq ze+ox(k58${RBV^lkhNPD$sR1&)ULyQAztH`a9SKXIBQNfLNX9R_SFXc*sVtsIaF!; zJ%C~ihK^ytA$xE3^p6I1CJytyB|H;JN!t{^(GMN{Oh8k|UUgw6fTQ?5ZEnTKG3`nY zw;7Jf?{l{U{opw`r{jsWgougUAF^7YsNd>O_(4L29~}H#eV&fD0P$#Wn2zD=qM>i5 zTkpLe&+-CUUK%)vtyp9XM)wn)PZY~iDSvnEg1+qNg!w!bwZFE>R7+A#)76t`oUePd zR?4QgQ_#u$hNj3*bcp9@fG@`*KcS_g8y~dSqWGj~;<9AXbx6ER2xiHZV)Kxfvuf%7 zy<1RN@@Ajlxa#%hd_;> zWw^$3d#;%M&c})&_2%2~92J!C?EaD+P?^>odq`thX0l%hfZ$sq=?8cJAIUgu;jIi&9>*d(>Alc{Skn)$umUj znrO=Noe!qFT5K6?&ZYY56;Hj$Er|J#$V={|-~AYOz9$%3w(YN$(=jyz+nXp{V&~nS zF2n1E&oHL9w@y=fJEQCOrfWmM%S#y8n_8X7+_hA_Z-(%`TYa;l5P;MfYbnbf@!ooA zwz$4@%)~lWuhgD@YC==R9KvF(-W!2_Q(p z7Ko6K6(9=D$EF45Y8VL<RV5?|;LP%o_GKag;8v-a&5hj4)t5s%DIZE?QN&NnJ9 zZF_h5a0lgC*Tys5$q%09cxQkXU`Hb$SJW#Nk*OIs)^p_CP!|rgyFfBfH;-Yvy!EcyP0@8Uu$rUxvT!sjRbe3@RE1|j)8DVzFV;H$P<`C+jj&i*=iJ&ZgI;uGagG)*r4AlYl{^~GhvZY?7` zDgt(ZREPb)11d~7^i)i}6}4i(WX(B?}xi?#ID zO38}2y9ZGyj4=N%3t-qt`2lIFv}Hra6c1!Jq28}pvrcp5Ge)TyDpIjH`6^Ew{DfeV zB;D1N%aW&FZ3KNiBu87o(G)(5D<8K{Uby%yFg=7Nl-}J?Vw9?qiT(i%x`l?z;~ zxVG^0XTr?ZSjlo(B~HCMsLE6+@ei9zH9b_jgS4ti>o`P;Uc0G>r7F)Kl=zmHDhaI$ z@A}z2!B{kZ-rEY42e1hUw@eI(T8rd8lBGgTQMLFH_*G67ACpn!HicuC#%o@+n~}HV z?5Al#!4M!@|7_Z9Q^C_mIBN<_QEyiVaRafZ6XS1@#zK;*QgFQ~P1)6Sd+_oL-tWrzbNt^ezn!!v+HrBR?#Bt#q$IGP1iG%^Q%(b-vU!AD^F8I?{_59Uq~WfBoy(!7ogFQ347~_f{k+} zosV&=eDS8daB2!8z8T2X^wXz0Lr_n4 z+y&yknNF2xaBA36DZlANva}vaY}HIaL6nsxVc|U9NxVS*FEZ8{AltEr^?;=p!O)uC9gi)=k6Wtjf>f ze6rEi)5QEP^HOPhoWE{L8`tWs*7T9yk{QyS`jIfU!c$$wr>nFyR$^Rjn6_E!{NoCL z;G0zTLMV|i7M8DViM3a8?q0wLh!7x~!Pn)YTU&$B`0 z9`?-4n<6qrS#wlRYB|{574JL(JeaLyPxG4zx}~LSMa41>3~V zEzoo*0ry6>79TTuUlXwqkVO9QX@7p*QQ*`G99J*1- zo|S<=XsFQtN=LS5tfK3CS7&IB^}a0xumcfMIy6YyM&^n3mXSxkprD~(zV089M4WY)j;=U-I{UWEc4Gg- zzPUlQEBc;D@X3f_01zSH%2W)^M z>nd$p|Dh_%_^+(TDi)M-+B@WI7JfvvT4srAWC`k2aDHmUmPtjC@OMJ}(D!9wztx;0% zIhF4c(#28Gi0}fnMNtG@Y&-@PE2~<%Y$>c9F5U=k5{lFge|DA9B4i&NI^7yK2;GM_e- z+qJ9$>ouZ)t|p>tRxA#D@N9?Z+}sR=eO0cWvKY)!Q0?1Q8{tY(=fQzy0`J+dmqa6Anc4b)iHvYT($G_{6tNfD1~b{eZ~R zGmZh_^e2)x!bEv4_*!N|MvHtWZM;t}na_BW`OFtJ7ZV)evnJjhsT9#)PxC6 z!r7ZQuM-di;-oo*KHoiJOCC`zl{yC$HAq>j#OUPvnh)b2LZ<3jq<1&;6M{^`M2}$A z+*~KQyh9leB>NAnX2%5qx5@ne4~fGR!!@TrzNzsE5?ZdL>&@YYG19RB)JWfVzusE) zR_izsGR*r2lN4lV!@?&y>!`nc`NfDI0rcu z0m4}grkz5daR~m4#*z86`Z@CBi{bbG2f|6U*w3KBa``U^XByp*LM{Pi`~M^IBt{D( zh&;;wCGwCL*wZ2?Ja7MdVg1AeYXlM~;=f2BT6ae}Y2v`W{}Of-xGoWd9fALku=Bkp zrg-F)%YQFyCnuAOxbTPn;(cPKn-d825P;YJV-2y6j&Ms8Zx8(U8SvZr5^1n{{(Iqa zdNQBVkyqLOeFh$hB^kxkV!S9?l~xD-x8m|YbQNKKRyq-F4h=C#nQJe7Rmsp&0uPF^ z@dbW2NREF65)mPHLzdE^%KZ`k3Kjc%wl0|;`}M(?FRk~G!F})3%p1>@gNG^n$KL=% zE%9QBWe`<>$QH9j&4pMZ-LH!T+{J9AN&@)tcgjbR(A?FgW7#Z@5D>P)vjiGZP%c8; z`SK9U>b0wqy}g2^bxbd}%OkkxKz2*)uatA;3pJ%?|(Hx=I>R1pUVZrKdu zg#K75CACVKClWXi>=ueO2AB)Tu50~@5Dxb*IPwUUf0N&^L?wFd6Je|^Zk!xf66m7J z3GXl~x~+QNBt4(sX_Ck`x|`wNJ(n9cQWR#XLP}+B>HEn3+uLJ>;e_(W*;eDU<}@)i z;s6+`OFV)r_#4iaova%SZCqv=EW6-5YY;-LLy}ks8cTnct^xeAJ$sl2KaiK2)|TUj z8wV=wP=CL&B{}k@XzsHOP;_2v2z+NDP`$Q&8>*dxa*;shqw-tXr2lJ`pn}W zO{S?B$(}2|fH2tx(+8}oNq~)HFjuWjZxqq-D5EpwJK|8|fd#7)kg1U;z@LiAnSaV5LDOLvfpfYS8h^msJb^H*GGYHZ?tk`Vw8H0<1?N%&jwn#g z=42t49i0f{5eF=D0R6S7(}U1TmuJ#@F}E}tU1Fx` zq4VT-nEY~Wy1V>{#l%VNFt*8~!1hSt_Nazo{qj^mr`v`A@MQKIcMI&5A)2)^&aM2| zfUR36XUprEywU_}UBzT}-V{x~5v3TNkrOT|8Nq+-}lxkFS?Tf~oLNDT!5o zS%XB8)MOkF_-AXC0pkpQ=tWlgB=#tdYLg)|$>@5z%|x%q|$P+EO*96G7FO;<`` zI#n5h>z~I`T9FCla4^ApjW?qrRnQgtD}WfMvcQEt@j+#lwpWiIjd{~EZa_WyrqtE$ z0_Q(d*V05H^^D@woTlpM@fCR5C>-ERS~??d2BWKRSLs-Je|B6yiQdw#a{b})Q2lf| zgQI{&Cv$|t_2v~>cnY0+D(&$*}sJPrvfU3bl4|>P0S3yRM9=Y066u}Ys&~@ zqQ^j?%{KCJm;jxk>cbgC_S4=&ZC+-EK-<~lx==fYi5r)o|xOwQ2iBZ5mhr4UuDkCYAi+lF)|K(Yn&IkZ=5A!AAga zF!Ax{*d<)QNzD?_$kV5#-5W;G2i)3k`uSZ2U|h1Yvtj<4FxP%~9>`*>#(nP;?B?3| z)9oNJ{5SgUt2xX|M0mu7iGKR*O?;c(H_JV+h9i*0RcGo=pSqsn=&g~>C^EE(@@ z_es^9`ruUXs~;>?(&dBkj%~Dx{xi=a{MSr?4oukp8dKBlH>K`3{ZKups_}%)LnCgI zbMi6R=Low<2gsLy{7XQ^bIh+N+#EHRsAZt&iy+HEqYi&K`YddPdeV}83FiOiQGvO1 z25HR&9j%7iLr`y`uv1&&8Ml_ZZNciT-vXd5IJB0__!V4Ty++1 z0r|gIwFCw}KWzcw_h$gFYgz^)XO4K-6Mv}tGD*YJ%yu0c_K|_iu5$by`ORZmaDQL^ zP%2;zP0$5TP`aJv2B&R#xX7P6qIhyo?7p9$i~FUkt15!adPzZDS8eff#1uBF8~k%L z;`3tKAOzdmPn<)ALWbvO@`7&LpusC!(MfZ)wjYmnt2}3Snz-S~Mwt70GC8piKc--O5} zu8-?Q*<+5suY0KThjF~fi+Gzx6NnTpE5hDk&YT@K;nzTYrlh6QfyG^hSx-Wgns;&8 zvz<8cLk{)ILEuq6E&qgrIG#jzuNhEm^ElU3SN~^eVSf9%FK)ZIFF=Rv)3PxrDm%aY z2Hn1~_1Yk%s;Fs6HPh=NP3&#+8JXGZrkJ=LxhC*B5tP$|Ny1RMELu>w?`7Qq7yU;F{7HAzAE;!wVIR zZ_v9(;Pxtjr5az7L7EApbqS{M2#?1OmxFRfn3ZeO$Y;Z!$_y+2vGJi zk0qnDd;8By$|tu~l2sgjEzUznJ>4qkY)_Zs=HzP*e0%-Faob&G>lToH!E^{@u!I79 zw_e)ls6C6cf^&6deP6wl!0Jk)d#A3MnM1>zpHCBs@={IgwbZ+JEpTfTqWbA53@r#f zUHmHyy5h97eR?10?HPY#$KlDRyYAN#mx=Kr@r{i_jY1ubjR%ui8+-n3Dp0w-t{Y>R zenZ9*_1~~xy+G|dNe(gpFy&J>g4j#{w3@dZaYts*nO_q@ad-Y{T!Y&B@je+crMN+8 zDT2GhvULothSJ>eV9GRuxF6JFdF4-^Zd9W2DR*wX?3OmJHP>S16Ah$dE_Rw!20z%E zZFs4jrAJrjAa-wip0f1_crTnFGyQW+WtNk7tAte4sP}or{y69ckUzM+f%((fjE7SF z!BVj5QMiJ#6{zM(F0#QHvH3S3G1E+F=ELI`6}%cSHtGP2t)g8pql1AH{l?NQ<+s)+ zy*7K-rTKdIuNyeYk&7>DH8Y2Q3fu54K^JN|R9mxbVrtelzqGcW_0D~iul#y8ZM>8# znP-0wAb-6jc}uOpRXa21*gCU5v1c=`?EW>6;!p45_@8_IdD>4wR5nkdHxbyyQcan; zXZNhDEx|G$;tJ=EolA~v010Ras&qgGm19R@>VBz)q5Eq}RS#69ss}y}8&+oR0spwT z)(x>*uMJ7t>+zT8b_N-Fk~t3x*C|7?;vuMi_*~#}QfE=fB@`ge33ZE#q^{0VIN8}u zgGuyDY)FvSJ#*#`B^OC@G0DjmBq(2NP1SNrEGRik_tf0`lH%0d8W+jf8nrN^ zCR94fxqlmn+y#HL3i1-3`)4Bx-Q5VwIQWF!8D2RM*y#TdRH$5pC|+iRwAKQ)gE zI=cp@1hoC8bvHX*aJN|?Q8OWgnM$`4-@VK+y2BzhU<(yLP<_DtU?m;!kBtB=t^9^AjXwSFh zim4F@7To4_pBoFYH8J~0X>>)TpW%~~8(hzLqEhfzf(2UT1K3yTt-B!t z#oU%LodQZCKlA!mZZ+DxSI`3J!=kv@XHF~QQrb`TIjKByWK?<>uj||GZTxNqn?CX< zIT`t*`!}A=@qBd6_h#Q{Ix-rUC2Q8j9sGVTlWfX_EAv>>s)eY*m!o5Rx zzYV;KmtO-wr^NcXS@c8wSme|f^JZe?7K5gxqNwhaYC){qsRK zqW2g08)% z#76?xGaL&!nuR$}6L73I^)Y@mB8XiL+3Gt{xb8?zf(#=O&nW#u>qmcuqy??D33w!X zR2sjyu4vzyMX;2{9(#<<55}v#RC3TW*DmN=4ECuCD$&?dJYA2e?7_KqG%;rPKA=6T zQ0h8l(p3E3z#9!vumfI*YnVvHy;BK0-=3Fbq2$hWO@%UxROrr*T3SG19iGV2sWC zY14SBI=7F%gO}HiV2fvSc#mE0H+29;obu6HvWs6BAD0Zjph-^F@X*v#`!{bDt>wU0 zk~$K==tz%uKVXH_l>zszSKv(hbSKF5 z6eMpAo?%)jE4R{XhB)OaE(^E`f3}Cjmwyp((iY7z3Qi@XV7G7J2T{nZ_=u1Ow$T~h zT9Wq;ax&&>sOOvIPh*ZJegE<;M(V-UgbSnVn`;2fp2Im%QBQG*kNNkZh~Q)tUTdf= zDUXk4q`Y|}nPe<{Xp9;#JIhL_G_S^)`5N-+Ur)4sjtGhrDc_$#;v%*A5>J<2ZYG!| zHP+`zqY=8tAYPW1KmHrv^RfXl-sfqy(!e9maZZ-}Yp>{Z_kRuqNB8gdRX7xaLSmS) z)*{w8;O2I&cZ9-z_cK7gi$!$p1SKP&;*+l~Fj*qFVs*n&8^%4yp}LcJtzi1XbSe)} zD};rb7kbVCDnio-zB3X=%$g#d@wcHtM<$6!enOKBYD=0| zP_A=c*3Jq+;Iqz)**`j}V~de0CkqW(L^03kNpH`oYqL);sIV8LZ9}E8;TNFV z%fB<19LMZiG0n_y+|DYalBY#O30ZC9&(zgV_)xPOWO->jwKz0ssgLl*b#>A)&kJl# zu#wv<52D4fCA8BU_#JCrv1>&VB>6E5dQo!#U=L}p)%Fmo!}O>WcqvoTo%_5Z=0N}) zj1wtOL@T7)tDwVx^S(8+ z95nKZtkHwPl-u5vH)uQINiReubrQ1@$OxMWxxTDsrAHE{?u2pwh3Gpz;KXhoGtSJX?DJ z(9d$GX78TBv9#urf5wRVUGX1Jn^X?UAgd|nkYrK**}p{8WfWP%Ga~~9*N`FOxeZq1 zK}scHLWbO;X+77uuyS(r{Io}iwn?_spU_yqw!PPqszE(jOAP7X?}GY&zZ_9evmT#e zY67NbVS&`TC}4nvbG$ERjj z?6tW+Ta5Y>_VSpC4Y;p%yw!Ewt-#`Pa$b2KNj(=ioa-L#)QF6kx?n*u3s`V2xjfw5 zH!pPfuIZ=_t!y9p1uy0A-FCVjPbnpLHFwNbZYX6;I@)X{=~1l z2>^Ct!`80VFdO(#679m2)d&q;TuJshj3cb2R!9)_?XTlYzC7M4cm^F7-&SmZLj(t3 z$TA`!5dlUG&okVbL|RYqpMA666ip?&_vO$HPJA0{oh&h16Cy-p9wT@1W>B1lpCIsd zuiTO_GQ7Dyjauo4fPc3sT|SkDOHCW7!5v{5PJ{H2jZ@Is)>76}qHGx4n~5SF=x2xH zlOfM>mY|wBqu}~nT_aBI6U;V75tAm_Nk; zSZvm-&Ug2GWrP?UOh`o37snJ^5q}*%VQDeWBCiwNWNCdsZ0St$|5$s=sHna-Y*?g} z6a;Bd5b07Bq=s%Bx?xB`8U$&E?(UMII~4>$7`j_R=}zeyU}nxczyG_Q^?ZKUdcV%u z=gdCm?7h#uuj{(6TT@K4K&(7DB9e`KRpCl`m%-ftXm%;^Hnu9*fgDe>$7%~ZmF1*G zn16EJk<0#j^{9OY#YP`^7{lV=%)VcM!lfs+lIg8Jj@V~iveaSNkJ$8bo;1oDx@?;* zn?k3-iu|i2SZ<6<%#f`Pw+}=f-iUqG_oO^7Um#Q!q`qoR%Hu^P4%WBvy$JE@ol;mJ+uZ);W)R`p)a*oL=CSFGj$sbu0r(r> zg(N<2zk{GO&u=e(pdBMYhZ~0`H?(99R^?mHPklLZ%#n-R=@H^ij0>1IHT&y%a?nSg z;4|56Y`X4SZR`B$SkvefcnSy{c`l6lyh$3pwjZKP_|z*UT%Z8uTo&bhxqUO{Ts5=}F!f+*qvvO?td?H)LCx30@D;DfX-K9|gm9q>G>L zzw*p(t_pAR@Nl;0O(>+1X=+UF_4_8gGDaXZNKAS80!r}3BtP`n2P?_1}*c$hHe%9* z;IM)AfHT<@Z#I6DT`7`)cc12&kX^9>=ribJW!`E3wj0-ZDiUY}Ew{LVXtR3B;Ng(pDlN|Yu)_}d-FHheZ8`y|tU*w@CDbLh z*X?D2rF|M!Oq{5nP1+|w>!^9U2k~ur7CU2#ZkcrL{ER9HD6u0dM=u8C_}w1Ut}!{? zzlb#??WDe_J>9)-?tJvwZ-X3Qnvu7?HG6JY}chMi$qiA;|RTFl6~9I(IUp^sa}AGOt3DSf z492|J&hW2DgNGeBlv@Li9C)r0aio7|r1XC)VkXHjpOh5l1lGulPkw`?B;DEa59z-A ze`&npiZIeVmlC+l@()VSOxVWhweqY^VwFl56eJ8aCw{oP$mvP6`6aD9&f(=uw@9#!Zzut32 zUyCOeva{UGyS-#7E|a-I`HaN!B>3MFq%iYg z$rn`X=@@T7=s7!!N9UL#=@nE$W!V{-XrYF$Zh`n@eLK)PueEu3U*Wbbw&aaVS|brs zVGRST|8RPs!{?Po`%$gbYu;yghP0rmjY;8W_N#;Y^HtlUmISR;y^~VE!f;)tFVC#2 zXq9h2`))tvdG_LvI+(N&Y6~A82PyvuMmvWf*;f68w_hJI8>WAwnIckgcryWdhrdsF zSuyrIoB^t6iJuP0sR1SHl=$VYfJ8rh+CrkwSTYz2xDgTo6DQTr~L5!1rJE=}L zwTD=IQ``r7DXq4X!uvUB#<;W3gMszCVgRz?32quDfY*0k09K zx-Fer*P)uMAO@9fXBh~7x-u6O3wVMN@vHsRN8OGCMNWR=Cl2UnrdZ*TH{bVn-bPF_ zw){fp5#?8YMlXu<9t)9zr2s<;v0|`p& zamg(F-*Wuw#9+q!gNB_)CJ8ZX9#;gsLO@(4K3&S%&=n>Y?LJ6P;k%}}h0o!Va#EMq zGW;RhG$0m_5WA@b-le71GH(-CRIc%cwb zjbHSg^Le0YAlPEj9Se~x0b&~7Z>WT&nn%$xoz!DZI@X!MD*%U(mgq93O~gR&m+b4Fas1rBDCY8=M%r-1C1?^T8;uD2QFU8tQ|(( z6`C6qqjRhF<6m%Fd40e;Rygi7W%I*If7Ww52Wod_}Gn9v*VUV;F(T* zduVwjh*Bh@Ti^XDkpRDlPFE4W!g(~m{I=0*!PfC=u#`Q!?K7<%HR{wmh7V^FEr{=y zkB{|z=sg9#K4O^_IDO=k_KgrN*KoJYK@g%<9pHS>pCsXdKP$^w?H%@-5Qy7!iyd%% zKUoYx@e*mk^7R209j(b9OGr_6m}42i(sn8Yl;Nhr6wH1xtUuR6wVeYAUf+{aKJqNu z8sh2GXr%;4YjEQA(9!LmSD6;}4o>*o=z4U0=Au>U+MAPfr4DQ1d0$F%?&{^P#&4nh zEiCZwX!5{Rx8IGO^3fT?EE!!Qh$=BCDEhwNOMN?CEY=4TK&a)$lIy^-(BKIakK8HE zz}6qa;d7?T(G!ljj&MUy@o0iGoY{61J*$ZB?~Rn&Vk_S_v+Y-cIy~MXbN>J(dn+G_|>Hg(Oz$!3)ZcD&1d9SB(_NCps-hO?&AsSDJpKRYVdg^I?Vto zo00hh$HI%C7L+WMpBm}Vi&(`35DeOW)wRwJY!$;yE(JHD%i!NSAT}SQ*U8J#T6!=Q=HTp`pPmX z_fuK^Xjy;Pgr^fQa3l8W5aK6uuemGw+X~E#eKG3KqwAY1s>z&XeHc68M76R=?RA73 zy^F`OW9uVR`6aaH=ZT)rhXjU6U&HQBR5$HAUNEZdzUyuy95`8xrynaW zLqC8^T3Te^5!Tl9A+dFY>m|Up;3T)LbkKk%Fct)*&~92jkBCuE;ER&7bLew*o6viaT*5a(2AT!>C0QA@r|jIlu{@pB zf|r~EGxS6kjIlSDWJRzBXz=q@(+xWQsCm|ilH&bPSf^Q5>(Po(*K&9nYdd0=?}J0J zn1S|YFdKpq`}v*y!nn}D6eu6OB!rK$Y=X!B=(^$^QqDj9(4V4CNAUDc?oXoGtu^BS zr2k<;#<%3(QR3^l$T6oL#lcYduHb_Ij+H_4R?^aPKm2>Vi@_V2CQQ)(bab^wZM9na zU+%bWI)6_9Md}f&>=P_AF%orsw-YL18bW9O-Wt4VIxTJbn3IB?zS^C6Cr9~ z_V@r4P*){mvnk%UxhVONGwKRROh-t!l|kYyUFn$;gn6IA?o6m#%<^ena3(8Je{Y2Y zk{u~!NHem$cfqz=@f*S$16RW}NEmeur&&Jd$9c`WxI;555fTqEJg8vA))X3vgsXR; z9F>p#Sm@x*Qk?Uwgl44Y3l+DoCOs3kpl zbbAG`$O#NJSE@|=+M~@GC@nJ#tc0;J=HuBvw|9XfH8c`es3T^$8Z=44!kXnQ>*=M+ z(!WVVq9mq95U0tL@|-7Q>Etc?w%mY%s03uile%w6`6~_KNx5LA`l&>s#mvNBN$Gyk zRhyp#Ta~q=Wk7KKx_Lvzqr#SwwaC9%>KduniHh=@sh5x-qA3cxt{WXMC8#WuIFr)k z%xHfp%8+Lev6;C9*b4LNG;gowK^`*|6I5DA7!&R%5|6;eo5|%{mHkRcA+RGUG?$C3 zuTF80on?qdtsSglKu$9OwWTwt3-x)(>#9RJdhtZsv=bB+}k~V%o zGxLL~48lJEx#%nnygnDqgyRq!$h>7G`kc!YB2=LK)|o{$EUo#~r5SHe9K1#pUB9cz z)OgYQ+kNexIPHZZDsxJlf&F(e?g%dQ@74tw{A_onu5mc=^f==2X=d0sK2Z`$fud&m zi$TxLOf&git88jHa-BzN;+X;g!qoxs)2DM4OH|jRB1YFNUyb zztrvVbwaYHewHo2f9pR$L8OgDxOSuvWE5ZMq0I85NvFN2%gK8h@zb23AJH&#uY z{5-iQiq~I3`JC^S&sp~o-_!%P-?$Ma5o_bp8;p+Lf2H;=JdJ;S#Md}3WdbEUDLdIz z@x?xUD@DC<$DkZlz(kehdVx^1Z17FHel4>teGZ;zVN`fN+aT=}^G~7^Vr3aRcr=GW zoo>@k!N>ic>RpNbkTauqVVoqtaP$sEheYNDo0}wmyJs^jBf(@0J)K#`r?NO z_1(2)j%9vLhL|MH=wZpL{-Vacl=&zmmtp#3{(y7IPR~T?_zPd9BxT0#*_l6^b&sk& zBjKbSU^JV@gXNcxM2VaM#{n4?&gJxB|F4Z+v8fZEL0|M7MsWb5|FRB7Z+! zVfH7TJkulpvF$Xn6z;F#RCms#7u8lydphvoVi2(t=>*8fgMOG+n3LW*Y$0y+X;!+Q z-5T_YJ^}Du4DPF14)>D-_%vaA>dIQ8%Twp?4fA|cYWILwAAYbliV2(DrjEmNWYC%k z@$e~36sG9Gui0?(o56m(lM3JFHzl?@DKg1M<$TvvZ<{bMV~SPx(VPOw5952(c^H{# z&N$S3&hIB!*`J9|2&i0H5!k^P6uF>I?qD{eWq=)v*+`H=%yj%|%U{zQ$odzT`&={> zaS4~TS0Q&;#?v%#p`@$|&3@8-K;E6oBbZs%ij`3e1M)dx`;Hzm^eZP8qwE8#L~_TB zX{5EMBWyiSE|~g4M|%7`;GE7?@1^h0dIyqc_J{;&hSX3Pw1BQko!an$&JhrZe3-q@y z^w)2W(obs^v&dN_WXP5j`f&V;6WVJmEb@c9qKRcr9h8ZJg9whm@LCK-#TCFGsD{c* zW#}UVRlN4Xcqfo4AT=>7_w<^|wE4##J>;5HSg79x@H``;+yXR{vo3d|)ra<5B4ypX zrfSt&Bfo%kt>KY=YZXBFJUz3bH#ji&zSs7xv5mH<7ltm--ol_UowdJCOLHd~|;md%+^j z4$}aGwi54G{BeC`b4m&7c!~05WYEnS7!7(l6L&L1Z+$q)o7kYz^HH=tWUrh+lnsTI|EAO9aib)F4mu z;>63Y0Y&+;Y@}4-w}x-UugD5$fOvQvv?O>*U<*+5(jd0v<9rmT)2pTFY^7ZId<;QK zn;~rDf;^<3+mru7;gkTqCfGQ0EdEt=?#w6n8)lZcQTO0ozx2eN~yCv@>X++hWkOkd|OpTzGR9ozx_g8<(@ z@!67JWxt#@NPa6H??9e~kw?-1dAVZGLj}$+PQ|gUmDHG}*`RC~GRaOdR6gr%xis~g z0Pg6#&i~y89n=YVq_{az-m%bh_DYg3;1xf%(j)(a2VY%72#Hnd*tO)Jr*`cCu{)yW z{hK75L%nTEe}(MAfBnQ^4`)HD>xruNpVfVF!3`$19)-dGuu&VcoBlH%T&T|TYVvxc zg!4(x*o?9dSNFWBWtLCF4pt?|;}!yKm?R-BGaTmqMK|z(O1&>{mGE?e$Crpvn-7Eb zDRX{Vi}Cml{ZP@c+Q0iKqVga}!{-%|_7%T+!)}uIsY=mg$CDeav3%)^5n29k#n-K> z3o|HMv0^-boEy2gjO!|dKx7YpsGY}pB+N^l277Ks#Vr4hn)MERy09vKBb10QR*JCq z8cgx0!{dzKjAR0N)1Qs-dOr$>(Yb)<+=n~!(-wAV|3p=`UsDay0EyT8LSK zYkSucI`!X4$?|UVBG`B%AhDu9I!tuYeo%^4=QLW+rlm#J(J?~Ia(oY^_yh^H3_T6( zZik>5v>{ZtyXoKYXDwSo4n9_7ECYSUT)%$T_AwaX_jGz18lbxgjuJeYG`7#1%Rf$O zSK8(&RFR~>KJ*(;fgrLPn%7QyXfSSl&5K;61BPwR79-8JFmRg1=0dgcFOUc8J;fM{LNcf z@0Fh^&3x+TN3JPixPe}c*3YiJ6V&CrrTSMc3Gk(p(3m017F99$4lAcScfPQ%>L>Ky zoidIIM%8;$LQDO(@s}naG`u)idu0gZ>8Zml_=)2VCdkKdsySn&=&u#r%W*&^W-{<9vr zDoKB4=UCbnVl&BD{@;EdN#ce{|)`yQ;x;zT*8>1>{1zzr-jOt z446r*(rkAp_HyN&8(JM&1>|hB$L1+kI&sdFD~L+k|Ni*xSDF7>xwS5cfM7sv=aG)k z|5lj_!Jc?axfwM~Ri|SU7V~e01&~&y%h?WY=qEm2F(~#8>-r;oztbrGv z-YH-{yE>r?dUs<=snh|S$N39Pup0Y5y<2oxkrPAe0_y&hxjRXmx{q0B?aiJrhr)4g zHyP;Kc;ni0qQwwH7i24RvAwyOKeaF~$1M?zRJIQ|U zf~X5F$>6nUogF?W^KGB^}4>HQ1hJ3MtvwUR)bWU ziaeFCf=*V-OytKGY?fay>%Cm@>wVt>v%~3Yo3|sajN!mgrB!$t0~60?K^20gD>j>N z!8oF?fxLKx_vh3>wV~l(Dk(?`+^|jE@ftB83M(V6cFD5RQM$Cj{A-!u5LiQ9*eUbH zauYOV4s_4U3299?E~sCs86N$o^~mZK4Z5oHo&gBZ2sfZfQpf(YD!Q!a@G~?AR2WF5EQx&(}I;ZS_Sfoh&_p`M@a#HIpa=Tk6TPN3`kCHet zZyZzy_37qjN|XYkgS%aO@b;aMKhK(p<3V6c;wL0Ll>PEX=EQN`xAMRL6H^4y8BK{&TimQ$0O2;r8ek*iIxg0W6d5RxHO@A?;DJwS7CV?L&($F z7wYhn4=fvScDY=J+tJ0}$+<>}LL!~ECOpkq z@y^NMQTZCl<7*_9%*Xl4$KfmibcxV_F|JhmtPg$HxBUGj8lHYpl}=RAq#&C9A3@zI zw^qAI%{7XH!J~;yG(S2T=G}Y9ZNP=s>$NJQu0VZ@*e?K5YDOy1aSG)YvtrR()7r6m zldTO;D?EgpumkGdo2T>30@R|eXA$34U1!8yglI2&9UGA>R9dY8^)tUQbq$+~(E?0Y z*bn_4e7^V90-EK}32GwAuXji|)8T`C0W4CCtQ>81!Uh_g(cey<1Vx3*r0A6_Ix}hA zH8TyY4o)dnyd)yav=tV-)ow*y3m6%pSO49=JT4Sb0gAu{?kOwP&Z6 zbs)Tn{mQT}1Z5jj+pqI69(!Ks&&U^4Y{1b6U~9y`#dmn`$K$5-L-#b=-k-Nn`w3_~ z{Ej7bN{1vw#LiNXo|%8j#n!FT{r<=@7lTiF`&sMc?>-zCR-=e>tKovZ zD>9A|7j@Zb)n5*twV^%lPA*qzsaBrfl;L1|vkRe@@4ge)z}>8$)|sc%(tW-1EK=0C z$1dqd?tHCuif}MQA@eHl55r&H?n~g1GgR1Nh~^7MZA$Zx#+;kQANB3(Ri0TAJ@`wG zO|^D{QZl3(G$0-{$Kp#JVU1}fcrZ>ri>+y%_`I3{vxAtU(q%3o`~c{abEmA(K(*GS z(#AT?Dq%brK`mc~*fhX7dp3`%Yn1GlH$z{A4oLr=7R(QQRT!R@)SLyVEpdfojTgck zP0*{h-6q-<*cwLguZ*@$utkosho=E^OpdJ5$J1wQ%szEj31@p$1FJ(&qu+2**BkAj zjC=ixlET7eBR}A0`vfQeH7iV2L8C7H^zo?r3VLy(ZtG}!e#+4weRX)!{Cx>IGS$oV_t0iQYlOT%ZV{*)>dFISf3K2Kv}MMMzR86qsi=v6G~BRg zi45E}(Dah2$r^Ond6P;XnN70U;zIILvC=1KZntu{q8|e{-9<88+>q|=bFUc$<~*HO zMGu4*Hv67l#PuejsWCd8Wds!`ZVN zm{PwX>*%VFqtV5jE-?EK%HOb*O~HVfUJXnAmcHAvvQJG;P|W6}wn27Uji z2&1{N*q}}JnhW);SI*|)@FgKB0rH_YdpoN~j_BXe-K)DZ)G?sef8>GoJR0~m@HEU@ z8OP$uqp6|wRVd!!9gKB-2P6di4N(doCAqzi*bTwZPl!Zqsq`|lO5$26!(wT+M%roU z;MFv7C!_Y$KOxafJ5eePvsAZF9*_D-zW_b|dtX6Bfa74i#$tp%li*D@GNkCCG|PMO zUMf?d*E@9h%=6syt~qUBH8saPf4DIwBZ^2XcINbZfp{WqFM6g_;Tmt`V%WyQDowJ7 zar_}YG;)Zlft3a?BzTh=gpuA5RIQ3s;dEI9TXj0BAZMvie`2D;x&vBIoKfakuAgsp zdJ!pCYI8054Y^8Q?F*B4yBM9fGwGe@?!xzdk0o(RuglB~$sVj<@h!KWi`hW1KgB=c z__GW1JV1wVY_SQZ$8phu)=PG|BYlssGoN9hJ}6+3a-qiETS5ZsFrfW-x5o949Y>or zdrBR9^pX_;SESO-`3osj;3+>A?st~AaV)M%cc|pvyAjM}cAO#8dG+#_R44ZG&V={Y zUf%csoS0dWADM;~owTEIL@7#{5eBHtNTtf-euLgB`&c5y-|av0=p_wF z+I`qmPguO6_A0U#dKnxS^dv40h%CblhO(G_CucQkR-$mMNE!@s>SJi=%G;b z)t1#(Wav==a8n@`H}24)#j&wtilLBF)2VO&-0jvF#9IA)kIwN#d7cj#|M0$YmfB%$ zHSq=iymh{Z0hjJaJiTb-mig$64tXou6XhHL^&T#mm466qUqhZGR^KE>q3}g`c!ki7 z&zF#vmp#9UoNdE`96iui_Qx`r52RD99}V;rElt!U`xz1xvJ)K=$8R+aTWNb>lpkM5 z@Gy>$r}K+W1v>njVrbg2+n>_O34Da)CmiqCo+o)5hI4XcDZJGqNZ=%PzMZWhaL0Ug z(!#m?)s;66!+(Rs(M?`f&#_i=H=SR{BdjqZnwjUbn>uot9*DC6$0y$fE)wz{y|h$% z9}gd`4 za`r+>O&%-;{S&7*1n8k`fTJpa(W;Hyo90z-J}u6(mBn%?fMBr|$QL?jciub0t}Y{=r17hs^6#iWaikWNxq|FT*u zt#>6*EN0m~~ z{`)j-+D04)LzAGgWEy?p)oX*9=dO3Vm(B_^An0BsQ+m5bJzgYn@P}W@{~Ghm;O+*+ z?eH%yB8+?_Ev=u5MK;Qymjpr8$I|;emq=E=?YAWyEyKAH_&-S8Ni56AC2%KYrFvdU zmoFwA8Y}<(E2QO?pu%qWURF<8&*jZUf_qKA^pCVck2aSQx%j)Hb@GfjH@;@57GigI zIp|BHmfJj`cG}1wNEG2!?4tjZR!&mv;g^H3c-O4Vs{tscMP}aHP zM*3GED`E3w3(j+}TKI3|G%tH?0>8RCQxC+w3Cm$2CG~uxaqv^Ja8A%{vKCbfd_`Ld z{;`xNEs|WjhGYuGRWLu#nvUdA>0Akj`F-Z)8uk24<{OaQuatB8`f0U2e06nE1Nf|? zMx_kDd;CWdn-%sYVnaFS)PjLTOe6%x7s!+4Oku*|p|klY+vOPB?rS=;A9^%}6ya*l zihL`|k#zVmdPiMhwhP37AJ-`V#fhKZowpRDfnsmCZ|2Z_?;djw2E&6luwQ99tO?kC zN#v|h9--s=Tc+f5(g^W@zg}ukd>0O)gGDb$mK0a^)n+rxeO%QM^V)Hqws!ACJ&HB{%Bel)ia6ad5iW*1~HwDlooGlldpEP9c)!u#zvZHbKzue zb>$wleL2AhBWgR_?T67p+pU59Pw1qpNeBgT7SnYsp=EUoZe_B&v{GwAja?_}{w~NY zpw5Rfk^7qrekgGZQb)hOmET#*iP9;EV9eX~(L<`=2mV={OoJGj`Yc~L7WGc9D#A$v zZBhr3iV7Og^jpJ80PRSjR{_`cCWRz+dh(`i+t2?S&b^YeSfrJ8hUdxIK566QT6mQ> zMA~ArH~&4#iQL8+pRI}3?ga8({9TwWL`{a#nzWLTg9ndu*|ZMMtSt)Q+W8POYQutq z?A~0grr*JZw)hl~E=sNG-wsAQMPnN_o|S*w3r)U!@J_uo>M{{`kH0_K$ShDs$>)K+ zK3+HDx4>8bHKJZqPiE}ILu4zG8U&L3cmH_8sm1v9;nvUpy&$yhrsi@A!Xjba$8rd) z`#+b#rq?TIFApVuygkP>ChL~%jZ=`d`Cci$z}Xgs9XEV%aU)jdkh=+KMT_3X;P_|( z&&nV{H#1&5-js-JI>mIwiI)G{8KYr(4sk1vkOp=h{?3Az;(1{Qn5%($)m%==j zvbpm?1g6Q{#zBa<6_(WhPWs;;U1b@nlNv~p_3OJ561lJ|k(%+;O8k*|_9Rq5cj+NE zz4A1+KCI&ZugmOnTVuy?>wjfL;Oy!2s@vH&7VrqE-z7>eWHBq$7{XvE6yS$z5sbXP!YN55=BozI%obQ)qmZyu1aN zy>}SF*o0PrFKcC1q3x`Tav&A!K~|dBPwNB?4CKbS)AnD2O$9_^QR*K_#SFKe2kBTW&+p zj-uVNqqHP2lc2Hl$htAabQ*9>1GbD#DdDluUT}>3mR(Qs8z3?;R$uJXeyG`+IZgfdKQ4jgFD=-ce#3Ma6erP_&mQc;=g8>&|hD z9<0LT$O3mvY=FsK6xz-)Uyq~u`h*CFj`qDN$pcAq7OwDzT;A9;Vx0Hv()GNr!qp|A zTAFbz0h_M9V3gTTAqCWLZ7_#kf5;V^@_<6|538gLlKuVDlo0!P20ikU3^ys66wb=9H(cCe;oC+NLp@yJ4e&w!29iiP% z(cSz%-MZ&12tCzHbSKKBz`(QcDw$qk9b!wJ*<_mX&w0-R4)FGDL+?QMzLomTx#tbS z7?oo8gCB%Vap6G|(;(OVO<|C_KAujsCkD#e#(c?MV_5u3+V6HqtEYlL4FB^hJe-ZgZTLc z%%1)#p;<|k9FX1?8GgCQVHl}V>Bw&gw`_vVj;;U>W7ocr<4wx=tGShdurz9%_MZT^ z`G0BIHybBRnC!;KEoUb?plaP96e%Aa9UQQTOSbOU;(7Y{FoB%N`T2|7#Mrc!A8}^` z;$a8-wBejpg>>qVhn7RST|Nd3zcVeEF>mPL^SxG()v zY8Dj#R}e2|H>+P6Nnc`PLfSUXAAN$v_2L!h=uesH0AZP)P4K{^lWgDi-7&rTFUN%> zfm32b$g~gAMvA@2c887OGpeO=XR zxZ+Vh^1zkbyc#ro&YL4%!Fl~tp2+s}yYzzf=_?VMewfVg577NFgdaozjHd=l!&09B4uG6ol%;ZAJux7zu-LTcZ{qwBYYs%#$ZuB=3^Yj4&R zUvLD!LiOwLa}!6r*q5e0dDi76q;xPI&ZhBxkp0c>7tZ2&t-h6VQ9?@O1(%tiksH$j zl!nN_aR#+hqy6)qRaPgYaDn1)y0Xeqeabz4OcwC5DRS-QPW{l?O~GPthktRo%Ue^YKoxW zTbWAd+tx5(Qnk|j!>ryhcy)yn%Jp!fv<~#q{wcLvP~_V^?#Va|mez7RKL$7QMG1(M zUpuUnKIacflTREGvd3jEX|&dKAmx%OdL*De#JVp=Q)O3CP5Z8vm428iDVB%OwIcSf z`+j|5|9(y5gm|zsqR(FA9hxAHyCqrX{A}vmXpYdP*Ro9?p+fcC8qCCliffHOep!LJIAAnIl05^b zuTS%p|GAUMX)q;0^WyAQ!>UO_%?bPYoIrVs9~p>Tpbw7zQXGD#^8f<^Uh~o)BDx}5 z%BU}Yp%s|QXkb>z7pJO=gs%@qO7@_w>b&}lO|t?hroJROi2%Ky7Vl;!d~$UeJs3Sm zsb#S9(8RIexW>B&$JngERx70-wR{Do0z`5@fW>wT&R4X94N_xZA$jl^(K!RT8NZkj zK9X3H!rf#%C-%Dbq&PGNkHp{qut;dk+u}P?5ReDNf^5+iovD>;O#*k$=by$o{{$dz z5R@RNN3!)lcbUL|x}Uy%>c8q{%>H#k##Ea*pC~=~k|^B>h@CDF#CFPmPzKP6q7M%b z_kY9Cf;C3X@#wPzXr$^_WP#=NOB;@_xFV=SrH4T;m?AGzSrU)`3km3;bBXn@7zi65 zNt>As;xfPJKGzUJV^EjP30k_j{O^)6&vEd=jh~Y3cb*a z_!rHQYJy}Ro`VK;H#9{r!|{pE3*!Am#V>dodkA-Ha@c>e5plN&DL2IKS=uM`r0kVh zIB=|0c?=_ZN-nUON_K#*L=PDCXP5nyB~&T|%^oX$id;Ll|5EyrNKGTv2;)LU>#OdM zqwsiuP(u7j(@TpXqR2n8Cnd@#t6%P5szX83Vo)Irzw9g}>&8Z~lG0RVHJ?bV+~pd~ z@L7wpbkwN12(6YHIzR>D29AYli@bVFPYdrdPj}VYmjk+!el8V8m|113;Zo-!oY*^d zD<*#?b7Ju6x&T~89YFHlN!D9ny_eOBYPl+2bR*fl<3xE1NiR1bRdm>fFr_X{m--0l zL21O4-`6Mw!dXpqxB=;B3Va`pL%!q#<}Lz9Hn0B8_ISi!ObuS&vI8*T=qQ#DW8bCQ zw9aM7RO|8+t_N^Q#D%!t(hu9&2WPY~mwzecCFgi%0dA-h=+FjckkBP_@K)LV$J(CN zLxo#Bb+<8c>hkfD+Mu?{di>ggYYqJA1#z%sR;4(ZS9DwppwMU`wqUHGAcOwQvImdd z^l!7vex$>bqlBH;Cc~>_b9)1hB=F#puT&CYnTsn99BO}s;dws-#>XL7P`thi0*2#J{qnHSM zT3SA=?S}aGXl^o=58>F%S60#5Qo^?vVr!S+)EC9vB5`TuTO1)=Z_wG<*?TEvF!?G& z!@WEximoKn?-B0*!rK29&OL9bhs3_0<%YH_$5@`#jv{;hNG6$LJk~;Upi9Wj9VSeZ z_iX$IdxG}SXI-ybNY{~CrD^DAlLE2QpK5_YeCmt?zV%6393JK@ppCegy^zHl;L^>{2+mrod0V2G5hm=+y2 z&YGI%|3>Fu)aI8KmEqHg4U1zju_#SnlMnByKb`Z37GEPJPD^oxKm2eYICk*KO5Sv# zCmpg&+%^+5knO`1)&bAP)c@5k`ZrP%?~or&tP44_M4Je2P%*hZ6pM^czjNuCeiJ}2 zQDDL$k(*F1kmggiizL8fH*OI>zp%jQCUC1QM!lCrI7IJv_-5L5?phdQIK`h@&z?NC zoM-c+sbDVI67)5(o-6z?&~;(Y)(CwN&xxkWNM8kWT;~Vt>Eqp)=)|_shI3KZH6m{d zFQi*>Z&XYaZ?BxYH}`?{Oh((af{$A;BZMbsaJYDRbV~vkYHlo*Hs-$71(e$OctyoT zIGCErjeG%`Iv>CSz5T^XWGWq_hc!TdacI-?{QBXr2@8rmY#{v;$m4C#1tH??#0cw^ zpF`rwuk$;|p(1KDqQdF;O-r>Ovj@o%v8N1i0pgBQaO+HILuxk6w-68H%2h%aF^y4i z+#m)-=BFkVYAH!M$KN1Vn5GY8#`CYu@4dd&n4Z#J`ETh8^GndKWUtKKZffU0fB9ub!$cHlG(7F|6k z(o@AiUOCWwokIN=xM%KTV<6E3WDn=s9JCDh04$^DO&J{Y`JS3S>GyUeRWIg@zKQSx zm>k^J@cD~Q6*t8-_K5SI5p32lz>-q*%JKQl_brS1Bt6g}{O6HFSiS!=Lh-}Ct+PFJ zrpem-D;dg!%H_RXO#wZ{Slm^9A}KqCixFwlU=-#>KDV>=>$ne8W%MMIb#Su-nal{#q>QnL0hAmL^~7SNi~3MrDkCw_|=tZyRIT z@xoL}z^^3!(=j zF~NoXpT2#Z&n3zmyHDZk{uy|}!g8Kbc;n_Vhw{sy3~Hrsj;Y=#1q!AwBEw?Frw%$p zqW~SRJCr8R5`+y|VtuUl^F^zNIne$e(-6^h{hllO<9*h&o3%Zt3Zq1r7zL+-Sv-4NT`DM+97uITSIz!%f7&M*Fqz+>by7m>H|xA!_FVKOu@?y*=ksig^hJYS4wQH|G}}`k=3Nt4D>Cx z82ZMp^mLa{(g~%p*;4~jCNX5~K1^r^>1YQv*MUX;)`0#CauaBX$np9WpIanly;o$b zh<$!-^(o+SI#=hKFxBa|6}rIR?&}Wu*?}wp2R7v&YW-h!_pW>Yg1grJah^3Z=XuV0 z&OZC>z2C15S2o0up!U(X+L^lfK=Rk=VZiwB%WSc64Gj4gnr}yBT<-}$&j7rbazD&U zHjRs5o9Q!A1+Iw1fFBwUPqgzw;@kF7U6MppH|mCsu{D2?dOy>3$=<5r;cr__UAFws znl02jEC1ks2VmGp3=<0siM+sxaFK;u=6;XHy z{Wz%J1Qg#E@wK`QeRgoo%7WKD!;##1DNbr`zrr7{z;Cs`jzz)sh2VgiJgJutW_Yr1~)15U&U6r2ykW_^cIzX72B!aQz*+Vkdm&d_v=ERISosqZbt@#CuKHhqnw zcz7>KfSuAhm*l?N*k3wILiQ!BT9#q!=OonnhHwF{oQMK{xIOBDV}|$sb50u!)>}eg$bm3 z!?@b|<{SyTkzJOtST1i{MtJ@X6@4DL3^x_nhXQ!Kt^ku>B_KLSC_b&&SBbkiBD=-< z-J6MS{FZ-l070bQXnzi9?EXASsimdSkkZBjg5Lyhh2h7c1>dl;iRx9#gg7HcHDgK9 zzK=b*StvxkyGmBF=!xY=d@Xtv8%|t{#zojYOenyT-d_yBW}Gxk9BafTl}PLTNAeQY z`0;;{yuz$jt)3rmLeZ1^fOpFJS(#2+kKDUbBy`?U zhGDI-XM~}oX;LK0=7v#Q3%Q#)Mi|?JM`c1^<~Uah9;S@UZ}gi(%WE#i0pXh%{m;{V z?7>v5*GpE!R7X^$JVDr+(dM`2r{+v<|PYM#ADUrH9&z zY(@6b>sOCnpUJ!Et?G*B+`MVq0i_f z4uL{jO~~X_81_aB3<`+C8?Fvi#4&K~eNUp%Y#2;7bI%k4BUu%pPBDD^y~5usI4qxd zn@s%-z)u~zBXYfa>zAy4V2Jd+8o4AeuoxM*^#tQq5rd7|GY^#Qgw6J}?%lQF!xNwG z#J^>1@Xx;Uq_d~MT#GlEozmArJV_@zn&6%{F*TfceF3zUvTlFD6(kXmejME$y z9am>qm1-%Mm=U>pZ7;d>9I5@-rnwBo)E0jH1$P4l#Kqnh!(A$%y^_7OT35C4ud_^Z z-9#puP4lA`OOceT0sStwq}*wx39D&z8kSEr=!3hGrxX zx9!4YI$VLIa;2seF~7hl_9Y4XKb)>-u=)IVgc^B~k35YUXv9Rg#hm1UukN{pl5jF~ zrXPtiRWM_QEbh^`e>hX);g@43u-?gLN@4 z8|w;`M2#RJlh=43a z-kgotgzd42oOiGTg*h-^fhqjKfwHE!6gy4xtL{{)BQPL9om&22BcbP%AFAEv1$nH9 zXyL<=zfe3G_?zkNcwP0+wmz9OHET1m7>3qc#RM`ffmI za&Ou*IdjUNx1E7T7o9-DTB zFz#iJ7#6LT8EOgv;7R$GAkOMTL_hFGN1QS>7YBzSCA>_z-PG2+Tr6|U(hZstjjUmW zJ1uX!JY1N0LNEKL^JTvu0ug>%VZW&mD>iq3t*ymKGJd>JQowN$2fv*9FA&P(dc9E` zG1xq7F&Awnh;Ykkc|`Wd991O4Q68xR$vsb%K|5)?UEgwKFX+yGN8jc8`yVrkw;-<{ zXOsR!X)0mBS#1k@0If58pCrk?TkNskt~WyEPBTMo1Ru&sDu=ObgGiG=ue~XrFP7?OeL)AXLcNYtt)d5LV(p0& zD)RcX#e!$~#rma_JFBm(TIsV?wK3R74~m2yKV7Z8+X33ou!@{9_D?|{u@CB4XxBHF z#!-6?!Drrr@SpI2D$TtT6$TzPv zb-P3D|N5%AMJp>_sA!yNbkeo!2&{*_+Ufk+$p)?MjEd8Z+{W5c?|@1hz<%86aF~8+ zL6+0}lN!yS;i$Ip!I}R7cP`wM+}OnUEi%Eh4c6G^c_HuO6#0dSGQ`5l153-^)SAiC za1X~V7nNy+^5$)yD|Mynyqe=9T&PU~Ds`m&yCJUL*JCA@^qC?r94N6I_0%8Vup&V` zMQHywmxXE^RPxh1KeC@%`g|-PoEEe-NSKcP_{~BUAQ{{g}fxmZ77x+lk-9t!?S#V)ig2_*~f6B(#%%izVsau@rq zq+a;Z3>YZ$!OEr}8X0xM7k^hGlgFxp@CQMa+aFzrtd?%$C_pk5Zr>CBrti~bh8_Tm z@dDaw%{qnPyDXZAxw*dutl>>Xr#twQBCuu7ZI_WT3)`-DM2Dv>9*1Qm+4X6#S0~4n z)4&p>dTf!`{gwAI-QG*&PJK(~;Q82ZqJ-u`ntatGGCOWD03#NJJL)$-Voohc?a_hP zQJn+^nK^;=Xv2VOz09L}VJ~xGLocHCEuS;gCrmb0%kW%QKiYT;e@8Jw;~{KC?sRJw z{OcE>^?QXe3MGPQ)AwI-@;y>ohAd@Xh=9il+@Shu47?E|$V!E7k#0h>H-rTw6-m>; zgb32_2a%U;kk{KT|D`f4g%0h%3Xu`j4lnhjT@FcZFR$ebRVC^}?*ok&`7Tm}1{Ma_ zr!jRXN69Lq_m63jJgZh}VV^EB)+t|Gea_A*_jJjTVo6Ijtk z*LOU{JsM+VBjthc$v-ICZr7mm6NLCrkK>$Ah<9g}+}_*c$VWt6f4&3$^_W_wl)MX_ zIWfw*pX8tzQql&iVwUaS_KW5h*tkCx}A?_gtcpoflJz@T1D{x5fb$mi| z-aC3?{UIJ`+h2c=VP0b<%i^uxR{~|v!wrFh7B4M}qg|o;44kqopii$jNsir~n)H!n zr5(CZPT~6(!L^U_c7hI%#S*c=ar~hlxw*L?l?~L|t>O4n7hgr9?Jy<*ViTTT?!H!P{McQ+lrk1^}*Ti$nr)UtrpMB45pC~ zSv_Yc2LrNyF}y7(Us(r3pz=9u(gAXtxYo#<4~tLLXD8|+ht;wAKOauakSPJ3e?s)d zP|0J`xxZD;fs3?3rcf*1A25IIXFq8W^ zP+9ODv4Q82m-yBB^&Rib+id~^-zQZ+8n&P;c-#I%raM*agO>v;2@`AgG*tno291C?ULC$^w zXnZ$5^EoZ?`R}IaK7Y=?twY#Wj|BGI0A5!sCxW@8!F-ahekFl#F^x+={xv&&IWM}V zG5PJ8C_h~9TJ|M;0##l1m}3tp4NeB2+Uzjf(N+O;1I`k);=(*0Jd3ISP53>e`>B(P z9I!T^iQ;O#^5Kj8aU2INNXPv{%U}9~1YdMa9t&)KurgM84F11R>l-vc@3ZeIh(lm_2GNz*Y11#_Te624*N#NpJzTyKu$ z(VKq^r0%%f)Wq#ec~zMme{1Um$xk5Y->RkO4R)>GT<&|tWLGzbCu0}iq?pxzz65$5 zX+dj$9;v>_3eTAu<4)QkVq>M&l~pkNx#v^9Mxy5Mm<~uh0#0B3<(r%A?%<4#;R}LdY44?*a)u zz5R45{ojH}klsGBZ@_G^+^7${a$njR?s1)yiD;aC9H%P5co8lZ_=p7Le=6cFp1HF> zz*SD4cso^^(MRBU%cm$|%ztoakNu#J75JZ7d#@g`rQhw++cP^8dd&V7<;f+0pAGB3>JioyMuCUnH zOI$-K*&rR4zck6>54}zoFo4Xh&dfqFNO+D}Gb#&)oh5fVlUU&cSP(~|Aw=+`3v}R<)ir)QTi11t&YpkY-=FQtEq00 z{8U}#0^9tkBe`H=9|o(kpu=k|QK()y)jQ)QlaZ1#t2vW0hgnZ3o@#geFKqrZH-X;r zCqEvG#Y>9^n~8SPnRnqLd+PmYM|!-047U_PiR4&68Xsprv97md9Q6mMvO`YaSa}Jk zh6ciATVk!tZK}r)SA8uRmG8NN{mHW@I9~Vxq5V}xCgq`eA{;s`3a;Hx_o`D z%jGl+q&7b!Sn9p7sU>=Z##Z4l`e}v-qN2#;P=@GCQ(U^*ulWMyoe8-zSbLzkVN_Ix z1gEe+oqRN^uu%l=(}$DaU%$P%F5OlK&DkT~J?RSG+u8r%|E5FZjxmb>-L<2sjpvI% zR$zN;Cs>vyD2r%cIdf0Uh-6Oly(h~<2rpcW>>K8m{`|H#%6-WVa?lPYD{M4Kc_aA+ zy$Agp(+Spl!U5X)^A-p!XFm&x{Rsk}x3(ypwdw!(9C$vG&g)@4mgQl+=3%oJbVOUW z+9qufCm|=G0!s1}z?;04oF3}8d`L7I%=o@uLK5wFv2F<&O#85%Av^W=$?n@}Mqrqu z_^p@FkxqfGQ+Z!S*0 z)ia0{Q8{X=PP!%gtJH5oFnK_ry834J=V`s&5?w%iECoc98pQDG%-P(-Hz*er52{JZ zt_HCy^L-VY6$*~JId44-w7d3EqhI%wfY0VTmD!PW&? zF@b9WOb{Q|0Z<0$Z{ZRzpx{wVndDVq{lm>0Tv~*+upRV!fNH&0^1jC4H1CqtgXQJn zaBtSVP-@zVY9g2kBwr50|AQpaY(J8tbv;zD1xf2lrst@Mr0JTA3>DZ>oaZ7-(&Pik z#e!C^QJ(xA3#rr>N$(DSGQ}K z3oT34^5)kg+Y~d`zG$JxD%U?J2@UvxB+i1Wdu_XYj+M9ZR$XW3@`gYmwL) zMit**cX6>l=0?Z!UifM(a|)%gXnTcPc6}4H&6#DC98bnJat*8s-UywVtXEz@u>Y>} zTE;fj4sWbeSk`;Pfh@8+&&{|CrVxYkPu1HcR0ci#Vy587U0SpMT|wkz^W!OO*^^HI zc&WTtcNN^mTTT;Oxl~M0+V6^?`bSMJCs@3;)oNRFJ;i8vzf4eEryRgE)GqX}&k` zw8Qs(i{{kRCbuzOs07B_-*Mjvmg)yrn?-nJ9 z2`U#}$7Q-7Y=V-aef_z8C*D-lJbdyJ!tJHe>PE&RhXjL+4^`odEQJ+~QX-k*!()TI z8(Icj(y1_=#=l1~^`|}98+pfx3irXr$4l@i56Mb741me&&^bVY*DrY7Nf=|f+we;Y z$aT#J7T*N{^L*0@%l*s!VRi5y**T-DXLdAL96^%&H9~L< zOR#GPF6&IL#58b5yNWP>W!dHl8kJ*|DDn0#oLU3>%VkOaXoyFYN;x_<=}@3hX|&H= z%+xyawQT_00cJK1elc`CIGlFX$Pw#3U=?{>$bf4-ImVfH^#>H8x{oZHcr1^iXU!Hn ziAvnKSL1IS_~F~o^MJ%AkXA8!%Xz!sRTnnE-b8tP;<)Rnd*fmD!)pTBFE=u8=dyR= zwqL#X6R`6hP<%?;0UVl4U>PJ>f;#Xj!4{f?j*1&vmNtgg^dl?}mqQ!+IMHsA#R)=Nf)Evl7m;;3 zdv?R7_O)X(U{l8T-Q5U}8(8XVt{yzE!S6m`qwm*ig#{`g@b6P!DILTW9dW_o!J(@= zH0HOHpUxa?kGHh-6EpZO^CAH!brwGetu73<16h|ubD=R21ma$`Q{#o?}@}8jh{lt!T0(n5tJN6+S=_(2}CIkL*^a9{z9PJA16 zN(}ySvEfL!{xT9Y562Jph{7v3a-d7O#cq#Q)>UpUIsBy|YFp^&d*V<}b&=QKW-OPD zW;`+YJod<$MCQ)XUv92dAU4Mf^=h(D8;k*E6PhUgJXeu|s5rD;?o^smKydnDjg^rK zjZn&EG0BfY9kiC;0K}iHPKX0&AGBT7U?{2yF{<$J6T{2bSys0^XDj0eXAR2Vol|Ir z&*UI|17DTeqk|g;`})D3>-5KL&^H~e9eY9hvta6W zJ+g#Vz)OndP=^VmUKmHc9ZQ0XS9XwcvN$Ru{sMKMcsQudOKK$@=Fb=3)yhOn?Y*utq z&GEIc#x&=D~7mZ2s(8xB~581y~Vzzkl~J2H@0rJCgJ##w%RvVj0SMUt4YLc+Q8>YL$x zqwtK14RVOBz!(@pot5M;LV@{s(K)_m$miG_SU!ZY;&=Q^(@|g2~;pZgYH{I)~ zjG|Vs$MY{;lCKtZZzki45}#GFf@1%6AEUyyQ!7z(LFdZ*e`vJkcv2FBe*=5rs+sRr zPjkCywBQlzC{z2Ty=J+PoC6j(o%5B?WpCPmTR)A>UNY#LI#AmRa=)-0H_RA!F&w<8 zm-&QG3C;q^JStCh*PE^*BB@6f`V@cFsJgi#@rvxBZ}( zq9L*KL&iM>JadBZFXIJ2g`0Zn8(p8VvR-!__!S1q?A#G|Ey+9y=SR! z@+f!d_XB2gj$N!s9YR zEVGSPY*Xa(A{Qv45l0zuecT*ErEdoSYrS>E6mhF&x7{1LU7$=_1lTnMX7E$R--hhU zr{+_L=r89U>!t*rOCF(8HN?wCGQ9Evo8T8?_30vTC!xfay)?S%K&Wj{JA(DO&73yR z3Hi#c_N%Krp)GmLnIS=_vj6dM;ug@`Fd4lRH2cZ4%mjPlYC&=(Tcgeep zllqy=Zai2WJNRosaE0Y*(O$EIL7iF{3{G#i(5SNuMi(ukYyvYatK^0rc}>-(it{|Al3CaFd@e@0(A}; zjrcr~bN@!DwAQ0Ku}v~*R?5g2!LJ+8OCEYemn}Y95`pK}$0t;3J(m2~{5q&JkouB? z=w-fo$7|W6AK!wC#`6uN+bKy6!y8k}wpDGc79wDIgMIY$X(5cS*w8!Wb9f zdiXGxBk-cxwmctRP zSzpuA4m~p^@*Nn&(#s-`US%O0Yd4ZgHc8!36{OZaig-We{pH7XWEAc6y^=;s5NThV z#PGRa>l7Vmlg!Q1Ie#u)SVV%wtGjqZoMtRexOw{plAOJ})~snqa%N~wQcx>h`cgC~ zSz`HlK5nyWIW6J?xYa}OO!DdHZ%1E3vLC?6fX{am-Dv#-^L5g;FV466_|>Rfk^9g9 z=>3uammH1JktqcT4mM4j#nAUagrhk0iz|XyM~N;p+HKk@19s%7am6TG!<`dpIFMao zavlWRGVQjC5V78Mhy^LH^?=&%cJh0{71 z%n2}-RHX`%cN(7&G{+-@eg z*x{z934AUuaLF%p6X&CL$#7Tadf|piB@L-gdpky_1;p)77hV4g)eNJ=P)+`mN520B ziahbS1`fLP(rvK5wvt3wvE|JmI)6qXKRmrgUqoF(!Zj%o^2x%R`Hol63wp0bQF z*x?rJA>w8_rFtO+7;QI|(Xd^vdW#{?&D}$;g3XX_x2ZuOMBXqtIMy*>HpNw@3N5B) zXlYpD^=bDYO0QV=Hnc%;ciGiB2q$VgSjf7E=~u;?ISP zHMH+o26L+9Jx1Idr{(XGP5?g&Q*p!;uF@2uiP8!|u>^}xZ(W%!bm&u0RO^9om|#R$ z8Y2qc97L75MZeOsPG_LNZ-#7gg6MlPiMwT4{wwr09P?MRgOz*gNYEb_jaJX4p0iY0 zGpUVn?s>g_Htv-BU(WDW!CFRJVQSSv;Y|kWRVp#83wHhB`A?f6hkdJZIo;~WmKlTG zn|o(jpl53``uykOM-vv^Z{vd*iD_$XK&hg=|c^Uv${<~vsc+@7V13wR##HYs2yp*yFD~P-oaq57noLpZJIbo8VS1(1; ze3}iFGumQ!Qn3m@D#0;Pc%b3I4`$5Q~NG6y|1+ZPG2W3dw1i$F*1~)~_4C z0b0!B+T+p-aAlcyxSVaPND1cP)-$=z1cgbLDlnVCov0@vF_ryB`d-Q#oxOq_c;}^C zM%oQRdjq2F9Wu*O->l<+_tOiH-qc5AF!Rkjvb_zxExzBVV*Mbh4dUg<#>=axL4QmV zZoiy+=eFO$Ck_(ap>jVfVI_f;JL)PzB!2pkjX|=b-p9;rsDQU~43Y7c@wAZPvh>pq zE)~y7OSt6@kdR25a?AF1 z{cWL=EB%wKB&Ln}d?`AjAg!pT^#+y4eN(l_?v|)o@F+_oJFoZR;TWM2gEJrO*r6>YKCsdGm+<_6|WIg<6n635ecbBhC8KKH`;7fK2c@a zBJ=W7Hh#nc(WQtH#w=lpO!dBota%^`-dDIG5)poHa><*h$SiL{zo>lgb;4=qWOR%YP1LVB3PH2sp+O4 zN^awL!%-XHAFtB(a`+I#`zV)EEuqlAM;>Cr&LI=|`U$-Z#Z0nG*Y> z8;5K^pczCU>h=M&^606i{H*emaR*EedVDOjwQ255JGvZJ;HRy9%Y)XMv1DM}#a$*V zH0Djs4S^GThiPq_-;NK_8WKyqkYDk=Ck8yOwLR$`O;CU?!THZ->+d?_4$?L=+%Spk zPCL2FNezeAgieGgzFUOTaAjJ~!kUGsd@yiDu&95Mybr{r2JJj>Vija(zV7j3t$S=d?&QqrZ zy)OE$b9^MKI%PMZQS0$oHWvL8TCkV2%L^gFm*yTq|s!61c3N znlY`7R5T)>7U;xPb@lT+I1ZKCQDIEyEfRc=sHFlm+>B}M_sz)hW$?OxIAAHF|59|R zdX;knJOoxg?~z0XkKc##67i8WrjCSK@De&k78G#>Vh*u6 zqEYLqZo*3gX4qy=&&s!CcNptFMYb0EGT9#|idsRiJuZv>C@)0v%gALx$?A6x&%Zc- zkM1WsISN+^leTYi3_c?D%GTNpF5T>JSNE<8(DJS^dChonD-zrrdxPvu+!@oHR_1i< zKC|*|c(Q*eKJu3<&ISHL)~mqen|sGV43!Mwsd|!re78&C$929Z?FDtOsu_WpDV`On z**v`R`?Am|v9*@Hrh2DEnyESmM(;Om8W|;qI3=_DbrcoG#fFzgrk=;n#YSRVJ|hlR zg=e|-jKL1K5hev6+qOuHnob{=H^-)&4i`mcbzrask)9tHT5rHPPrhMu~TJBLX} z<`Klc7kO}v)dZNYH|z;6q|BA6bR@9AD3(4eP1Ql{7-ApPWo|fvU1ws%A=|DiW|%2+ z=3}E=kBY#QRSUo9PS}w9|bpxf_s=v0G zt&19$8Jg4N?r+lsD4veR_=B|=&ojP++Vj(B8;htNIH(B`c1<<#AaT)gV&=sX7sUYr`Z-+1smaEyqpZTVM zuziF^=&`DmweL{QpR4fa%Dl_H4V_OTQuax+MSRXf$2#ePeatMxFuAKJ?`k6@Iq=z9 zV?DDiucmVRs!sz)e|q5g;2ogulHa8AN@1N-`G_u*ON29 z9hz@6hMIMYB~lRZogf0)$B0V&w5_@6&~c;Q?d;jUj-WS=Hvan{rf;BtQ=q|AyMs8j zP4{N0os29_WjuX371Tu^@`9SOK?qNnR-Rz97WJ9&UHh3CZ31;TV+ta}t6=`dk8Dm( zsCU8oj|%zKO{<9aCaPDJ2EN22HJ-lDKCO7Rt|oBgAw2POOj|y_M3ZA*UANf+7RJ5` zIY{-*ItT!orE!897I@-P+7m~rbe$3O(OtA%<@lq^YbzgnQ`4Z~^WA*RVP&u1Kr}~;-H5ByxjJD8t;j|+>!4(cOXem3vp$a}@~ z4bupR`5!kX-fXy6(&SE=vb zg(bAN@0tBHvfA!koR$MWVW~Ik?i-uV)f*ai*6fynDoYY};|=1eglO2jig z5OFVeVG{JsqtaDc)pDqLawHQZr){ITA-?@Q9`Ir_=mQbT(J(dPW>Eyix3?X4EVS>P z6fid2@c>_JUs0(Dffm9IUC~z<(|TnHoDUha3hj1?TMi6pE3Tn~2T9CvAt^=YtoAXE znKc=zX}?23+_+h_koQtLA3&ELrIRkp4JrU98$@Q`*i38Tl3P}MYxcqd7TIbDB(qPy zsfweoBlrXn_RS>4$bmL2uKbygDNHy+J*MVX{B_kQlb%)O{cV*JgvGWi+C|P4sC3AL z#5<#oTld(zph5U*{kr5UE&4uDDU+J?l(U!fIRJ4<_+tmKNSB$O2vfLYS)^+SPglRO z<_XXlqCyEw zuWqGOR1LweuFQw{L#H?OXhSd);Hmq;`Dyh&7U41HAZ;)4*!#`zZvBRXK5S@CWep-x z20kbU-Ebds-Fcn4nEb74TOgZbZ% zX$n5jUwAO&!8)m`q}^Mx5A^z}<{xrN#7t+x^ zqjh~*!$-{VeM)_1=-)G?eNucL|5A2nN9Kn*pL`x#_HcvDX488DQxcDSPvTK^*3bLy z*va>)x|N)Y@{@*KZ!Qd-^G(7~N%SyA{yPF*8gc}y(lm|1_^1?FJDD2)eeJ1<36$kd zpuCxUbtWPhHf%D8tR}CwfAw8)Z{wrZ|I8_g$iML&BD-9^F?6v1o92uHwddozq^##$ zHG2BUyKga2+-O;m0pnn@*W&!>&0?jI^`PcP-qElcpeT`^doq3Cc>Q5T zYL{9oqe_L1;VsE@)1NJH6#H|~-(OvAlkCO*g*;DkOY~c2cy#l*4{i~Y=l09oPRqJm z)#X2hb_KQUUDvg_xId16dv*#u`@3|<5WDL%$2=pj`C{u;Alszy)eEu2hjW?kd-i)> zKPwav29j$>6gnrt@iRvH0v*^YB;H6B&WqR&rZBk-t%Ss10vpjKnx>}HhHgyWi3<^X zgdDsJ5{Z2n-5~%X-ThE@Zo+%a{`D}1%XNSvA>y#yyYu@u)qqp)i$uqb-dZ8ra#pI#9}0;7 z7|^Hv=&ypE#RkZoodN3RS)GsYT)zA3E7Y)$aOnB=3e9gL!RK(&YC66GmDRCE$~s8el*MOjr+g zkF;pxa$oEC;4Qi_VjhO}pgqJ?6y8TTi*g2Mnu%M>n&{y^VjTe&e(VL%qOpx!WbJst z_lXdSU7siK{R=GLuS%pKlOfWqiBMs2oR@^MiE!K{8jli-M9 z+p$2`fSUl@)`eP|W6l;VNZl@cc}%#C#KFCQ48chbd7Vaug z=tlVHz0aywTBZK4uzZ?t9}Wvx3GnXW4lIkew9+$&tV0ZC2-GI{EWILhybZvF+!TFk z=Rkw-H;|l@@y;e-FiuyG+7CvrHO|LpiT8)4g()a%oRDS0ZA z{HSNFVwrLuQ}lni_`DsJM2Dw0gn4~3HU7P-;O5ly>{uwA@FHbY%N} z>pY_tGW^r(l#`lZDc6pW=%wVeHIuPekumXU{LB%FP=MpfAb2oS7KutcC%cc0aK6A# zOJJKSinD$}TEdvKA6J0SnGyn_E&k3{*t=gfAaJY)i~TYI>4y*aG%R`B1@jv!y>j5O)L7SqKI2e;J$DH>;yxHoQvesQh8 zuYa0cZIka}a4|u`+owEYUasO14A)xbuhVVkJe+?84ERwC2kxAox`0~waP3n+fi8j; ze+4uhy4mSgN}o05TBk3O@g%|zPcT|vII-EhMg>0FRAkSCE>VaVvL5jFk}X{RmAI8_ zDH6jHHnEt90=+i*yf*yi(Uc;b2OoC2ME9YY>t?i(4BoCqDAxSB;hbA z^bIWZi!9EYPl>Q+svk9Y{Qfz5IctkKwGx9PDiKy!JCcKNCP>mrjV?w&@#DUgIAX`q zlA9nh(xhG}Uc$X`1}u_N(Xn4ge5Jh>`1P%>FpU-&vW-bwn6S|0Gy0L8nUde^kS;n` zPCAknP5(*(Y{z8Lmj{O)ou4g&DD%gx8W_V}w^*M3tqBZ6gs+0XD7Qk%og8~P`*2Qs zBhY{)Sd7a!Q35rsaG3xoQhJpKJ`AwOtUyGzyS=^yPGbRx0%^IgfM#7XWo2cFBpfO7M`4SEfuUYr0 zfU_9kx-z=#R-ZGH99*JFx9H6uTAsV@c8DI$k+1o9zIQz6G z2pZcNX*)J80=aIwJbinJAcJO8(kk$v~@bAFa^x`J=M5#+(ul7=na9QpmM z)nO})eE_Ps&z$-n142U6EYrA>`04+1#p>Ao#iP7ju46i~b@I^j zDqJ_6MPHncH%U;EUHU`1-weEe-<+^j@D>O3RyI3Eghy}?6&cM)pB!phDcCZX=nGI_ zZP`xtbjc>C)2Q&S72-%od!BhPAV2^Y@Rr^D}n z*IgR~Q9v@09tHSR>5iodE*5=y4x{roAPuw<=35>GR0Ez+KBg@`=^}-MQetNw z)bh$YVSQcpY!c$hpZ<{=xszBE5yB@dV z1B0u|@4U0H!ZEI%m8C(&w7Go1CUPWDBCs@Ko=;m47U{(ud*1*bZKX&nY+878NO8N? z^Q8f6;Mr6t3~PX!$AXz#A;%fni8B9YEnJd|7%M&~mu?SFcUV@iUBfzfV_~6kcWVeV zGmiZ@+bA2VISFSgm%fR)*}ap8|65^9$fUV#`d^x7f{C!srQa)0*Kg~3I@h=X`cY;<5(NgO}Joe(|!p<|+ zHm!2(%YjQ`lHs+yE4~Gr_vCts{1^W055*UJ@~N{F9xNvR^-66FJl@{8oGI^rkU!?O z<-F0DU1n{fqy~9cI)1Hc!u)L>S zulu|3syHF%=H5T`o`z{sLD?YYCkhsG=iO~Qc{;a$>7fB3+d57fk9Rp~oBxZlw+xG_ zjrzVpE<#cSL|VE*L6DLG>5!7{PH8ELA*8!OVhEA$k{sz05Rev!?rw&OXM0`u{T%PN z_kH=so|$9z?3sO@YyH=6{g-w9Q*j0#5qQ)_MEa~baCAOpa?GtkKQ1p(oHnrkO!oiR zvqOp*ngwDjifQ;6s8|^0(>_L?uZ(E9D@g^0Q@v5D^4rvIbGx3DB10E`g8@7`8y~VF z&p%p?Eu{quQ5E5;^iRVh$R|Je4;f?r^3f+r{ZV0jPntyX1peLw{euv#-~yIA8ee42 zeTipDv2$s~ORrg{rafM*!1rKF{5165%xb}B(RbVYKqH?U?yS_z4SR;e^u*n-XpcXj z&Ig@t$6n12P0pJU{@1-Is*|dx_Zwl;Z~Qz*Q(K20o}ZZLY;R9%7eUP~)K_0I0az1F zl0sA+eMjU^chuYS%u7J~*#F1*s?Y)qK97KnHnh>?O=~G25vhCbPl~-}MnH)j2u-4met{jTrRw$F!fn?^EE)gdM7xICHj68L6k9oNM3yygoP6aymCjixze z26N`V4qxNf8SVl#;ER9QXO&n737Hx&iZu8<_3lD_AMnq#$%4+zu;pxU>RG^8Rp5*6 z0OIcT9d8XeM`{I~=DQ87NJ4iSet$SmV7qGKyC1Pv;K54=U_O(N#+0-UDhe{!$G`wj z3i=%jy}j}iKvh{dHpb;Ph9BCy9zs0+i8?G0%O70^$<1^J$9%LOx1|QD9PwAGTq0LD z9tQcof_O|kwWG4u2G$km7cj-V*$B$l$YXaArr_dhN)KN+3BBm$8zo{JR)qdugP*b3K{s(R9&}08UZ`Zl}xsyh4H!YdHnE2foLm z&(X)Ry;q9B_~(y9uO69-?_tuVs7<8Sfi>Ojj$>UYoS-bF<#!KI_3!cW!JKO8n>nph z722z8#DDnByYf+M6RKJV$x#)_S%rLACm*p;J|IzSt&WV}J&485(~s`%_GJ5;s%61n z-Pm@p1Qr}7F5%ccyUmiE>0ZBCK!mr)#$12G>8~pJ8v5GZfK_-xC$q0HrABrFCH031 zPK`@_54yiI5P0wCDa*htV-yttPaa(YIahjeF&_VHis#AH`Py8-Cvwfb1WMb6%-(_& z4+4_@rlv6|2+ee0(zCW+3X0S2d#p9M^GI9pqV$4@TPJUHxBqJJOco}x>bDNb=VyF%#?Wj1d&+F6>=AA;@f=*x6wP|K zlY@sFwvl`ZbMKpj3}zeu4tek+x*6Awl^7Q}8b7B4$L+B1T?ugvqd=|`wJ2sF+QT}S@07xWMM!8FfG^AUAn|Xi_pul}i7-$99eB0DY74@;gdsAgb~!V4mmSCWAFZ?B*|y0M!*6Pp z@8l4pd;REsFdvCkTdWOVf}K{{=Hxa6_|7DO zKcsJj{jDj4vEP<$1iYJpEmqeT>z_+h6J=XogUENWPR$K7QRWjj* z*Eotf=#TeL?Qb{~WwI0$9swn!@+J17zYa2brG==7x#qzgD}p?FcK_VuO5T4EWASNGlz1!MDJ2wc>#^Sj=+pp(~SpwO#j6u zyCLsl!U}*@ER;EjcS3qgM|79NYmxOd>I$^$`Ki}lDQeWgv}~D45U8{dUQ&HTlly3J zzFe*Qq_R52a2a^@<-^Ja<=AQYTMH39LAWhC0O!b6?tW)^f<5MH0>#PrER1^8&;5B> zCC8}Zze~^Jxu#eD0WF#2@h`SLGuJsYTZa^+=V6 zFEdy#KGLu9J)UL?yQ2Wno)tfS^rPVBt^2aPFgIM@pevV$V(|rD0xOa_sdgT!&zaAe z8dR?y{XH%D$wd?OuaNWTZYxf|B7`FFmF}eVlglj@0>Y+^6dxf6e_#n%VjUP|eBG`W zBB|tbitpN>LU+x^9Mi7)#O)_XqdnTU-<1uJ>dbDlOw($tM=8hmFY1lE3OPgGM{S<| zh`<)>=4-lYXQdo@PJ1@<=vCKuu$Cq078LQuIR~Cdo`}&KvPKAbUG?|~jkyE`_8Jfn zg#jT-g2a6Xo&sX~G>V}=$FtIZA(y;_oZd!$sw^o?K3fcZt0b=H^hws&VTy3qN;8>* zdNe{YEqhnb6ucXpdPDd({Yypp3q8+^(yE{r?Re~<9-PUg*#O!)QXk}87TgziQ zXK&p2Cc}?y^C*^LCSQ%h8<=ScIW7>$>Jn}fS^8?KOinVta9cDbSh<4LXu+=nBU{V) z9Q62SreL8ZRm3rHwhRJA{FfHEkP&%A&L+RW;Aj?d9;&Q>=%sE+TeMNtim^iDIm10e*>2~G}F~7IuX$rP5Jx3 z*cq&v`Fmzy9#~M94UpYRX*npO|9xQ3toF+F3{W!QJz419{(K^c6F{aTY0w(96qMWO zq=Bf?1IP=WH*t+bxzaqks`tIY?C^nsVmq~UC?yS=#cuuEhBhZhn0{5(H4l!&h*=6~ zB62JA??Y;|J~qnIRQ;9%P3$;g03tCCWXH)@z+Va`jr}lA)YY9oC(sHUkcS$%FWvp3g_{mq&vcSQPv0Cp zqX2StS|5$Atx1FCP~^r0r|=9hf8&#ctQ|9(d%G<9+E>^7Q+h6}sGV&X;05+x3H?Ex zcO1a_*dB+FjFLSyt|@<+0FhZi@pY#wAo8VDoJ)>A*YNTqms=qU3my0&bQ4_ef=;?M zNqISb7k)@Ub9cD)rg{m<+$}vTtsaZ)jN80;sUvkdvObgf(if4l1*F_4hVt{BD@N5v zAC7nL9u0#8?<(_ZSJ$-Cs+w3=T%-4he|gw{J|*Vr{&ZIMD6F(LM^_4B9ySn5uVpbz zLi)~I$F6B>ppz#i4_Wtzt6ZLyC-vX0N6^z*lBLR z+wp`?)7b{n@68U)$_nFlZ=(gk)Zl+Df>{aEI}gZGZ8cVkPFCk%zSHrp^+NZ3O@ z4(6ER_sk}Ig7M%UFY-@SX_1WFBWC(4$?Q!`O6cK;%u>`|`ir#ShL$0g{(f0^)p+ta z1}NLBvZ8XS@TI@qHK9zD&wr1lE6ym=p5+9V+PFQBl9P3&Ql;DWLoO3By$nEr6hQBz zEg9!&7`7S-KxLVt?M5+3%(5k_f5tGSln&I3)Vrx<9s}vL^y4xatYYv*U06jIZ#zpK zTp51cDvRcHmft2MDc#O2xGixh3+{Sr6nB|Pzyiw z(QvThJ_Wt}<2BqoRnEU)>t?s8U41ivTJ(Q%pm;ep0g6T^U@4)r+fq>F@v7Ijp#@y- zzRR$I+ZeOXFvn**Ae|D-eDrLV`>=7{jSP(p_6GY6YK_#nj@M?l?aVF$*XcKF%mGPt zupb`_ys2W4$A%#2G5W1Y9JjRABlqb|!OK0M!9hSRn36B~a&k=llEu|nME@H1?epnE zMruyqAj}!}AMsyl3}BcnT|ISNF&L4B8+}=`D6sE9`u54>63%tSAxX5t%TdFVkGzUtH?HKJD~9g4g|6@ z$RS*O4_eLZ;Q!RL=DZXs{6rQ??5K(Y*DhX2j=RTnH(pnWZbL-{GbV>MBbprRadFkz>;UGMehWkHVQv=X7Ggk{7 zmkp*&rQEM-8Mdy>JkL_8_-4*WuOnICV4TM}xM_^%Mgss!%HKZjt!&B zil|!()EAiy+*1(X<44rqw%tW0;=c>)`?<(%E;yj!fOKs;o~M{q=>9B0eGYd*?MyRH zo%nT5-?HBUy8_aG~C}Cp`Dn@E6qE!M4qO{0+!$w5X zyL!zq1+@Xzy;i3n{gxtqU(GiOZAqsD|Fp1I!r+JeVtR0W8a+&N{4^M;dA!?m1)gJY zk!z^5Bpa%Oatg@VD!?}@AMyc{I)RF-;h;{xkv))?p=ObyEyEjP&#?%7bo6TC?Kt>D zw?vCuVUB(ky_u0NRA+Cko6#U>m{TR^J5!+Chk=?Q;)=p|?n+{D^wk+821r|UR82^7 z!!^IY@H6cOaB?O6)jvo(iGRNiJ2818t-LzxDuYKUe|69_1Mr}hhwmcHE~rj<+c*!( z@;U?Th&f|<;BW8fqwJBI<`k!}}g>AkVdN!$maet5GKLedX zxF?Mj&r5N17L$;jRfiBV%qY1h+(L8V5+2phl)3b5;t4C|{RVvaMb22Zu^arzfo?e! zTneYNQDs$fUHE^Tb~AB*GcA85KCJFR(o1HA^f}d93Yu{9<~6-8Q(X%{&2)Y2a-OtF z5>u3K>Nxm)7xsUVS~W9fIQ~eGK-ai=+|?lJn~Q_=oFJV7!giJ61Y#I$qWx!e3l3o~ z?&P$ix`_-jp7c@yRP^&_*Rp7CC$zB(rNp~I+-sWi*p8cDsQT&&l(z*>B|?vp{7_le zs&n!jvdazos~xf;H{gtm5atmSUpqzSmp*B^MdAw*OZVq(JHtDDArs()FS?(Bo#KWC z92Sv~vZ2)-|kcfXk%EYE5gYq{zjJxRVIi9BPnU*FH-4B(fTXDWP4TrUrzJCMh? zk1F)rBpewP`R2c%hw$xB1b<}a3o84mvF&0S9NLJP@33zqurjp5@u>l$+Q?fgCr|R-tMVZ{$rwAcMTW|0 zow&&3g3prgo=iaaFBpo$Mz^j~P^;TL4NmL{91(+#W6eiBs5%hU2w~=PoYsQuu1hA7 zG8|?Y9F~fF_i;dsdlA@E4pXKFX|s@TFMAOEU>zMRte{kcW;P=w8;u-N9X{`KP-_iV z9n5tYDt5heox0H*%XRv#htOa>u$x5+p^LnKy4A8PPm&3>M|Ynwp21|@5%n`$Rr99Y z?2x-ii*nn?VX&Bs#A>hhv!4fq9G<4`+OF$244&;|GIWzkZxIY#U@baTPQ07h%PMem zcZ28|Iw=KuWTZQ0Me>`AWb#fd0=HGOQbN2?7yJ3$_QDkudB*Yp`N-lOkG;&Lj^<26 zp%e!bJL!ILmqhr3>XSNv{U!5$d2zt!QDtiyeddFf zgCEcopx@HrK!mRu{$p^rm$?BXckjb?TubeBX>ZVCUCv|DqAeya7N0y-tJwf!LgKys z7Up=nX}j=s^zvo}RbC>vtp!s#gxENUf9yfaf@pI7j03xa?Yn2j|LqXP2XpU{e)fy7 zf!3Ogj+&q!>bNZ~#}=rKQL!HmE-^E`Q;GlKdW2*JK&VTG%p^hc-_58G{}`(!XviLi z{$%Smp_Co9brcy$mJU2PLdaxW8W=^lXR6$wjDnDVVzpJc01{lA1Y3ba$hK{-)H#x8X#5jf>GBh(EtZTw!q=18I2bD|&}TPpO*WKw_pnZ~LPcbo^#^ z;DO+Z?^FUq9n#7xy4$0tF@(of5#dvm@weT-0TkJcH2G9}yGLAMIstaX@FJ~wk(b{a zpdj)_(W$ofMM`{)&}>h6VAD(3#c&2MYeh@-a{UQgFp9tWQ}3{%Y8O%&$!>gk3>50O_6s(VrdIuSl9- z58VvqBvJ|5F41WNoq3oEcjcm-^I*O2nHN{N4{>LkfXyEB(K5tD+c zd?J0m!Ru^fHWDExU>W17F{Lq3_#iM*>kFh2Y^ci%F_4aJFY30`mwqaBEX*s8q9L+^t%MrT zIOKi!Xce4e@r3av1mXq%c?i($TIImHy z@AtG8+nn?`A4=(S0~Q`%g)5zT>cNHN&z-N*kA6#=)`9ieP7{el?{`KW$D)T@pGjDe z+4}`+Q-k#)TV7604o0cUJ~vH?{ojzY*p~6eQ)B^9FoC7%pPuS5V_BkIBY zi?Wr~@E8{2J&F<46pPvB_>1OIO>yWJ;ywR=93h?k|NNYaO`?--CAHT(yu?&lE=bZ> zyj9R^3)Fa7hw1etiY)1`7Fl&o>nX4Mzg__Ed+gMQ2a}n=twC#vHnSIrI1UWvNFUp0 z=qTz`*94idtxR=a)r*KWA^&axUVYYaW_R3lPYnl7A^acKTzr;Z1EvOYtLoAsvX12z`;Xj(tmeub0?oCvxNY`eK<@Y_FY8E zK8mC7{FZC;-Upp?f<|OxD}5i#e5-~AzLpf9Y8CplqtLd4>IA3HdD>r~zht{6fj&+` zGfgmTPQbaf7YDVcDS8&jt$C0!_7M_Ui+I2@b#nrXMk~Z1ygoFI!~-*vSFa(0*iD3J z!P~n&ExyIRw1N`ur>b)Us}(J>ZD!0%KbV8&H=-anY@#bWtlf?(MKSs%?GW?m%JxTA zltl&I&LlHD+=U#}7Wq4`HWs7B9%avI74S&f=Wr zfUdtH6E9Om?akG%Lh6xgxKBIVm@^D1Nq#=SAK}tiw(f85co7aF8{9#j`cVnQI3TRD9psCa!CF?Fc9lQfQ6jlNVx&zSm57; z-b^*Hr)<1C(rATFo)TC5CI!7@*cb{`wVme3Z^43UBAbb8m;g}GJI)-Y@Hl1a%UgxT}gokV_S-Hit zsgYkPVaZWxHhDBlou6nMI%Sj@vyDc-M&Qc_?iWm}OphFYqu?W!F*ldEihUl$^RP5H zm5f*qB1un*W32PQ;9JV*DCvB05&l&WF2-2<4_R3K13>fDOBOU^+hQLvGdnOFsJ#_U z|Dl?&0}}j5Il9Q;s+iXjS$mtl53)CBVhubQ6DG6pR$(W`PID!wCa>u|NJlOLmOIB^ z#E>e?)(hFq{K zIRvd|>Q$WUjWTlnicO$A59w~bEA2vCWN_Y~aDR18f}|?yP@V)V)vW45Dy(ofC20)c zUD;lK{$(bSi|`Vbf+3u8VA&+eD|2$jBl7 z;lkRPiraHvvI79P&bigamzEVjJ_mM$$%)iFewAj}ihMK#Wr7={L(MPS-6iW{oZrxy zED2}GiZ*HTzn|p_4x{8dw*HC3?SOpoTNa}FjxUMZKx3Pc>VoSG(l97>r+(gwhG&YF z#X&}Y{Z7p6!1Kkpjuhwgp9bcV#a^p|w+(=5Bb>_SD3MMxqNWaiscabaVKoXi%{sQ4 zWyr;?S2Hbq#~dU(8Tv$ix)n>^?tmlo^@y4J<+#Mh*VkU$c4=BgC!$HWW&&uoyRZa} zyT9u)U@;7qyUyMX|hrUhQpWU&k~j^0;*Vg6GIH z)?(s8%|x;ud$blhoiRU8byMGwGt6-i2>rbD(3QDCD9GKCNubM$)*PycZi(X&(Fs_p zpWC_<#r5*Zl_ADg+rqlo`m^wxN&20?>OMrk^L7-*3;96Ib=lh#(*7tss1CfTAEL~; z7fjAH$Dy+R>b)Juvu`aqi@}UBQ3LKpdqBnKh&xEk;vbnu%?g4I+lF-dk3+kKLvV(h z!^^tAxX4_H;NOV$kEkZ7v%oi_U-gsLK1TOs0el_%?VdU^$DfQ($+cN!I$rJB?g%d2 zbSE(OL1^sdAgbTyL6^oKs*yJlCty*yUA}|a*$h`MU>n!}2G3n5tt`EhCC^8l*M!Z) zBu}(BpbHwt#nmsct;N3t;`uB!dC0)Y=nIeIDoE>g%3#uN0UKcdS7WMBnT8_Z+&}_9 zg_@Qw5idjh6I%ZLD>I^9s5SB%Cz}NEAc7{!NqkTE_zuaO2pLcP6zT9vmQef(b_nZv zik>$KEY1y~)9$K=t|3YKwqZ`|g9x z?7*z=V_@(;_y>Dwb`Xx`lQ+JVF+>vQcy>`gkrEVKM5HpjsKLekg7#yzPITo6CRZjD zuT1+SI<(c0T}%wGA_@0f28=t9>Cw#R3TN4rB#l1}n88e}@Kpl8j9c|=rE?#*%l~Bu z?`nyk41d|LB#P;wf>olNLK;8@fqX`KY?|T!_=nXeUfNAd3k6ay=}n;O_;niG`)~{% zl#+n8$z}uvFmR=`>e`yB-M-%2ufiFpHE)BY4G3SDWR?v{s(SkzhR;n{}w~YN6RBp)i6x@XbNDvu4J=n z{+vG_!1hqTY^2k!nsvrj_%NT4=cde?S~8X~4A?V!=2gmqg}pV109w2g>G^R!-0?;Q zz3@&Tl<_nv@M>^c+Tu?+CoE1X` z+xuoDL76o%XZE@ltvnA3dfRWP-&`u!zKHl+f|rp>aJ#$L{m`#|l`vW$-HfFiEF0Wb z^)w2Re^uM`O~;_>Th_HKZ6`~PGbcfl{Gfr&1_oSZ`s!tjjFwe_&W!5wg<2aUK6cKo z4^O2Abu^_cwqOUEwHW zkhS9f%NscA4ZoVLum-1*My4Q5K5%yf#yL85Xl%|z>u*UL+XP{Q_KfsQHP$bVoPaZV z|Ad?1FvQmQi+)Sib-K8(l6Mhk6#-q}rvc!lK6Ok15VMP;HXie=}xR$W!-{Tb|(T5oh(7jUS;uJWXbZIn+K) zg>RpWoIcsDr{Ia(H)8%7dt5tb!-!#eUDmhE>{ht5dBIar_MA-5lJH3~zxQk4ml53- zrOjbxQIY5|5;!_Qo1fK;3@zH)x%Fmni#_|{`}eLg)#7*yfa?kW7nCH9Bvu1J$%MvM zg}XBnS*krDq@cSJd{Ri^vy&E)Ql^a-x) z!Azu$96`lbu63YCGI%dgmsz{1B&=|T3yB2JspV9pI)WWnKxO1tAu||;>Mv=qAWFEk z=)@gGZTd+E-D-#qS!w%bJRy9PmmTl|6m1~Z!9ut2o3o$;TVH^IW1XIQ$obibhyw4Z z_6=D&o>BF!pNeqU?Gq+hY-YiK7537IVNNCA{-wu5_lD^0l{i33JxsZj>eM4GMU%P& zUz&rNKEy`6VHNeq)bHsT53|{+S!X>NzOao<&bOEK11u})&#<<#cHE8c5>bnpT1jL! zx=mo^KE{t9yMLpG!A0QyGib-VFM%?xzY?la_Tjnu15962%FPC^Vs-cxhLz4E~(sQj3>eQwJyr^kYzczk5|o|F$u@o660G_>zxM^#?EI31=Nr1#Sp(Hg zM|b9_thY_t^m-F}IA|BlLE|_kXWSyW{*BQloHwInL;2i~O6>`=x1cxB<4mWm>aH}V zGUe4lzMj0n$(6B~BoVJD+{BW2WAOHOuv{X`fn8qzCFB2~nLelg17>pb5tk-Zd=wu@ zyn=b0<;;U?r>=kO*bFr4(}UDR|H6#lYzKKKE&3_aHf=-FmuR^_wgCtou41xyy?Lr|2Bn2z>LtZ z{w%UqLKnI6oS#z0^(dKDXMWvaB+KO@joEC;pz+%~QhQ5V&&AjRiDEGL$ zQ9x$|ROz(v_T%FGJbBj*Qlw6>~NB zp~_!jGi6|3fA|XTbVIvJ0`eY*%H1MttMSv_q5N+O`gjV?+?`9O*Q6=gHl)M#|PE_dX)@AD=X>d?I(nFD0qbXtS)Wj7- zs`Z_yVxK2M6aJ{k8Yh;2QB;YbT#tWI)YQKys)=FbM-EnQu1 zx5$^gcr>q4p&wiLn3=d;U-qkL$+xEpw4Vafqb1FB$j}b9DF|tP94Yj6(4H~iGFo2o z)@1yE?>~&S;%3)MRWQM60&whO-DCbr_<%px-^7{PnMQOY|BrrsVd2&ftnZ7U?dNq_ zMGp857`+)@+s_3TKv3<*d1GLP5t0{rsEtdpH!r;Q=vADHPo)6N{*>tw zq`UN_9b}F)^Hk}my4Q?U_4Ub%^COUO$NQk+oHfI!&{asx-{K}q_zZnBhh~R$Du{Xe zj3s3^Pro#<{yj^irIR>S_8i6S647{+PpoakDm1?0u>@WpOZ9p>*)gidnOttu;v(d51BXg zT>L;ex(6e34GqIb-RT7sn&LoA-|3=mfTovQ{%T2ZeqY1 zl!f@A#&Q6&SS>QO_^K48bO2)@s@;b9yAO!>r zvvlfSVdO`ui_`A@vJwHzN(S`At(h-uBdI+`1u+a~MiI4AI-CM!!?C)M^Yrz4@&5&Y_p@nU94n*rSXXt>MSz{(m z&y|H`5k#EUGHY!1gI(9s1lM-llA*3^+(9(!wYPp7v>(@*!;`P^j~d4$8wKd|lJJxV zE(kBp(L6@Q6l^gh$&WI4_ky?1KPvz)ng6r)_9b=iC}C|E*~PdNl^q>MZ79kIxkhj!jlK@{nd5CfGRniwy50r zW3D{mXE>f@<# z_pth|cln5S$1VpMdVi)l;y0)&dB7%8f&10G3s+c}l?wOC`RA=y0_TstM;|I<-_6iz z!|XE|OLfQ2+QTXW(0c_-IJmRlpk>MRCuMr>l4)DuBNB1zai1mkmygAwP3(!tDmK$x zElbI|C$wCUh3`GW&iZqFRCf4)&^Ro{$1P(N%Vv1c%f}S4IvrCYIEN@!;l2s`dG1xyX69 z3_bYp%-ED8_Ce%6f@VoS>aqo0m}RB>BS(b)3TDlon%|JCm0=RX95e&C+{J8%jhe9{ z6-=u5T2X~x1oTZ4&|UiIU4<6n7x3xX5Pmt=q(SMv7r5qX=8!J=;}Re|ex>LfnEFeY zP@YskxjKv6L<~(EgRFgzc8*KDJUf{LM9^kUI_)%0vg$tz;J#~Y<2H;Bq{Jk@re3Cm zj%L-oBC2|ZOX6NsfKC3EXn2^*!rjb5(q)*6XYj)Bb7i{0u{rHo$7*|rMxnEU-H=lA z=gV1xPyf)e=|mYVJsE4kt1A)IR>pF&uFIgIzX%ZLVSthb(&=+q7rDlA*RcZ}BCKZ` z+V*Ohbq~u1P$G8|8_D8kYzdQ)2hpg*9lMdba*=ghmPY7L)ulI0i3fNOvPS`7+$$Ep zpYHSi%Q2gD2VRc&a1*)v$mtKd7vQA1y8@D3*E@=Y+rY1M6WK1=L3&mN{JuLuhlw{o z$;av$dNoT_DmL2^o0KS5$NJE?+Wlw8R2q-h!JJhch5*`(6sIAx2}G5D#GX@8Sf%gJL!r5Vs=(wn~S!*>L6o9 z-FqYk?3%g4ziLmt33ca6SPdhQXwY*&w4#bsGJ=$C^sz5w`Ffeyz~88}spe3-)EP;77dN)qe->bu}5ECPL;Ms(AnbT9t{dtvL< ztt{>9@UVIdrabxA2e5Ugo8kQQB!j~ygR2#9(kMDQHyJf65>3Nw16JP3cI(-BBgPyi zqK%4QXZ4qY&eQdcMrw$FV!|Mbsi{9OuhI4sFU7HTKDxx>+Nxw$$QMHIu{i(F9McVl zGxi5?J}U6rF2WpOc&*tD(%T_lms!SL+ikr1Xu85ft5{)*ntf3P?+QGIaM@MvXsSJs zNA9xUHX}TbR%J4CFNKyDbsZ2Rvv%kwfxZj+@-RXN*+$E<)-E*n0pLtz^4o*3^fYbkKtoA(&GtqdhulPblfmd)JnI z^LIkOu2~t32XGlzr)k_eY^9ow3u#pOH7eREX5#Ki(OU(5(>Dtu$wS#BR$P zZLySK4Euv}Mhh+7ZxAmwJ_wLUB?(q;mVttgd;Y2YMDO~s&ZPZXyPSSLv0UqQ&|YL- z1JxD>cmoyp$Cg;7^?gLX=1D7PhWDz^z3FCFNC1`Rr{KW;CNbx^2TVW}!zIy@XEJnyqsOT0C~z)gR5h=AiN*0KIUosxKbFuZTrbk)s%v9ihF zPOcMcuX%%NtA)Qhz0{L@t!Emr@3PopK}EZjMfT`(WPG}n9V(jEbCBi@TJQCJu!Q%` z&Zm=QN|Os-opxR)$}t4s+3tV+eg*{*K6vf%Bkt9Ri%7dLUk-n&ddHi)>@(OE$xC<` zn!pA9rOM>GF4yf^eDlkErzhwT_Wc6A^$ZLc*A1pmW;EY@mE-bW8|p&{THF7lp`-ZU zhxtBZ5@#G$-itGB*e8i{i{gM){m{f$*WI#+vkQr}o8I}~j*uKGS*g=zThheM{O6m7 znF@F|29HA;&C(48flBeGGXkeiE4hko5l=-kq$C9iSCu~%MLa^X0r?`AmYP=R;q!Qa z-)jHmkIc!ukAc+J?ZB`aK}{H6f4_cLp1Tab^izWWgopg|sS0HxaLq3x@DW%)Jfh0*6dp*rq$Z-%@;Wup8pT`(l$PqDL+A zYcEP!85HPz#cO3u#l2B((W2YxyZY;SYAffx(58_mA{zTc-YUx~!(QTs!z%R6G@u-x zLG6*z+UAjn4zWuCw`qsISjqUMU2gYU!aTvUqlY3ByVk&54)6ElOZ5j1KYIcVSCY=) zFNCIX*dNd=ifC@8!yMCgB!9DsLk6D^REMi&a*1O3TvXkD7GJ;lcqryq+qE$5*N7O~ zC4-ykgp~+Z6j3-tT~QLOc&PZy3J&@&5!}p@o7^I97LS!{0d{kx0>`pVrhTnCvpcXX5GP!_)`H zQ1RZlvz{NkzdK07n`K06RIz0x9 ze3kCGl{nxi7l|6frMd6XZ4W1MQk`i%0yuVIe7}XR@1ZX5b`C0o7VtzPQ!S;%bBme< zwq#uV$vzLEK!IM|-ucOeyUa^V*ti^jIKFfUrlOC2MzewwC$LP%Nj`eeKKkYvZvkJa zBl)>i3hM&=g)26*64#?(RffY#ks~9Tv(w$!2{UWHE|yzvDG5Ufe1{2EI^y-rQQ~1w zn}P~{5%yr;<&d+?9Mf5^uzF;l*#!cvAUfU>vzR+>U8=cn4cIJOcSY9l?09Jl>5L4_ zT4}H3#kbpc;ZH=k*0N;oclGx}?cG$>LMDDO5Q##eD$A25X=$$etXp~Ub94^ht^6~B zI!(4(yscYD(Z@S$r;g{e=*ZK!D1)1u)oo~nzi>(A}?Jd=S5ui&oSr@Uxx zC*^M`3$wVSS<|?$6x)5VdG7FhDBO`;e53T|M$X!YfwMWy+Q_imz+Ys)glY*sM!b-z z3l|=fo;1aL-SIHNXrXJ|ZLaHdKv<;S+1OD57+Lh<26K3-uqP(#F`1+j;ahX{ybfmyfNQkixG6QOdoSY+Ji_0tZ$l zm$P%<4y#1}DbR|63d$RTNFV=g4I})wi|17m{1sr$o}l}iZT#Q9Fu1GYnQJ-ffRM6S zJIY_H?LCQv;$^K7KJKh_XRsI?J}>oQ_$Ea-%e~nOeyR{^%#U$#tv>Hi=sEFB;OK~< z_!v?-^~4n8S_sMeQAy0~shqsYXx;-~(MVR??ey(Gn;HH;py9 z7Sf3XPVoFQI-_>$+r{RF-PgPeqQ5w;P<3iPEr+Jl*gJ|jVuEUS^rOAWvg}WNSfJVgzgp5N0H#d^%Qm$88=F-3v=VVGrlI-8(cHb4HZ6w_yn zEPfB)mcMzR=!sn)(!hm>=>`0mn3#}`!CNtkIGEm+e2bxwRn~}kphcKO{7LHL$yHb9 zH5zF<(RTCuJ`kqD=%=*$dvnDfo-1ev9K0CMHd4aI<_XL|RFP(AYze^GH3$n)A2`aW z3poz(R5I6g6`0{u6i;ND-W#CF5zIZWv|6nythvd_`QKpnIw4$79}}%!pm6zH-D)Hr z>56qtmItqgOO~y6M5s+$5D9L=Dofn4$)8Yel+n(0gcV2>PZo{W(SApOuj ztNHs>91e_Mg`zxAJP7{a9%ZipF@Cq?j&{XktL0E#zb&vi?>`dLO7KDr4d+kT^J5y` zK-&XUgSU%KXP8>Qi#Pa9!YN5n>IeP8DtKTcPdllyG=c^r*ITs6nBwWx1$KrXQJwGO zW<>cu7WM75_u{F@?mr@Qc;TB3%hVRHvBRhKG@b^|@yuuRK8SodXce7jo~_{2_Etll za7c52UeO7=oUapKS^B3r#79Tji^TA50V;v!jcD*>P0L#`f8lvLUukodW?OB96WHf_ zYh5%Qn>)Bsg{b@_V87`jCRJ#_7whWq3EMC=0sV*ryTj6$KahB6$F^B9^Tn3HA-Dho zvu3BS-C^d3?GYw#SrqM+bhG{{OP67LpHe%Qz?9uOc)`wX^ZWE#pTwfl<&cjR%n3>jR69nnkW>_7{kmxg4hcJ0#-jf79y>4^d z3;Y;f9LX{cehB44aL|h6(Wz4b+|!-8{IHwUGlU zXZF}>Xsz_$XygBmk*LLaY&SqlvOTf519I1o9@wV8kr+?R)^Vt^D z>6=|kmKt+?ABs&&q&cg{f)|7u2YdK`-4Se>CDGN%f#5RqsT&dSZ2TgjOWSoqJK~F| z{roxUjlrN-M(c+ipbBTem8`)*a-o?*M1EW_a6VTDXXlCTI|Tk(F}VXBcyp9V?(>!{ z2!<^dTH)#_6VZsNe!Pj;)@zKZ1$o+zXE@AsF>qUUoi=26?n#oWCqR;32PAZzG6{#$ znnCN#rIn|OBuOXn!07L21Ij>k;>ggLMl(h9!&eIk%Rdsx)DMUc4POTq@OmG)Ippii zKJJ!0UC#?(URpuqinIHDN0nfPyWh^(W+eezHqaCnJ+WGuJf}S+|I^+#Xzh(6Xo8~83*lVPDr+z2n!wk zIm5RBj(DQ2p%EWp>CA%qcHG1s0D|UPMKA~Sp{t{@(=~(CMjx911A~0!&lZ6(6mm1Z zk3B+IT&f*jreNj0%3Dh;Vbp& z4K|gjVleV0Zb_A~qVwk{nrTD#;1*iktW=vHAu*>RQBi0`@O>8gE8>v?Vm~i*w9%ut z*xH)1hj|nI2@=Lc_{3QH^|;EC+Hy(mY35fpo2<_n%gd+yIRp&aeU6t~Oh-UZBjSQ8 z4a&L&Iq9fu@jRc5mrR2`R5Jx3h`>(idg%Ey5&Aq+lb$izQak=MNnrZ#6O|tt?TZYDu%w4*_)~2kMe5moBl^emw<~ahVLMl(*5$S z4}XO5I@H04JAq`4gSsmE)^b94NP0xRWYAb2+d1^yrT|_Ovf)$(A~?O`*U^}2J7=#v z48Q8os96=6`qWWCzN#^WV>Vs>WseYhpsZ5-8|CuH=3HvDlcTuQo!fKt?=~Zf^hoK# zIfqYcYIalYc(LUArh&NpP&dn|5L7E|@y9B{Oy1PVR=*~ev z5T&IAhMs|8=AF;?d7kzD{+o5Lv+g;u@3ZUL*9Kzwpy+MLYsK4Eu7#vdZ=F2`zg`XJ zT{%5jbY{3CSg#8%)}urBXUl3GC+@s8uG6~y`NL*y~y?Xb^-F~oPtzi-^4Y3rw-HvDd#Zk1N z;c_rPAnG+=Jbh>3^Pt4@e(qzGOMwCKD{J`g>8m+i!=C{(^G@6|Dlphd&zD>(47CI`u#N7}?Z{9&md~$-OUzM|CypW{&Bn zer73f_u?(_{Q)C?)BA5I9DO36#1M$jUl^P{RJg4+k?aX)S-;{QU-qAJ7_|drUc=cf zxz^5P|2grlaKEyBe{r@7uzogWb03!+dW>KGty(E}Ht2PZGxlg9e;muLZ4O`<0O}8S zIP!Ej8Kk!#I$A07?Tmzm&6~y==Gr~BFgd~l^YT26U*Y#(g?U{)aM&(<0j>{YTS(|;9@~vOB2ys%Y^?(gE4C) zP>-k$gUSG7oTI#nsl7A*)#T%jqs=wugQfr62!2t2{dzHan(aW;Y^WSB|K1$cj*D(F z;Z~Q#l-vva>z;hcNKS9AL-K12bo7bu*9Sp#U55NK^aom$xoO*UTsg4{@(~;`$k>{_ zV^3hC`n}&qhs#>Rq6m|7nklf2^o8ZX>U{+vAL8uHMPy^~-^qmYpda9Ip-hu?z5-uy zqDvkxo3{l&!2yd~0uu`Jn<&=$+Hm{4YRc!#VBS}ut%8v`xU_t)9l28B;!AluQt5p8 z@rTav7G|LoG9|!)uBvR51-2kJofSD)-QYYC4;R-)%lXA?WLkL?k^A(6GB%P|>6^cE zd-y}r?_yQ~{;Ip4Qgb{^eQL?)V#|Sr_6AtA_{HZYd+!|^Y+@#U)0*G{=zC^C%|P+0 zowug>zo$jyN`@HFmyTN_%qKNm)HH?&giTDTacww08mN{xpieT%Nkzn8H{xA}Fp+%2 zwZ@v(c=oaZJ6t%ToqBWSflBR9dILRcRS9`*jmUM|yHXX?86ff?T8m|<4m@|w;ClmU z!jef;02l1#2r$|v#O|bk#A8{v8Y94!<(=CC;dWazOp~2lO&wo-(iCD;LyJBeV^OuY ztx3`9K({oL!$S{1E-zq4zRv|4!`;@fp)cyAoo0-aQ3BoBQ#ia==AVnlkurae%~-zg z209Jks|>?@q<3AHK8f)1duv^mi%4|u6qsw_|6$gsp=^TbaZ*qc@S?nVkk>F3aq?xg z7#m`+kwZ?xmor7@?PEV; zFS17tQe^k*s}{7&wty%|%VSz#!~hoI4l6FMha;~~kb4oSK>wV6BsQzJ)OIEPqI!EtvRc`wUlT50FR$Xi0BSoGEY*x9+RWgtBE-e%@Ua3M$+6hog1l1PPXKWzIv5%nVo z)g;Z~H+3-mZcdd>_-nJ36sI0c5CU)AS5&&j5)b*uMhy2U*bX9~3^4luj6aMuT71n) zRD&~6=0QaunjpDji`6{U60NNDVZqJi=_2sy^~exjk_6S(*;CZqC?(_^naJv$GF8>( zerIP^3Nn1l04npgwnpWZfQ0OE4WKWJ3)&ku0f9sJ_V*nrK3CEG` zGr|A3^Chn(ePDWLSwqEd*E+)UzjcuLOI=)--#tq}CDL>@$eFq4rx8K7=VPrv-|>l-$A8m0I~F|2u$jY;f&x zhes{)ETZo?@&P9-rtt$Qij@ue5O1zg;ypx6z&P9hP`?8@s65NN6FUBCe@qNEACCh^ zEUOAWr$|+U9J@k6!_6&0C(1!r`*{Npo@H*+oR^Y=QOpngLn1u1z+&z01G>YXPnN&- zFnL@zvra>9@PE6I-+hl&LlzreUFv@N5ESKmpkB&i_3hm=sxV`3l&+@FOU-98{ij=x z?|8C?yc#|wy(cm|Z_|JJ&KXW#eaQccrw35&LeS|Xa93e2W9Z`{p6O%D_N!tKE*^5> zA@d<6gl*TUhbeaF*36A-Fb$3Y(-PZ+oNx3vf+9zfAn$iX|7wG63+S3Yi{x^b^U+O? zg{haF*&$ZwkQ0~O>bK9@yJ0+V-MDT1jAA}@0{z6)4dQRVGe9AaQ05rd4#ewWo!Uh% z0{)lwJ#>Yk99fh~?<6zJl8`6Q?J-V`6t8HB+ zE^TUh${kBPuByhONSz5tgrhGiZ(YyfLm6pEUbGie z&T>0S+~_*Ie|Wyv8h|l{M*DS_#8SqfPVFN}J2t@_eQpFJv}ueiAMUrE9tvh4H&%?nDGAoA9inB8s4Bmpg)sHmw@x|J_4ug;=i^VplzXqtZW>86*qLg}{E1O>XdRA1^$_A3 zvKEX>YJuhW+waqiol*EhQR@r%2guX}o) zrWNNceYW>xme7p$QN2Lo?2Kb@#Kon35eN*qDwuF!IApdvul!y(xV)o zreTTtxwm-(5dcnJOoafk$kfj78&+fiD|6`FgJ|7R#UKxLYAD&qG!ARhsehk%G#8_4 z#F(5QFddJAlLKpV-Y-AnUXm+1tJ^qqO-CgvR4K;&i8|W-fp0`w=cPKdHoiD?SxgND z^9QOLMx=RhQYQ+v&kw$Mx$XV3Zr({r1$jwe+l=6G169Wsvz+_V8Gcl1FE)<~s)_Vp z`?^ww?A(ki4&!y4sC)pB)bf}r^pbF$8uNZxiXs~0cTTukGa?0s8jm}{@h-1!EkDkt zkUKwVr%OCY0aAGmTIzk(CVp+cb?)@1ZUXpc;92=Y|Z)HXQo(n(QA(N`w`#pv&==qwx!zJQu1CD5N|_|q>-2LHIPucofzHbtu5C* zrqCPdyqE$!a9B%ETg*o$iWB|k;jz{23EWq#Fye!>hsornl!Tn$w0|pM+9*ndxs{mL z)WB`ndxIeOuv4DWm?GbWI=KcIk0UF4lat(Lhh@Tjp4DP%Xhk*Ykw9jf$(E;CCk@fp zB)@*1hvRE#@7c3{lI7SDG5eFuCk3aTz4*H6EZCz1_)9ih(MP{vk}plU!*}VNqaaa` z-{K%!^ern(teR=m&$9aJ!kM6^r{$;^}XS#z} zwXR@FpNlw;^pVzz@k?^+ayHixl1u~PKBL@0zI#I{hcmHVFX@}!jjVif^c(AtEsw*O zZ;*0al~FJVenD3IZHms`-V&pd}cvk@Lf*N)sGYX z$C2S{yRxtyTgRZS$g_#RFNya)1%NbZ-(0?Z_VWJRqFnRLR`h&G(gjel4hwhw*=;Qo z5J&q{7Q(;u^7n4+Jw%|EULnrs;5N=vkuhmEmeS#OWwz@ zkIX?0KeUmZ5{R_^wGfnli+}b9Or*qFNrmSynD(*pr|b$-Ue?U znsAwt142AielF3yTp^l|Qt0XOjHdko@=LddZ9qw)GhcrY&%Y^(9aY&I zQfsct92M?2V6q>N=9U6~K`EKHDCS@Kwx#VTUVB01_6;iJ81BV*IW}959HhcGNE}zN zg+K1$hH6q)hBjN3(-~e_VS^>5j>Pv3u8F{?xWM7&Cu$=H_?6*&p^|zTxGEo+Ne7dJ ztk=ho*{Eir@w%IA9MxwU=0wmd+}&DWm?#E$dP zsCp{9L6K}7r4f3h%Vr(JgHRs}o!PBof+U5F*7xC1?Ph_(uPJlwHH!#Qsd85Il+KY! zl7`5gOO@{7EDc*w3XqVqv@a~gXGc`GCOR;|AuD5V<3F+ zVwr=X9AN0C(=)-r?&LW3{Sck}xPgZL1?6zsCZg2NAipF#tF+SKE1o4 zLHdorx+Y1aEoI2mmap5BRPGN^Ba;WmGDq}h9lb87_=EcdslOR=%g5NRl}dR^tC>3h z^Di@SlWA6_LRLT99Dd|@mObmYoG_H}W0nSl3R;(yPLzLtL!%8a> zid4?ryN+kQLvD|K?Fy)_xjd@ zrBDHu3+Fp8zI~NJh!lZ;MPwfDg-*mGK?LyR@ZoVsk;plz_t5op-Jg2>D_;N7F3gLO-L<(p%%ab)s+|Rg zNGwBvBcF12m|A16)>hB&RoO!=MiK^S8YRdJK1A$*H1{Z^-L@fiUaJpjqK{(SKcEbP zMH7Fxgkbs?oqULbkWOYn*5Qr(pj5~vK9pL6H5EMqS{H6q%-`7)*+(}~1Nh^5uCa_5 zHLSPrmtC7?~r3J4+f4mDtVay zpqjti&u(~T#KH^S#?8u?drv(Lx*rRVZo}{z(U|OTZ%;+2^;xidKM`GR3+_vn*%}h1 zF*fe0BC!y^d>radkyvbi(hhX<9_gv{VuBG!pZ0Dnh(7Plybniu$Q|u<-G*8ebqc(+ zLv?yu3DxFJXO6U@vG$L22h3~0JrB@den>;$(krEx7xnuXgo22kblcV5m{-{u$Y0A5 zecyXTfm#6D)Oe*vx76M?l^UY7(8vBw^LJT(fCHfPA@<5iHZqK3abw2h3wJHuoE}p} z%j#u;b`~Tg=xhgf&hjy<(6v_Nk+=LfJB_cnZ!M!dB|h8CUvH1J>1Wbz)uunw zXGf6|XQ1AY^hY&wWn_M*I-Mv}L$$hVL}hO~LH}{O0^kp3U;|K z)49k-11WeBH6&`z-$|G~e`3x2v0bg-9my;H@y|*ie+K{P9iT;Rt1-H5=Xurt;{t#l zyu{euxJ!DVQR3(QIZ=QId5iNAu?2cd8Kd`RWS@1WO^{E?=4&lBk1L5%zuC$^<^s-q z4GikV(`Y2>hZ~o&aBRb;WPhFyq)4qTtyzBDiIP&iSt5gy;7%ly@9fcZ9pJmt-6em0 zNu5TLv((Q+nu_#7F8b)=vKup?)X-g} z=2|^>LcEix5J-s%<^SP@%(z@DZ%~#v#&9^&^aQ5$ zev6jDGTC1UY(9ynw+PSIk;M-UoXUJ<8?=B4i6N1`(=K{9Qi4w&6%&VUxdlD(C03z? zybWMTjWpV-`oeNI%6&&tVfR(m}_Bm#Dhy%7nTPE=jGkX3?3uGtS~gP`NJ0zS>i+LN;o78GlgW zJOkI?{V@MZfaaOeAZz^LPHnh!(c&d>x={;~OiCYutww*pE#Lvn72nbfajg`uhQ7l= z=K9C!@&nK;=sz3!(y5g?aDSoHTLidpL3Vzl=eNE$t2 zF2Y;2jBKY=+b#CPE@HYdFsP!`oeRPxr_FCFULyfJ``QYPpTnF4e$_u}6t|l;1l5xB zYw>SgULfgHZ6G}df>lnDfA`Y(sb1(>aVriWnWr1Ar93J%m`yK9h4U1E+>Ier;a~q2 zt57@*GhN7|EsBR|VB+Zb*ROCJIy#@r(DWD)AbNuz9Or{r@W4&9`lrIljZFB9dJ*q!gp zcaf5BXG|VH6fi&e=qbaigTU?AV^|zymFRy;lAAsomB=b>s`%|vYE553V2o1N-2X9T zv-Jh$;wNdE+%}=Jxfjk3U}B|-w?<{8CAdzKg)3#|f`U+X;qjoGRhvTAG_?KlJf6+L ziH4(><1V_;MtG1CLM!UV8>UNYB#>kk3)ml76}7vY#tApeuP)aZ5UG5GLzf-xv%{l9 zs-Ou^cP${_&3g(+dmKws80UEt$l_`SU#@KWK-bsqjtGKFSPuR*`tQHy0Gg)i(d4DM zRF|GG|2K8J4PGeHxpCeX=(246W56-p5ag_PCVH$g&ZD$e@i+308fs&4sVnz!XKoR_ z;P?=i3^*M6s6u80DqOtEmKUXYbSpN%V@^; z`eV8YN+6I_>K{!G#4mjo5-x=maP_^<+6QTHc2AaVO+J;;)DnDt4&HgQp(^D9O5-p3 zb2lqsKgt34C{p{<=ZFiEUT}&(@c;;=uj_D9DS9`*gD%eS%qpGzri{Ya0Zqj+y9c)u z4Dfm=*d`Jl=W$1odS0JCG&gKI)?>9S7;61j?%dZ5@{g-6&cC}`bS4?kxc(Sv^m-2L@Jay<7DU}IVp@I zM-!;f94TW8FxqmB54y9!x6y1IOr!o>nPd90ZkU9zK{Eb=ILwd1#+N`au%UL@t{|x) zcH>#7QAT<9d=%ki0%AoRQ;?+^M*s9tzo+TD%MO1Q8h_wh=t7{%zK^N4d*0(Ft!)$J zkIoGKs!hqn>#KLHn`oD3Vf5}M5M8a)=Mi3BNUB^-L8VRP$m%u-_8Q&J+;?nLX zO#CAVa}fHtArbyNRV}!i*`PYHI43}IP`_GV)l#pXh>8Cv{4q{zu_)pdt9FboF$aGY zd}N$Uimv;KMvbbeIMoy8IQ9yqliMH`i!O@!AKKuhC%5p!pWU!vWx2)B&-U0<$or9|K4%f67U{8t z6oUNPejkWn9J_hw71)l%fugthdp_#)4XTu`O0QD;*u_C&tD`0NfN`cR7t8+Hdjy$l zc@&Ozy9J(019L6Y7QU}?Hg7IFDw0sQLAqN>910dq`^}EtBVZra=DqguD;v2HK}cfk zNEWH>l_;?Es@Ox?QVxXwVmr5;NtPEywMPa28yWWWLhmC&cml;C$TGm*= ziA?)s1=h^x9?_01#P#EjlL1}ZWWVXHe3!d@E)&jGM}lZ$@X1`lJ338qs%#gx zbdUecKVM8Eg^U{+r%bBA=IpeP8gJwJescR(x)B7Vhl!7%KbTI=n@}SoPH95j-^f}r z_5H=i1b8X?Vhmoq3+n0|LSm{1{AX{Br}O%Rr8Wa8_8%ivO*?W{=4%{pN9ROJ7A{hk zg(ql}!H+Cpdn2m6M>Susnj7oO;f~BDtwBO=kLN|qGtb!@PxMgO6tgdBb<1Y-kvvl2 zs)aE4_Lmslu~ViH9#b)+9oOWTxt%J*hy@KNrqqE`k_Sc~FLJo2+C`-^2d(O+TBxBY z0PUtb@uagT7Q(FdFlp;9=aG!Eb|J~T*FOJY{U`{#4Dg7v2y(#p?t#s&V1fIP98 zcEe&_%vTue=0N<4?|`c)?X@yJtP-@sG-m*Ouh3`CcT*_HM%XWE@YRvPd}~#!%P(zcUp>I;x`@Tou;zYMH_DJcs37 z$kk4mN#9MI+{2haWF+?!@7?Z-N;F#GU~(65W{HGkZjnLtyD421mPSSCo+(p^z)RHV-OR!MofY798n}HPh1M`7Hr1X%0&jd4=tdC%lehp z!QW@m0%&B>bof8j!yn%o3qK&3WzYuUcM44Bzu4rxw9aBK8wcXVYV1#2(L5p#5022U z9hE%~7dF*dS8D5&5K6Uv!uv8%G-W_5%r#2DHbLUi7)zSMG30jYf8c~e*UEt?7c!;o zZ7rt=%HINKDYs{WG`K2GaBR0Q8j-JDzs#{SRV_ceeaxFo_p{9X1W|)iqBBtJ=o3Zj z9<$v!2VYyIJ;?UHJy)j+@>;f)m(wR3D^~>7{c6!L2lB>ahO@O${e8z+lgB(o32j=3 z4b}ucRp=S#1DomG)!0HkjgV*RdDf#p7)an41k)oJQxH&vOAC3c#w9Gt=E~}pA=D&M za=q3xSEiTK%EP`Cu2Og%@=tl3}lR;MJZ&bj{&(Y|5^A&ny-p4W zlfuQVxv{0DIkslqWElJi(7!Y|c~l9Mx;ElDoZ45Y)`7}?I4Pym!u*c>=Ap;6yl{q0 zboOiGa3@!bSR&ACABTASF z?R5Jr(>S0DcSDe35PvR}R2G0_j9YSY`C7AIWX}g0yQ1FN$8?X9Mz0-CYa4aQgfsJA z_}MpRp{@nOF>2!`9q_O7T~U@@lHqgxyxO#@ifD)OQ2gl8wk2`E1mV*;JPzc4a761z zGJm|>vRb}y1$t;8rY7(G=8B!eGqW7J+2|0S=sn1ktjgcA-Nr z!zLc_B(K5S)t_|@B70E7bl=CVQWhG5EI@H1!{&NyYK1Uh{R3n8S6PTMGh+zn;hPPd zo&A4nb=?Cp>pBX4o28@{2&rfS?d$5v-8Rqktieze*h=m81P zq&0l6q_PI=P+~(y4p(MLY1tNPh5OUn=0TED{r=? zUT*g}ggO$W)-v;zrXoxpj+o2)GwFLVxH{nPy5kKF;H;b3cLs&3zW7ofYP}k*v|f4d z70`ID|5RB?4_0_pLyYpF)b4W(k?dpWhFs{0=kkU}CK*t)2$is5yOBVyE*F;910SBz zUuynbNQQsJsk+Qnkq5bmnGS>phw^#S{;kvM9&&N{(M(_RVArypGBHFGwRU)vCQbXbz=e9fo3ocbN+r0S8mUe%a?E4z6p;WS*#9 zbYC+*Bfp4e6|7PP2fkox-Vm`^7I}sC3Pp}zPOp(T_DVKd@TQ?cMb}~)7sM3sF+G8X zx|U_{PeN0_MX5dB=;|2< zbwn^#UF^36H5EU_TExql<|fHO1=;3FqI^X?D;HIo5D1@% zKK)=eIt9X4R5Je*ROfW^ED+@!mw;u_~}2?l?-5l>jfv1);_ zkr~&kxO_;>Qte8=`kgrS_m1Q;+~`0h*>62ok-Cq((OE?xtMAx_N1Qn4*pJa|#RXp5 z_{2A?e_V9SjS?QnAqx1HUMh)XpCzr`=Ruzwui_-wbT9A0VdRh}8lU!{&Ay)1RVD3G z@5MUNzgEvXw?F;rND(+U>a*5=Ow2`=i@x~*XY8n>XHly=ve%h-#q^8Jz)`Pb#S_?N z1k~EwqTaY}swmkra%%s(51PF8Vz+@T^vk! z(g{WlcpY)`FQoV=2L{Dv>ZJb>{EdIkNhamr6WT&Ek41GU+O@Phs@T?E{m zXztF@f5-589d1%J3*65MTXm0D%(R_G{F_%9U1sehaaioa@qSR^-%I}fVriMj@V61X z&m#u3xr44t>sOZ%tkOrk@_AnJJowyxFpOkT-Idc6sWyKwcO!%R6v?t;fMqLU^~oCEaJ@GKLlR?mcDZsa0gdCrRY0;(eamEq{i`w6|16jHf( zC2eUuXtJc5*;A(c^L+-l*h!27M`-aV%&lu!ew)?s>7mHQ#%BZ6d{oUn#oZOJe0WVo zpx%$W896@<{@<7EOBz1M{ZRN0o^lRw_r5pEH%YW8|ve_Nny`=1$iyzt>~FtA(S&l%{5Lgp3(fKD43W z?Jov-@O-5F_0j^+ZM&9cHY@bo)G9ZUNN~`?l4zt3^n}Y8RN!m1ByIufx3f%Ir+7&3 zL2jLk`fSafg4(oI@T+HpJSh80I^ihKjUDt?u%c3IBm8^{0H8mw2&SufL{kS$ z@2xf!*F+fQS(hIb|B!W5abBEbGy}A zBb?&SsZ007N?{wP&k^TZDfC>je(RQ*M6a$t)Isr~=6Q6avU(xy|G9uh8Qovd!(Z2% zQ*pa;P$1G=6Rq%@kl#oYs=6_R8`(2*sg97f)g~!9k5<7&mfWG1Hx6_tCtQal!70-q zXa+NZ{ZmG@ZX$=6>vz)D)4pj0fNfU4ZN8!LLF%{#0=|zX7_g{|qV9i!N@kCcWwbdr zAg<{`_fzFh0*&!3 z&%=i^vl>heC#MhGp$+=pg6jU8&6cB)^*~NwGsIW#!<7V!<{>mnw^*Oqyv?tU~Nsi#XIp3SP zT~)Zsb0C%jZ~p&=L~li1X?ai{!~&tph|#D(ifKh&%%BQw{I66-K=%LtizOop@GudK z$WR>$@~9^SxQF@cG)@%!dbnH{(*M1iji$`e2fNBS-KeVgNTSX-;E_vC$tq%$A^@Py znJd6MHWFF#n6GlTWr7`fz%4et|IdnWpT=kyX0!$lpSc5pT=W{<54t~Ju5~X2 z-877Y%hYjbP{OAm_E5Ij7w*Go#yFJ6wEKr&hu4vyW+nj0Q3VwZXf_8Z<@5RlhwKBH_`d zA%$oD2k@}0S>Kx&9FzC|b`|B8O}seh1%15`Arka`0y;nbK!KrGNmi7qw=%p$4{p5Xo3wp)rG8H6{Kuv#0T~VzT4L*;yq9{0KWiP zU3&E^RBA)+^Ku>4mfi*Y@(K+mv7tHr(MPFc^D zPa*=~P7-T1Uod)>IzE)Qk4?$ErG`|yOG47`&3)EJ%|=BXDezYPNj~=M>Ki?GG_-o= zlIa!FgFd8$Q2(Zc;I!aEAINV7kR8n@wwXmF`2qO%tho-dTc|jW%9nI|0IZ)P=Vo1x zlVFHH@BOIG(W74>7F(QQ*V}mmxW)Gp4e}G{P2sRtFT5uG`0SH9o@KUwAdDQD>{(+W zCc;sSW~((99~6nSRiUtvNTSlhm;<~Ra{y2poq4NxfTKjWVY558*Qn(~RFhpealOuz zfkxocIs~kMbb?wup@^02N7&Bm;rOpHt}~%0cEC<0wg2xa=STvu(>Conxz_9dyHI7+ zYzcYIG$nvGN(1eUJ~Y9#dit+|STstdB}$*5Tjg_t(({zjTktziDMyT(Kd8<+4c)*T zT_H)DeMkWj@!>T8H}r&lS9{cV3v}i>fz5dp{F!jzi;_;kKM!)Rk-s`Q$#L$!kC*|y zRj&uLPu(A)^-?OC6-lES=v7$OUZ{oCQ66+9W(&XBo-!B}<$UxMhxmw#@JV|98~w6+ zMT|0MJrvnYk2s8a3uL38ZnEUg6fl*0itt>4pS1*G++>W0;^*VFC~|?Y3ui&EbFaQ% zCZZdYza`$Qg4O^8j*QtkuH40{A}p~R9_SP@V(6g+te^0XGKa9cQ7ZpC@5)3AS{gkR z%}{?NKge+d1B#-TWi|9r-!%2pi@yieC5^oQ9%#Of{S#ZYkgi06w?VB{Zz3~&Ms z&z+wYFIuSIqCUgQ4gGDC$C0~M;QqB8+=!-GdbGv}Wq!*q&rxGf=AR;T2+6RGu zi&K{7Nt1ZXs)SI2oi&_E#jT|yK>bv3Rbih~i@Ur2LOErx%KySKg%pp~B3PLkRZvM6 z`zhR@2TDjCva|h}`r^ycdU{J1%l|v4fd|lo_Glg<+#4ss8+p=!mf$(u$3}#+ywP<( z0j1Y}R?Z$msfFoE3mJr?vx0*B7d7>{%lvqTe>T*C{xfTx|Mr(dEX3#xnWp~ap;d|* zI6f9{bDCR%jb{>ZY;g~SEy=&UA$zSC)ID?nSq>x56@fc%cR)rG=tBpr|kr3 zHj~xh!9HY9Z~f!%&jxX!z+D*4EjT0?jmbF14Mn*) zVpwB84$D)$A3Af*luxNZ6s4+sc#j@RXqWiVgHnT&sU=$fGEqg!X4rC8w!JRcRt*7_ z128DoUC4GG6#XX~{j5l88crK;*5!A8UU!g@D76@bJMtitBVK@0=Y+COuNR{hA19(z z@N)a4aUKgChGZBh3TL2_nW<&ev4Un>1C>7P0@$9j@fKHmAf-ai`x_mC%`NNGrbjK# z>1isjc{`N|t+TL5y1pp|g{3LU@l}4)>Q_#c=qh@7O}=QpR|X)>)WJUZ^6SF(!d`=K zd8$9)dFaJ)q%MQgFInVnV=U%aAZ8mXcLwE_|8qDvF9K$Zh%uK{frUp?)9?e&HxSRk zMk4KZdJFXBeHt8vjVEw{y37?5&RLv=h(nYHWM&!w>EpG=^_Z7532c6oK z#OI(Ga0W>BJ30lOYGv0OSJ0!rPE&Yqp7HCnpzTER{V)|!4X=r{w!)- z)60};MMW>s#T&)((7S+W^xWw4S*xz(g;cFaTyh(*J$dNtH&sVGLYAq0o+%rDt?$Ew zFKqy0o@7PKa@0tv&&}vVTst%zJh3ad($%_79s>>u#;}Vi70Mj{pTM+5BQbaGS)nZ5 zRPP`B93fn9bkV<}Z==3?P57q+w4Ce=8-RGeID&V41Ge5*xIc-#_@N*;4g!{U=6f$P zBoJm-ASxg@NoT!*n)<=FEdJf13nM+l>KFqd4@EZ&*es&MCCfePxzUaoN z^AF#hN>X^H`Jbx3b5Hv!dJg?Q)7?+2Z(FQgtHb!LA`qB6m1pmNmn2iOev{Ky_PeUK zO~fj{%9avEJ1)jqeLR!i@TS@zAMmH^f~oqw8%wDs|%* zw93BvIw^K9>EqCAWAAfse}8>RkHR|3Z$u!044ubYt-q1qx9eJeU5pJmUJ@9OHh|3XL{e{=ZuRa-JhOj8YL=bmF z(2&iqP5@v;e!^3&M(<#&%QV+Mz~C|;CdX<&!yY5YLGpZu!!7GG99dLa}*85jh6s_w%WEg+&6~=r(lSS6o_y=N{x2f=*w3AqvDOVjBjuE0#V8AiyOuh*86)4 zvy5$X~0-Y9i&kF6GqqxEjVS2=WX~S`I&#+4aLSH6wm;i5O-9Dx? zQLQ}3YcZL3f?4TP%5LAJj*xslhM|N_C<2cu0PT4;^G>`w{-@){$Wi^Hl zQD+C@^7BE7&@Z3@nm73R#KbiTE=nWaIh12q^4?Blua>VWZ0+-bMfTeRjM zLrmP~*0i=5^;fYP32Z>j@o;>hpIbm^1~i^WRG)BsZ27t7l^I6+e2-+`TmQWU!Ecne zE_m93BP9|Anlj=oWK08b;+TB!fQmZv@)i;@`?FJMgHRnx< zo3X$AZ-`(KsYU+8rB24_D;MIeGn|L!q3pl}B=!Q8fuZROo?hjey*Fl)E{8n%IrF|d zX|RBCj7#%hc1Q)`TRgQP9UvGPb%Y3OLD@d@VXR-jvlC!H?a-mK(Q6HI&KJ*ah(x3d zl%_p*+k?^xW{(biX!-9kP44VRt0!SGTLfSRHdQ><;KEQCBs>n-jc)BF_N^x|)VuqG zAHwsKw`~j+7nT6yK#_-H(18!n5HsX}mbu-=tl%%%O^-J9RZKnz0Y9`_niy})wg+Zd z%-7MW6{^A3x?DoYva)#4dQU92LU1LIe%59tJo!Vo#`LCH={3Xcnsg2^3x-+On8&F4 zkzG9un)mWU2KQ&=m{$zASbQ7Yc$9(an(m}W%LmR7LfgVxTO@*(eA~{2-i4T=Vkml$ zjAhFh9TY-QRHl|(~7#UC84a(sS$GtZM+~ibi3!?SyF&- zW(cOoK;w-W=;2N+-PY9ZqzM)Ge8?+?-0hzl{A|Iosu1}Fox7k0StJ+{VdG@_T?=zI zvkbX32}j$Vfi`7+Q ztj>}IWpq+@AX+Ntpp{cs4i`a(U#2uZ;nIcyXD}g{L5^_qL`l$zEj(P@5a@4$n}fER zolqvrem7%71c^r)Bp0*cSBdnE?1AYPJD&3{&3~Te{PgZ3Z$<^qf(TSa3KSiPEWM7S zOnvq-h6)p-w8;i=-Gc91kww_JId{cG!&V{npvU7{&j;g@-QynA@D7#iK|>(4ZJg$B z@3UNQo^VAOzp9CPz=4o#VFtjmIMB@cJ-U~>e`VG76i96y|gA%!xRcSv3@#DqHglgXT&t+}?hEw1Ef82dlR9sur zZ2|!TK?4MLw?Ob<9fG^NbO;vQgVVSL*8qWrU;%==Htw#$-QBI}zMXTv?;ro;9ry9R z?y-CI+Iz26Yu2n;RbpW#sbd-CVO3g}tY~ywA)KQwoUF)pw8xF@wOnqDas6`O2XLOQ%i9ndy`trNe4yx~o zS2qa&Run~o?>|0#2cDAw>abyj1tkfQB>Rkv$xOJ^+F=1}&Le~)Q=}yK$bLf|mKx;n ztw#L(MMO7tg*6RX;rqhC(s1Zhm2!MY1zUlL5|@=})UhmVzc^jngblB4#HJhYg=P}i z0i(O1>Zcu~+Kv+Nhh{!0ke_$yKyP{;<|t38nlKjBzc^=_7(P0~@zzhpV8ZT)YLLN_7IcfpRjEf#e~Ug)aqx(>MN!S3@wfl(IjKM9h07*^2SaLvCbBkmfPYd#(MTOPzEYj72C1s@@!5W)a`X)CsV0USF=jdlua$lKih}Re>UJN%SDc;oO5zBZ4md(?Tv!yX9#Z@h;ys9H zE(Ok(Ec*0MQJ;Re!&~TMQT;7JTbkg;C60=$J{LzO%kIc07qc|p?ZtkP>zU?3lzi>LgYh`hBb(;Mcr>a9TN*Xv5bogUgc=FhCkXL$QlG}5UgWeegd$73% z!Vvpq(JAMp9?CcA?EOk?o3eaprxR_4>rRu||5S0z2zA>*?tb_1BEnjj2~Hq_fp#%> zJbJYQ!Y=9R)T_mCPt8;lAE8Bqts$%3*&MB5SdC1hT)dM~>v zTIZ!qQf+#9`b#&X`)uXEH|a(cnCRJB^_NYQ_(S0Q?fi`T#(6P zn@8-!rp1`r$}QKl9u77((Mq;a?y<-I{ZRSdw%QIhZ7AEa}pQ`0}{wC>uA?h&Lm>mp4h;_q?LxXLL<1 z?7+V?z4(6AX?>e%5}-$m*-RQDXB8Q8;e=DHXzh)dx4x>L{>4eifAX|dmSpdX zJ9zAtnF`Ew2-?s(1s1ldbF}9y-@WyFJZZN*4y4VRUFrN>O=ZdYl6 zci%^c2*#zqvk4vkA;!aYIa%OC=S|+`;BnC+H|Z;D_Xh5b)JEjo{MXui+BN0T3Qyqe z`Pk^u4cTN_GuN40B}mRv`kD!+h0(#1V-TKVIDBWxM0s-2<%#3dQQU4<1)J`Fauadm zjLn{I8zVl+l~~>);kA86K#UxErAk$?lXp>9;qbtx;6CL%z$aS05(;f~b=D6W331e; z)i(MpSe34Mkf&sLg6Bm5bV{WzKkSybQ1x~Xy)%{N;>zDpdpApBdu!lUFaaTOl}m)F z-%GhLt6CSZ8kY@b*H&qcpgOV^OxDEJ>7}N&*$O}N@ero55$+V2$@(epfQM)_C<{97 z0pS=u^3R|6ss*BJvM3I|VezpT3V#3gZ{Fm3BK9N#Tq%;D2caaVinK-5*4(an z-y`Vf<@F#|1(0&__7=F_x~6OBh{ck}5CFC}T_m|DT4&RygYg_X>;tBtZCQ&~|ClQXq8cVFoa()?cXjGEPJUoV4t2$OtPYA+rea~B z^^U7f`%v^*+B7!)#O2bYUd#7cxvF0;Mg}0?EVI~KrQP3hz-y|m=iU7)>$a&Bh^OZ` z5DUs|6p`tK{4a2qxCdIpJwFYsk^l^-ag0OxD)!6|WyNe%NxGfyBioccUE$jY+^WV%z1Z$ z9TdBtgmP-AUm5e-!)P z_ldKX-@eX77oyDQG8bB`hXZE=BR|~o`{V-RtL;S%dyNENQtT4T_XAeT}l@9(^ss z8jh3@$71VKOjnG_7h)FbBl#4%oZiorXBU5_{%cm515y3MRR;Q!Lp0m+TDJ|wLis2S z*0-4aRmNNX74!5O84+h0KQF>-d`38+{#K?s%_3`;gzqlJq!Qu#0w%!*;pC<@0&r2s zWAp=h(Jci~x6-}vSpBEXIXcis!7Y$H)@hJ+0brw^XdC$MPRwrWJ=%aLM6@X!nwy>5 zu!yMfHg3In%dOGFVjprL@DHZ=C!{J`3ts|mpQ@mW&>Ltw%*_WF~$VP5_B~dcoKWjy61Hg?DcKhMMXv z2mO>~+XHUfM2Jh@*_8wS>*Zcb$3Zkecf}&mc|BdiDxHY@4npTwI=H44)38;->addH zSX-X?&;4v|aLYJyagI4U<*Dy=s#CClc!pp<&k`AB$m+z+z z#kc{|q)OiBCd}s0C&M38p+*dag?N5}FJe;! z;Z00c*I@VjMC!Pc*n}T7j&GALKymBE`*f`gj*~Z~%1AwPT~iP^Edj3~anzZe=-{W` zO}vPBI6i$1+Y}$w1%c2S%Fv z6q#L18@=M;3^=XQ15-?TxoV>vJ~!Bjm;K%$EoWe1a76Id2FrcMOD_nq${=bD6G3=# z@?`Naa=7pnGaXF})BUM9`MJ#%@SKOy4Qh=SI0|H0wQ%_=4HFd4CiE3{bK69SCEjRO zTMS~}WpDJfn8ElMTJOCOP~t0*-((CKsBmS*d5K7RZ~{zXe<9Efz`*x=1=9oI&bg$8 ztHCPYF@X%I;e${e8s7Ptmu5$Ar$GNk*Z!I%2jct3JuW+~k5#s%rcYS5UqiSjSD3@qNIpvG1GIPj< zm8x>{{2Nn|98JmQwxmInXBR(c9VRrp+BLc^8QWG|r#%c;Z6`htSTKG%otm zU9m0$O6-?BipYeuErt;|bzfv-yzOi;0TL8*%94rZj=4oOv0-My6(u=ZdFrk8A1Ii# zN((Rg#ml?4^7gTu8FZ5b)w`Uu(0gx(zcbQGxhE;~bEk7J$m3+>pT}QKeS{!5Ko|lM zHQ#b>0wCRYQcQZj4X+y&h-eL9-#<$|9Z1sd_;t6oSP?47r8}#QVA!YF-Yyv5MXu(9 zKC*pL5#W{GJ=iV7l~-5Mkr~R-urVIqY_E~2ARlLBA0%(}De2etXbMngAnqeZpuEJ7 zA9xWAoCyJ0Od%#uuYh+vyx@+`?gCZOZcVa8Xnxky^JK ze)(jms9UN{m%uhyOjv_ehyPespH%877aLD3{xh)#BFZlF;Bxh;#Y8djLUVUvbh1)I z#>&b*zSd^0K!k7-?|wlG9mz_Mq4p*fAcsZ^Wrnx!Iz2@kQke%vuo7Z8J$*X_W*ma; z^`bu|Y9gV)p9%QO(>h3%tI`cY8#w*q6X`` zRuQ<&4hv@CW`js=Jb*rw!Uqg{pMXuPqW(94BkNF#sTcZ;>rzYT_7wQ`TkFHyta;bm zjW<6@>Gc{rClPUi!90c2%3Dbea3_-@<(a7|%9+vP0`22Y#?F+~@f!GBuHxsXY&mVY z(}sOVKGDwGOGy3s>cUbuXPsSAF}CPBnT(~rWm)T5;+G95@~cO@r^|4lMpy6GL;xd& z`gzB=2f|3`K<`i>dUtHBpdT&gpZn@J!S}A;b~SwW*?m;t1YW=K)`<{d)Z~1wbd`D! zF}{seQ|cbYCKyHk)m*N(yXWcSDks@&d1~`Xlfr#}L&R&ynOAN!fFd?}X5)UE0LN;S z%oH|t-hGab>;zke0o{FAmLFB+IpblQu-vB=5CW^9(!$lm{+>w}GW#?P7<36|#zOyS zj&8Eu~XBCiu;Z@(Z)?zAgQT6){CV(J)ZO$HaWP@tf$y`}rT%J~0^fzi}~c z^HZ#PjQ;QvVmCM(JPU$sfOWoo*q=K6&e^nnRJhq!c%-8O5wBzSTxxrxZA2%b3>ny2 zPzq4qrtAcD?SxbvRl;Xe!k&gQv(anp;Y#O4?UMY%pbxVnO-e#Hc&x?Tu#cvObh-;8l>-(`d100q<{0A^1OshK$%dJ$71wq;3Um~JseG(?FjKK zJdKSv?n$YCFLWrf{Z%==guFzR&&Fi9{72@*Wr!Go1F02PUY~hY_kW~NHT%?>KQZLD zT>eKvg{nIB2_eLa`>V35uq-#eSh;P{nf-0d0D0^>wS&a*m*-@Aye&kGLk(p6`|qd! z{JYgf*xC7iYXMCC--?*TBmS2x>zVccyBg~M+kp&|f5v9()(JDLnGG6rr@AhD03w(_ zK~#f9e6e3Y0_Cf&nbjSDJ; z7T9 zL?{UB=H?3Aajm=`JPh!M{oYD$ zXPCi^O71PPNix?D7ERo921H^_$$fn??O#gLZ79yfVtbx_)4L37{yjpR)e}_}Tw^;;*~mtX z0Mc9LDn+U;ji4_}3^RzH7n0=XuQ+&LQc3f-z0Bgh@5JLOZ~3&U3vkzi=%vdbUpM=d zeMgq2KA_2r-i&oJe*5Je89V?L(rD7k4jbyrA5#M-E2FiVLnz_1=41VXMRT%JVaD8d zHB`rLP>0n9T#RDQ10NjWus53DFKI7TP-YhN>Jt%TyO8e#XNVqTyHJR58AF zsZcf8*pg$n15}WN=j)H*z`)2psK+tKed_aLn%Z1w^w}lxm(^=d93vKvQTX8wJm}#% z(LKw%?6+a%$CEa)Hw%nc5ymfQX0G+ZpAbkFe%uJ>$ZHRWhr@5Y;gMIVeIK?EI?{Of z&GsYFKF%VKuY|zKu-z;>hICIs4Cfw7>g?P2p~03&?HcxGvLt=V^Ja1~S%>t_R=TRa z?xnW6RQ~R`Vz6rVZxkAAng&63?3lShkTDydFH`@GlEM|Uo~L=~6|qas^p&vsr9sXQ z{ijYh^{HLiyB0kTGGHdHQ5d)^MZ_Q#z>)C=K(jbE93QzLHi`U3F7qME-C#+3p6is- zswnILJQoyiG4N^p-{Z@i1sorX3qUFGE zi-n_F-*0O_=Xdj`@bXrc3%f z>Kyc$XZVowzwSv6P2u60rPbI13oGhM(-}stZStEIx%R~lL?bQDSxbzx?U)kDxN6VxNusx1D4OTD=8ehsddS3X?oQwD(Mw-kK4PXuUN4mKRgJ^ztru-Q!tzn}ED7 zSqaxPl*f?9A$2?B6P@1qDQj@Iss~#%y3=R_(LxjKK3?C%10u;}+z||xNX%U{i4IeB zPIkJOX_JaFn3>AYh;!saf6ihrcwj&ZDO)@)guUq$K}Bb<)0HNgV!Wkh9tEKv#d&xT zO8qdOU;d@oB_8MWtxfEKY8>Pb9fGt-q`Wm^yj}4w4;WrT&K7r6=~$gZM0jp$!1 zdf`T0LM-nPrU5Tuh#p0f=mp)A)B}&RhwmY93xZiq81X_8aSeV<1>NNOjsM*F|YsJrN8~QAO0mszg;N2 zvvdTjYAqmEUdm0Uh{ExQ>)tyId4KPG^vLAr_z)Z^ahy9b>-Z2HKTSfJk?X^p5AP+d zQOP-#7PSWtcFV)K_vwq??=dsiXQhlNP^CV1c;rvw2qM@@V9IX!(~x; zV25AopL?q35JgN>bot$qE$*Ig7+$@9ZAyBky|yJCwf?RPMAG(6wgnk(6xL?s71OLc zRL5(VxUJ%6^rbS7XmA3JSR`BFlunGr2$hn}#$pK@WyZIE2WrK~T(QC=D&1-mb_p@> z(WrU=1KLy92lFuG8wws~s6*c{H=_2pM`(UX7VqF!NC8}P*nJl~e=#>X$?Pb_C@~g_ zLYQ?3gk}B)+qB6ImIx`>(DfP^N1xd1P-%*6)cbbXRJ1&BJ1(K$S$~9+=96Ny!I(fg zvk(s=0$qz#ZG&9OjiM83d^&E$ngQ?VOykGJ-^kMOgpHdUZRXvj4IuIJWp;L2H%9 z|55lA#0>whE_Hy_L^>E}0bLK7nVla_Gs?Y=Imi>QSg9V5u-IMjZ1JG2qw2Ago^M1$ zzPC=TIZ-x%yPhx9f4Q#f<|_%3r47IQ26|7nymq!hPK!fNA1OdH#>RWrq5@R-4`x$=A%3J zpn%VNmJ7G`xhq&9R9+O^^BfxCz{4+J%ldt4?}=&;1&&0OyC3m5&`&77t2QP7`#h&u)@e@ZW~jssZ&x zcT=m}1_0St2iOdge6)mGRfL00Gh?gIdX#|sI6Xi;&wSPq^^J4aY@=}!#)LV@6&dq* zR_aN`!A}OmuBOJSqlj`=?9eQj#$Kw>P*q{ubDv>;wqLnoSn^i!Ga4ZJYt=Uw$F9si zsA57_q z9h&8qBApTWPs1DFQsUgY5l}grUvc)NGFkty=&?b<@Vmxj zOPy^Tj`@qt@)9!6&EDwbG(_s|ixhQNb^+L zyfBs5EaqQ`O7~>4Pyu)JmmJ-3hS1lj|EI;b1^;BMhnOla*Ww zM*p-nx01rt1pk^1QA2-YTg6`Q9A%PQ^=Vv3p&`?DW|P62Ng}0t;uu|}!0n0qD$j}B zD(i)4?lXE_>2;4c9roQ5t#0Me=Rn8Dbp6T-qN7_O@?&eOr2=4|&7T_C6u=G2K9)@p zsqP!kyOOL&vESvh1OE7sP*Uw`Lbvo!dQ*X$uGeHc;`e7Z@AtlQe%R+Rsb9bJSSips zO$;bBMl)9l=`7S54SWOyZ$|8XbaL}U0>$pb&b04NGoGn3bG zm#T2zs=IPOEBj$_In~9ZBUJ`A2+cLbAZ4J#(;2 z+5zC0yCX`KbNt8?u$_f5_$nc#ANBf6QV>r$qx>dTe@|vNM5Uui)kcU=_LH}5$WUoc z?FS87(jUJz^2TX9)j;A$*Nu^)gSPS^AxDkKKct0iKH$%-GJ}3Xd$5fKE*nugIjEbP;chci zwcK+)f6t2(yZa1=#^G07)s74fwFuLE@qKhiRJO+tobs=@oYJBs@SqAHKJY=%Ht7vT z!}za<{Q#6GZc+|<4>QbteF)ZFN#U}8uKKr6^OukXf^T&j`R*MOsR|Cds%{};1v5OL zx7S`<*paWIz-KxgDtJ#sc!89jlR$U<@my~50U`B=w(H9(&vVl%uLYHyy+*0QUwh(~ zf-nYEeJytq`qo$|K}H z|A_seHIfy6**2%Jpx|)I5D<*3|4e*8hv=!f?4;>%kd}2%zkNlu_;U`btIiuT)~1r5 zY+A47KYU1^CJ>@&-DU7RWjJjue*!^xcy32qS8o&IjCVes{77@L7#&XIaXEEgNpmqF z?f?a0w|?l8hJ}>zr-4>2&6uMsuDfEV#Y{dB{G9yVg$J48gpr@8OK=XV(i=h3xGC%mIzWFR2T{Y4ptH)Zx>%it?sARJRD)tXGa_=G z1*_2RdFt@tUXnpZ3^BbU&9@@v!W(~1+p~F<`&Mgr-1Hv$8LZh!A5T^XQHRf~3d@rt z4}`2lH+S*iZsn_G(%t$Vs#t)X&)2~Q(Ed3$m<$-ELCk?y@+xr|wzFJiedADLhmi=? zvQ+InkNtjuEQ--DsB1HBfwz0`i;g!%YyHpungoE(EeLn&_xHr@Jv3A6o`=}YZ@&6w zd-1>od5@no#Y8ZYrzOKDOYk_gy#-3eY~lH#gTdaa*k!hpnYih95ZS1nMxPejGgmCa|A5pUSLZ1gmSE~C-j==3h*0LPpn9K16h7}qC0|b zfAuR_kX;&M;$T5kKFPw1h_b6UBvFf~TPl&z`&^EjT~^NxIQx<2@h@W2qU~XD`>1NE^G;>!s8sB}TK{u2AIWHj!&EV3 zIs%bO$L@&%a6qT<8$is5oxXv!0dV9N7az4`!H;Vz)8Hq_ z4VlRb$}Jz4SD|izeiQV1z_{De6p+^4WD%Y~cBoM9_eI7m5M3K6Iusu5pWXwq z(_HlJi&SHa|0-K%d9ut{2+su76&|0VF~wZ(o8wFDL!;sr!=VG--j|kfSL}g#iLrB1 zUp30>o8i3t{PMdGqsF&X{OLPV$TQ-C8v-t~M|*63p~7Fp$y*f~)AvyoRh;VSp0(9K z#pZ1nr?P42QzL=o15=aL^-MfNo&`aRqP1}eGV2>eCW0#yqpcS&H%$sa@a|X=YMHf~&{hA)1 zA=-YQpH}j7L<9J>9RIJwz`VuupP-7y_`qd0AI$dXTJv8b5 zIPN$E;%FnCtK2K+Cbyd~wLCXXrS_XPB=+({50a9G_b;`rsS#(}C*U#psKlmncwW7J zp#^yzP~OJ^@)=crLt}vl5$xk^H~;i|UL6({(fwf=dHsB=7qaEB+Urz6gHD@QHR@6W^87IF$41R>9J|J6L%Jb-4hB zJ-aN~g-W-ALQSKR1*>{454uXstRIi`ohN?vK&$Il1HOxzX}q2mElllfV%V*rqVzhj7dSry2b@*2_^@vBt+z zhQl=?#%O8JU$L3s+S}R1&!%YWRaz6aWLq>bCJoo=>(9|*Ya-7Cgo{fd6Si%n9)*sv zb~3zDdb<&1tM`Y~EZKF1@Xy6-*Lfj!-c%Lfo10g944LjIbuBN9>SES2rSIM71d(hr zUB%AAK2->o8p?MkzNsS2Rq%PJssQTNaVW$o8eTFg)vufQY9hv4>V+~X|6pb!2ek}) z-kW=Fm4n=9r&pwG>Ds>vWxChedZIVkg6#}s|JUz7qnaOfe}UZpGhiwGCU2uNtHGCt zwcNo@Ka(}ECNZ!b`~5yg4=Wj8#7QGeWX$b-g@MrnOI*6Z-<`%bKmY(o5t%7?inm{L6M3_PUz z0=b;(Yw%SK=f{@p^3H5m!WfP9A)l|B$Kik)jLH&J3aA{`i8F+Z29zcz;l@k z=mnL?*Y;*kq$Hl3*U?%-c&opxwkorQWsog-p1D&IvpjV5cX7TbOGn@Q6G>F7d>KHs z=nNwUY?_p22q=ZpWN9d^R^Gi{MkEeH4^S!miS>ZhA8#1Yaaf6eX^(WrOD3o7IrW^> z>EP{4n+v4S_}d@fJ@1Lx z0)KUpML+M^m!7VDU?9(I#sGF7hT@e_iKL^Nh^>q_9s^*$q#ju^^Fl;`5MoV%_8{vQ zn4xo$7q{L<_Anxv0*x}42vqxWsv5u+7c!;%kQPw7{kz6gxfG&kb!@kRU z;48akIcp5$`nLfMoktB#nYQqT^*c&UI@g~z+lp7s_@Tw*y}W9D)2(0sse5~{`u!Hh zp98||T&;a@d)hGB>^F6^J@Xv+`ZiEtz8MegX!TqR!dG>dQ%++igM01%xlI3Bc0W{$ zbNz19Llku$#baP|H9*k@PZ0jXH6L%qGuA|L2$$$cbP@!|DS@uWz%o!a6ec^k)c2vL zt&(rUc#TLl3AeYIwX!2U9}gXD?o~1{aEfaJA}JQY3cu1@tGsjPw|G}mxLR<=`_`O$mEFXUuWOi2CRzYl-F>d#3 z^3LH!-5d0y?c_goigNb|Ack9(tP#OZJwXj`m4P!VEdXOgZ*^Vn?N28kbbWL%jtC?J!P)0sY$-UHbhd(^EV@i{W(Ur! zUag)C7^wGT5l8o@@Ri}dgSgoU0t@{4NygmQMrmbD-j3-$YG77kMbgNdH0#Oq!yL3{BfX9+hS<3zdZ}mjFZRXUeZ%dEAjx zI7SOT+&%Z;%|ySiFy&I^SjPjHW=|4pZhhW{RNk-pbKaGDZr@H~jTKfj{mD0UoL}vJam(8&*qx3zC0>#Vx`ptay z@mAE6we$&M{KEhxiA>alixpXx}VkU0G?1^$enVFPuj@{ zr1J{k_^Vk*c`5MmPG_upZd#HTrBz$@bnVTf4}QmS!NE zhZ`OVsk z!ZZW9;Mzyx@F1Af*kT2|mrUa7S9rjesqk<7IIN|_$-&n|vp`+YSCWt?OZPvZpRFa( z9m|RIyNa9`HZtbX$5IBTcS@M?O?Z@=8q-0M@6$Dj3DTwMD3!lqskEt@l4&QP%~8iL zT-S`vZK~PkRG2WtBxCXRt=IV0k(6prQxAXjAc0|CB%bOA{(2fUXukgJL$6kCUZH9?%p=i(xOsh!!m33?!oxSG! z3A1Q+rMl+@D9IU`w59(-&LIfVpQ#O7;OINs8u~2CSQfU2;Dl_#?^?NgQ$wgT&>ZtbWoSS0Et@1FeFY<}N`&-%?YfbV-(^Z+F8F!&vJ zAtlfrCeX7w2cf+qXyPKm3aVkMWbC=%B)EKV>l$3J@UWdJO3B&0;Z|qs+>>!AQCxn; z2eT`JAwLO%+gbG@dA55j#&r)K=TzW0Y35iR<^)$iIp? zoA|J;+6H?Mb2&=ABagOA8oBbKa2@YJ$gSv!>u~9xq=@T(wtZ*auiI!@&0}#BOtr^` zhfA}~r#m4}cu-`9T?l=Wrx?vIi;>Yqt(iuAHyWjS!ri9=#iFi8-m_SSbpa9UaT1I}@uwo{7HwyNBIjF)3~rwXo#QxNsQ7E%0g!tdeoKAdElvt5J(H(}RwGxIiR<-;ypK!AguqCEqGd=(A~rPZcBs7L?Jf<2Mw0=fn6LiJ7A=op(4J7nA__* z-oNWK(tu0#$E|_f|DM||B`hoHvntl{iF;16Zj||R=ZC{-T7?Aq+9q3KaPMn*o$)^+ z(#nGHu`eX>oTkgGwOFNeO77W~cB)1*JEXk|e(vFB2zDIb9?|-q@v^@!p3c6{cvZ(A ze{l@>1|E&ZvJZ=$26WM41<4_k$eezY@w#)>HPRRP)NUB$(hH0M31cF{L%PDxWQJlI zMP7F-QovI#cBdVSCsQ|9k;iI~qI|!L{W0ePet(%>Jq*pLsdDkP?FYbdlPNvgX3-RpfICTVGHLXtx2b{IUB!9|TEg^$$`JUx&|(94n!5QZ z18Fk|FX-SI8NDz6K~vkWK>N+7G3M6wY>DT@x6J4WMnW+TqIO<|acmP~KvsE^Qo3Qa zn3V?#Qx?;V@eep?v;-#?g8iDHFM zQ{f!P%p7^Kf-cAezOSX{`t8P@xbSV;n|sGUAnND}_zB^o!|&UO_wGG!Yi*d5nNtMZ zJpsjovo#^xj?u{HgpkXV3ILLL2N7$TW|E^7nFh*;PRs8Jq;OiJprw51`gPLSV4yc3 zR9BU1Zd1R2<8>8M2H&+2pVEZm?@O{>$cyKbY-FK>;{#xpq1Ai8ec>GJ0L6L=xKcDk z0Cs$d7ZfQ2O~2)%)NFgU(tB5*1TWZvT+G9#P3?c!ndb0v2VMQVcgVWq6turLR-}tc z`7z3Uxw?2K&;xSW1s}hFE$YCg$^oQV?z2G{mw?aRjwDzrMYAbyihk!&{aIYYInWEI z<8yg~l=50{tcGG`X}flrEVjN2lA0xC9{`{ie+0Rr z+{-jkT#fxc@4^8XVgru2JW)}LEwg-g>`LJkut96Jnk53VSs*Tmy~_59CPbmbs%z@1C7OvI5^KdtJuy69}krOhBvwA}w|hPw!H z7dV%FJiLYk>WynF9AxSiC7>AtFxc8Ao2g^?_hU%Ckg&vLK@}|ToI4$!hCH1+uz$=Ys5*u5tUF^fb_-74SyLQA@7#5E z)TxLBEGoR}gYgt8g}=a~J=AN~hOYbA&Q{-zL1cHtVT+pZ7{LqK_pTQ-7u^~vL$AgF z4oM4N_>&h|g;uF(xk7_rVb@eQKoPrR4eW39Fg$ZG{#U8}hsp{C!!!k>MmZx>)Dm|E z;tp!eG4L4_{efr}d_wYvxDyt1OVAv@a6B2o$Xfs9k}@btW!F)^Nw@{R=AH#xIk6)? z_vc5^3krxFi0ID$ec0t>uvRWjNqL^(ymA~moMZJw^Zc!Hho^veD*9$4RQ3nhA zTbyN)NonCDn*#5Y6Lahq@w!H9$ZGNKWIo6G>t11?+@n2hzFv?%bP#IWm@CW~^ohm+ zZk0HEdgf;+EDopiSbMJ5w&cUWoquio_3#Ez-R$IO;DrL4j+KQY>hp2){i$(XzGUi$ zwD?S39Ed_(u222t&<Hzrn6XTyUPH|MJ0Gx14)Q=t|33U>JB zf;17MH_sWGDcc~T*s2b*wyD}{5N7|7``a>FEne;2nNH)c{y=CDtfNlB^dv?fH1#Qa z(5+qq%}E>{ibFp^IJ zG2&CmKndU9&+&Y7x>i6}kRMEF>TCz}gJW4s;#fE?U0Fh$9yZmkP*WJ(LYgaJ$JJwE z2%nj0-bAW7U?6w(No@dOT?c?u=%VB{$?qqr5O&e=7o$1a-lX(dlnNW&(%K z8ky8zLrh>@e_sk>4UGY9V|Owa7tLEaTu!~=XQ((_Q6K|R&~mPTAA0q-F$U!`d18%2 z`Ua}tQ7i#I4&#h6Le7~mUlGjS?DRllP5lUmL~DU6%y=yYvg%QEdEtKG$XaB*@-5wr z&*j*K+|}IXNEjv(u{mx#v;HSM4u8Zm0rse71B?iSO`en>=eh%5^^lY232TIt36sx? zNjXYOP0jDlaxz+Bmh0ihw6a2>J2zO%B+%ZI*Y_5zp9Kj}{b zXJJ3y9Zz&Knb|4en~TF(xx!6!#vzy+lfG9=u^TpZyvmDg?|@~vMZPeHy+73TupRB7 z@Gl&=+oGeyu=nEJYc-y*V45B5lKF ztYZR?*v?mvFzdefd!Gq>{^n7I{^Iqzv<7bc_xZ@(o~hOE(m8^M1@F}6z=m^(P{>`T zKb;>8D9E=$u*^@6XK;S+!oeMz(U#p&kq7j1fd;t0HM?hT!`2yAD0l)%ObH20u@$gR82$~o0=_r& zUf^Zx@JiYr@mx_lJK@&M2GbSNdcmUtZ*qM4WxRt$q%DZqaK2qSl&4(6Nm!1nS*5>p# z!5vHOuT4UvD+7cK<*{&<^Bs{;vmyKbMQDjU^VCTq; zX-U#Ch*O6J>=ptKswuTXCfEV&f&SXGj6d8PQS%}RW8^w-G?G2(dn8fica6-G!gj~( z;m`=nxeT4=U!71FFH`g$T=NjaadhwWK=`CN78!svm{H1G+Vj{0tZzoG& z!H)L(b*QkdXfZd(!Fm3Jg8Q%Fbe>o8x}{MUY^1|_i%I6fsr{WKz=VLr(Uhi~FgYzH z{I>SFJdn9rM$30W07sX};XP6HF}K45s2>pzNeGSa+iRE|0n_x@7G5pxiY{hC$RK23 zd;tv(2E9QlZ*W(PB<_oJ29Y6NRprgKeoFI$Kyr?!fdQ4 z=+ZD_&oKh&5q)Jfg01M^0bo9QH9ZcLpjo+_iQ0{P7Nk_A!m?17+tYW9qJEzZg=328 zmGByDh1{+c8$q$}0zeNAU~!mo?2nYBynk=b`g?QlK2>YsnCPuxQE^%CImm+ys1H5y&vCY}k5pYf6Z9U}0bA);54x!jKL%+Up< z)~fcWXWnhYM0;PrOr9>&_JPW=(5e?dXdUNW4-URN!zoPzVJJ_p9(HGg^D z&CY8>=gK|Qv_Ty5-^*SKV7Sr6pe&uGLDn&Dm4p1MD-*3Z!Rb!Oi#=Nj7} zi?zy96*Bzlo%8H1X6eY5_muolU`fzK=Tw8=@A|e2%!vT~C9`JzIX-_gM=IsFh_Cd? zODI-M@VuCUX+s!akh#tEeA^|MaNx zRXB>Ed4)EqWb<*ocKhtZb#i6j9R|HuNTu(tcdf;)^OdiZR1wm%x#@Q3p#+q{{m?BjikTM^#7roxjC=2D^n~5#3Gw)u$0wxF;b8S(w)o>dvRjXwYr2Rl+RjXr`@nhn~x!|{&wyiQ*1*V8^RXuPq>yZR{o z{vqB!VY6tYQY5)bpY@_Fi2ujh=V#@DxuE!UsOZ&i;^SqE--?LuzpC>(5FZCY5>n;0 z(q@SsV;N-S?_#n<-f6Mej^2qAFM*w%?Ys7OBvX6HUT@#fC#RVV4Wxc{TBL$kI4@;c zgU~<&hBn4bfy}RrX?EzZT;1o^7izY5W^^?p=FFkZ;bSw)pt{x7&%=Bma5mW-eGlPW z!D^O1>lXEOpP2;$>v4SV1OP2X>xJIZw>wAdLw=PS5fdhje!1mqnY_cYv8wuaPqlMh z0aZVbJyOPz3rXFjwP{XZ@gixd`-A?a@-;;k+Z1|wB9@kb;q*IZBwSph3{xSbPZYdX z0S4!!Jh(%{v8mg=Fmq(sdC_oChp)C=Fqh)*3A!h)Bq=16R0@*%-##UV&C1sP{pnwP zJyW2VfJ5b(E)x_UE4AqeK737#Q3@Dt_PtfpH?0%Gl{7i73cME?6v9upP!4)u@H$To z&dXKMqMfZo%h!O${&pXB$lp}a1Z%=d&Jk=bIA>Ib0;ld!M+a3xB4^UJkM#j7wLv`Av8Dli}C_AM_xrNl@d$F;gZ z6#=CWmfJ%h+iPSSB3?NGTNE50611(1^|u+`-*;)2SPWQGw4|$%;L4|hmMek7$doe5 zwj^;E=TOD_MuvCuB>XqIoU?)b_LY^e2z|ke9;Xr}G-iWe%6p@KWFO*XK0r>; z-{0=#3Bodmi)}lCs;NB(VUK)?GDT&tg1U$HClgw%?`nE9gSq{zp+E=H6RyC8NO|qK zHeuR8a4J!MAZDPf_HTuB8NV96IfC?3fwBt5Sd2P#eQ8{8WmU*q1ZUG&N$pOOt7X9B zw<>nk@n+xJy*No5!q_kko-#*Ci5icuXarWNIw_@{P<$IfpxFejiynnLCEk+A1Noh6 z6YMO{FBaqN?SA-LoP?o-=}WK6h?BV!fDAn^l2G<2;g)+00hAOXjFGz9@AjcEW;ajV&?) z0#yv4p;rgUrv@~epDIM3I3HwNr8QZ6gJ<1+nUHN+bq-VG_(FoKbD-)2Zz*$eqy=Yo zU9wAoMlRXGv@UpyIvPW|6vC*yH5@Gu27|fSg2T2xz91ET^qY4C6(ompy)ixfyqSC# zX?9&$#kXp{aK~CyUam{{g&Sox0`eA8Q|9EIF74k&>Mt@dQN)W%f{oJuY#)xE{|1sG zUd7re?Vldnl31NFOXE+2v*C!$v zC>|`|Url7#ENEw_tadzEPlf?QEsnGt@~_UKfsaQ8#esi?C_Vc|lT8~b`m(ErI>N?N z*eC*g+@xaYU{bi&Mb-mJz)2`yW>EVJsaz#GP=ht0WX${sW>OqSB)plmoEbU!^m z5V1QxtVPj$gz-)>4*PwS7wdW)G{BhC!n(+L|7n*waTubyUSrqAf0M}#`l~E>l}G-z zdm~H_z8G&)>(fVWJs~Mm)%We)^DN-~NrLs&Ap$QZ6jrYu;=uu`mz!R@|5u<2sw;Wh< z2|39+79iIg-slFf<0%ki^d^`T!y;+j9faU%;|QbX`LXa2C}$c`$y+!aia!fb_twTU zB*od!N5tCdz>_GQj1LRETUpLUx7JMVH6i#I75VXIw>b5`wW))%49BXPM!2o|uzGs& z^VE@vRO)Z*3z9|~1*A0Yt)VcE=VWirM7bn1k}cI|upThA)01{nIoJojU(jl4D>ibyy0*L7b=9d3^Da|D{ zVntuodm>HwTFd;U)|a=q6XQa{337>7%MDQ%R(NaC{H5iL*zc|6JM#FlJMLlc`_U!l zhkQgwy+%^r5P;AkvW7Q%Uz^2{%Y6D4q@SR~C9GPwHAEhSJD$5MUxZnOPGG{&aLz>a zc_)Jj&Xxbjceq$BuS63Fu7~(mRYuqu3_BpOFc~g;`7f$EYJ>;%wyu`^vOweaf;;D$ zYG?_6LM{aIzZ$EP4>ZEKgUI#vR1@eXAL$sh0FJ;vbURi#ucoYbNsp+N{7=K(h2Da=SBD8LDPC?P}j}6)-+wls|Hu*s!q&OjB#t6Pv}?B{jK0lC9opb zC;_4|1f54Y8a-%P0$0NF;4RR)yr0NaGQhG;_e=2!0?t>>;NwCJ6>bd3yLLah@{|~-6Q|Y( zG!k-Xqy3y+WIeKhIQUjwdt35nz^0wxUS&a1Ifn9pgbhk80~$e_Y_<|z$?U=s@-j5D z4I0G^c+Nh#WV3mtIVjs>C%C3j*nxMd-A<({5z}RszNxQgirpCuZq{Hx2dfQ2TMZ3+OuktrwlvpffF`hrLSMp+7i~ z;v!pFNp8JJvYs+owi?UF!_=ORkDu=(hq!Q z4O7)>%xR$d@{&!O)03b`>p-)kZzrInA-1z9YTK(?aGDpn}Zn&_6G zd`=z0=*>hlD>8F#`%^pJKuZo@!THtr>za}C1mK4ZwJ+TD_}Y6+S%%58L2OSse+`aU zC`uSO5qDqdqaO!4#<8z`(h-YiI{##w zpql6ZZY{2A^T4Zj7Hgd+ITR#jE^q8oQ8Ok^$(T zMaMB8<6su*uWb3H?)F;drQG-=(ZO| zHLsh+UbusLASAKG7xF7RXJZoVp*Xn*i**xrXkf0kg< zO#<#*?sQ*QtG8`pN&wSJ8)|MmC+mI>NlkwZ!guBCNe*?UKvV>7GTZMfPu@k+LfQubiqbzCS)NkNi{%d3xa6OS>vroMXZrIH7!`KSwXLE59(<{iKMZA6 z{PHHl;;hxkV1hp?QWhkg1gRaj8jp=Z46XTvwu2%mbY5H_jktc~ z9CiD@lx4wt952t)m&a#!+wmDs?C*N8`z?Pzf=~|mK-X$Cv}4&9)$pPw+(-I`Wfi%U zYDDBd&<7rQOMimBc@KG%Mri)IO25gC$!!12BIKD2`zmN0;bBNsbg&@nczTOpy_N385gT#*}-~B2aFuDtm zTBGVDqq&1%I^d8bhly_mmYBk?yq8aaYB=$s(D919ZceEn7dhwhLqW@-TS5d_f37ts zvQi-tn*KV-k(z|U$Shp@=rd)IlqKi&$26PscuR6*q)~HGAxn6PP5>h79FJs*dNAC; z@=WO~rt*T3ajxQV0l#=p+{TIObrZga9W=7&uCjEm-+R*XQ7>2fu`NC2<66+Xdj7VI zF&d);sTKUn-1Udk`t%s2BzxXceC>hZ)32ht4ODY25@YUc!tM@FjHgzMr#dX&8hj{UI4H_@agn-lbIjbpAQ<({5O1WENDT?T#avW zw#@bQvcwElKe`i9A1g`c8%?`9_pHYiFipvq-h5`*2Rxt@DQVq|#sawG;b;O9?a z>0kB}R^u75xGBz_rU(1Dsai5uvOhbtekT>| zU*nhy$-&Bq`k9S&RD>6l`}Oyu7KU~ zxR2tf5&M^>=N}%FSVZ##CE>f8MQ8VTVoW|sSxN&=0+yd zN}RBnyW4JHxx9f?AWy8(_#}E{2Sz!g3E4~>^E8r+L_eyTTSpRVW{S} zOY?3$=SnoU##nsyI0Ao*Hhj}&&Hw6OKMB~;hlaQk#fCQ?C-rxVB`>~M^r#BdO^2Nd zJ}(2jd58zmw}SV&Rc=UVOjpR=z`Ri&U)+_*wp~f^Gq*NjEzlhKqJA2{U@ZL~*12fz z;(DKuP==JzSwJEtoU|)_5Y$WuJ(fiSJ4v1bps=uloEuW7Q4F||=3o7q+~8Kh7I^GR zEM2+1XQ!_(vFtC&%X^Z$Gv5oqKJ)%YCNS^UKGO}t|1T2$;xWTDeJwGxFJC_s1`oe( zBw0rmr0Vuh0nOuo@G!b#ZgQ#-nTDa&h=~0JU((21$T?j5<|)j$WLbW+l!)v+QZgvY zsPiyCnz~@~>+o-_sYF)QjGTaGz2a|8`tPL9@Go=cngu`?J178Q!s7eKfT%i+TMzDF zw>>98*nwJcsqc4=vD*%{Lsg_2n3fTIv?+Y$LZReW?9|Im>2=b0jZ$lm(f%^>?j70< z;*$`ZEEW$vZ18+LcAqqkgR21YR)QRXXQm`9Rw{xLGO`}mu_?xc33oEPFG6OzynHzH zJC_gbYOfZl3BS-N@ddosq}MsvKN3G*`EbY2&F%}Xqz*PeQhs~+1*AP*%55nokoh>l z4B@^OyV&o8oXhp)OJD~+CenK5epvvN3QK3AZzrok30 zVz#hF7Omq_jIj)<9ZKJg@_r+Jo@s4k`Z`vdzIXl+fBv2wf$wAM$sL5N^zF@oCY?aB z(okVHVInOCx7n%dS{PKSB7&73h$BT{_AAt)+8w(6f(1CSorZ=lWo-2hx?o+9o}!0U z=d_Q+2F5M8jSGPYCkl^5j3W9F=B$R;?r;H5ZWy)ot&_CKU}#^GGIRR8vc-#@4D_~p zb{;;qy^S*4Q#DjoaU#DgRlk0XS<~UhcL-Dv^D0joAmMJ8Pz$7d3Mg$<0>;|*Tx#~} zcy?)cju5?O4fV4kPG|Y$(KJ}5w#_NPcD|l8PA`gvjP1q<`~Oyf`f0s$)t5k^Rm8GE zRr<0^%jmCZpY+w%7NNcq`1XG07BrJ6JD_$jlrPu!2XxtwZFJ7!(g-0 zXc(nU2ls;jUE63~KITO~8@*@sT*o68A@;?pQ!#PKABP(z)j_;(^K{go|6IUu7V(8} z&~$m0FEW!&f8#)mq1`X@^&H?!{I2CW3c!kEq7(<5J10BSHd0W-U2wQuodWcZ8UFhh zH3((xJuVASe;t=NJv|;UU-y!pvoakwVWH-l6x6p|QI5KXXl7hSMaF=bpAUau2+n?G zD*Nk+qqT;4IkjGsj^v=w&wgZ``zYYnAi=1Oz&A~X40mmZoW>S*pL`1s>99qtVA|4i zjTs^hao6Jwr`C2pg?cDCe|KTmQS_n3l1Yk!F~LH8!~TVgjp(eqSk5!G1XnufEDo_5 zw;j(TlP{jn*->}4>7mHPK`-bsH?(x}JCvjX3o|$w-deS`VzP;)rm|PdEWh|$f_?r! zgG9Ct(U61QQf==_^LKtLmI}FERQklHAFTO5gNQWg4@$6A{`(%V@R9FbIW7|F4@M0@ z4&o7WoOvaFS@~KnD~Y|p$HXl2-tsCciXzp);qnt5;OEA!^hCW4j_MGJQNhROw>s!| z|K?yGs_@nql^S{#Vpb8%@;@K=!I}9_24_c^fY}-v2@P`4LR8uRA7=S~E=`=zgDjuE zY;vEEFM;}}R~(w=fxn4X)W|lb|83F#md3ef8q*Jqn*2YrJg$q|Fspc0@IQl?^JON~ z$P$bHuUY=TT$%*~jvPhB=dj;_Vsd)PZmBm_jQD5KrgT3=MVK+tgta(6#G$g7kL|lI zU9?%I28-Hpe?1|+qyFMI)C0qFQj6-LXmyT+v79%4Ul+Il-t2g94mQxyxn@}Ce4=qb zd|mr_Z!}8tnjlK<+DsGC1-s;P@^6M~w$K5QKIL4iHW{V1feV|%W$}V$h+XPxk3p8n zVyCa+GPw+#gJMG+Km^sv&UVk%#k=oFBmz$YG7?$DHiQ~4H~?}@LoC{XjHsxnc0?Q3 zIP;F7B_GV*@u>6iR`0SNWXe0Gb}MVJK2xT=a&?^r-0D#EjRWSFhIw!@ym6+|GYaMQ zGwwglD8BE|{s+79{mZ3#rF>eJueVzWwI;T}y3-H%Un_zv+)q8Rvx)<|WIO*TNXCIa z7RxKzYN9)?X(Y)t)99d2{^4;%I;(PsZSDK3B!L*&P&g8nHmVC=)77|E7Bs6v-u{%) zSxfL8j#U?u7oqM4?D@W**crJ)L)b_E{sC)2R!O+>o8&ISUDWaLskRm@)@#_A+2)%j z6kcaoz;EfE=9z<}#kTt2oR}^r-<=~PR_c`e@-cQmY2)BMZE@4m4 zi;kyTtEij%aXmR1gm&(dRV?>SER;QR|Fa4i?l!?C{Xed+ZkzSY0fh%k5T0sB1dKxBN4I(T9Kgr2Vwl+H=Vixrkb4ck3B% ziYTPRGsU(1*#7&asG^F-ONR1S&$b9#V*uMtO$Q}k!9=@cb`nO4h_rMTYtp;rjCoo< z1XKJoTcYjgd_Cd7{;fYig-k@79-<5g;+DZ&k3Y5QKLIq0X8u%>TT>S~KeLH6MEUsR z2`L-V5hFu)l|$S;RC^w~?nEW&yw6Iyza&@utbw}r{kDSvQ3$el`uOy)ymAXNO|f`l z4dVM(Yi(>8hg8FpH6N#P8xMWVec)$QQ>Cel+l`=SW%9^4M|JeAV3|E2XQr3B&}U=)9)yf^fTDHK?9UC*~%}iZgH@ z=va4|Pm+DMaF275ptxDAo6V-jo5WGVqf7j68+N^(HTIx0QgV0Jmft1LT08d1{P!pe zh2P_#e)55XWsx!oaA+9=2Y<~jn;=Km#Ue6%dh+&O1bG7Zv7H(*bWun5;vI&Ej(jO; zsJ7S#d?)i$7Ceet(GoddSdmOcpjcTC-8c3tC6a>XsXv;yR-QCTI#}&h{Zvc=5$#|4 zNX6QMLvP|Jn9QGBndLmg!{zP$4xJVZWa@IO-xd&F3~s9zG%pZ2FRS$ZrvzKhz9y$G zkCg%Iu)4Uc`i3|6Sv}QNWSUID{bt!l;0l_mrkB}&ew!XaqdEltbbw-R5e%Ron%QEj zpB;)l=(I5Y{rJ{jwu8d2?dDV1Ts}6<7<&;JVf-fNu|NoWL8SUMsz;Ut2Ou$sB+|ZBtWWMw2N=GRI~gh z6$>V=S)&)5%kfV321VT>>*C)wTMl~C$cbh+TxC=7s|0CDG=}&fOZu(TDo3TDk7MwZ zV$Evk4ZRjRJgI!;f#4!ir`$|2n`$shb^-ujwA>yC0nHsallc7o-{7Jr3FnryDe7BWl+p05NrMP7pG>tWS$C*jR-H=iN#t;Tj3s8r;JWu^3g7RwJd0*+367QE)RQzK|#(n{IGdNQG(LHN;&;Bz z5~?BomOY=h-Y(TAu{pFg3L@?fLCH=btvqCFfxZ*#;kOaQ=~=fP8PlaBp8~a zILx*2rR5h|I?*@f*?T)0gyk4rc%$<*CG{OOBT_^>R4aX5_4|9m%5)HT#2$hn;Y^m4 zOLC!U-2j|1OHds4!FdGi5M%YJf-9?A<%2ixl>=)-3z^;sesNBIZ#kUqARZM4(^srX z9m1N(C?xYwgpfV&CBGWyNUGwX=3y2*LHJL@Q`U^8e9I(|&-R~GVL6QpMmxMno-kIP zoW-=wiJK^gxjbKYDbvDy0^^4lBWX3AMc^4*h<8np9KG5K)jgGMvnn;&@tcfM-TSwS z5~081IRtEkawhLmDL==~-~xUc!dLk^qR_K(?FSYcdVe>j1N>|Cx5xL3k4t`(*h0ot z(4`7IMkvnv`hZ5a6{JgMi4}7ook45z)uO)Q?5_o(w==Tf4)VKZivzH>f+miAENm?v zcBvK@Qei8Ir&lVoo0bj%!1K{T$?EG*CB%sOWUciyi-e5GEz3{>jC>@wU>`aaZptDJ;ouuCU( zoHLZUWA5F)XZSY-U?GGgZc7=C8}HZ9sv zm^@QN8LJO1Y4Ct{IE&k>(-ODTVmsKogka9*z0!S@=(XVcJQz$2Lf>1KY%9jzARzoU zo;0P>9ZOdD`w(7#vSg==Z(Hy_k|uYUOhdWP=gRBOyX}*JlvjM(ki~iYQ8?%pCqsp` zwX#A5jcy4pvIS|_9_I-(il%<~_IjbN(H^!_kb}VF@ZkO;cND|9we`TtuVuIbM%;T z;9Sfa=F;Xr7bRZwdPL;2Au4cN%OWQHE5xVX*JW6UF4H}NEDJQG5tU;Y@PKqAOr`$R zVzkj?QC(1FPy<@NoGZpvC;Dy#1QmH(s@Yxg zlJ6iF{jFl>IZTuo>z}~tpAcn!nSS+k@86VweUEYH@b$gRe%Hm*KDJZZlwz*IG$hXD zA>4xfYnzQ8^DU+@LZ=M$(`t0*je8{5wFUlKW+t~N0eFvH*afBb?C(3H4}8mvP3WL> z`F$yl8;=d2B?cd9TGq6%_^+AdZ|m;N2CMRT$kOn1gtvqS#}Fxg%KDv>(Wj)c$kxWD z*iLqxH_x(@$~uD;vWsS;(p>$OE}YDghGe!U=A@GysMu#80~D20f%mC9833kmJT7g| zS4)65f=~Fdcl(CY%;G*T$v&m>>MnDqjiyZQari72CTXxhj?R)zZwgfmspIGH5{FPy z+$zsWU&QoD53otYrKIxAT6HS=0to9dl>_XZhxkB*{cy9iXsQ8=t4Ef`bNs7)b)Q#p z87oJ2CDkx(aF)-vt5zru$Ci(IO=9@`q&b-44xgjaMaMuTzpEi7TiZz`O^SYw;(H}?KlPS+wP?E_9p=`u2h%a_ zt#JmMn{|6wu{ptML)<)QgMJ6XbqG{;Nei&MZ%^j(I-5LR=dml5v_fFPtgxQnFZch& z4}kYh5j@Z%BRu-`?hzoy%8=~aVv1iQYN8RB1FD@<(b|J9f8a&!8ThHJFMoa|pg#Ij z`;Yhf@Q?Q*1XFLy3BQpp&)nAZ!+2xp&Cvmi2`{;==oR7CJOT9QLlDR@|TzXK* zQ_PKW_@wz(&Etu0@)&$~4#V|?k5+Z0Pj+gN!9?Ku+A4(J5&je17kOraAVmwQ*zTS? zZOS3k2wJLMq}RmNuF2Id14TTXb1~feEv*&Oyo#fV3>2>Iif8>Pn+kj(hML*?=Z8h+ z(ABCYa#CDLfTd%<`^clWT3_L0bxxD(j|_++3l9k#t0K(VFdfnRmIFgMzcp9`>3kc0 z*b3=$clsy_L%!};SH*hFzYKR({7Usz=H1B|L4x-0LcjgB;OMwxO%qOBtT{knaLD#e zO>mOEr?|stQ$vJi0;TZQtPmIqOPe|-kQe#D`7V+Z_b54GrDh=F>xDgZ>*2rq1=7(6 zz@7vDp^5vtCh~{aR5|?vSo;V{o^61hcmBJ8kKYA2&=k-|)ml>;ur|J=@)?Xcv6gbX z!@i>BT7)_GCMI{8US%KoJ{jsr!lfwq2^Vto?%z>J@rIxrs8a;L3z;9~9&CfZ2IpPr zbBM%h!NcPXi}%xVW)!0OvQVXd_?bO6&Cs3O_-w=~Ufz9$#0w$t6ecMhI|e&t-<)M1 z1=^p~n5o_KE}nOh>4XQ&8ewpXZlC#{zVu<@Nyyf1r((jBzVI!^!4zF>=O}#ubslwy_uM z1>kIdphGwkv>U~VUH#>(^m)GB3OwRB^W)yl7zu`+NKT+p)R|>-3iF%k?D`IiQRT+rYPr^4}lST~@ymg_0fL+@4!2C#%Pm6rE zzW(fR8S24o*Cgi=!#(K z1u~ccw5z1HCI4VO0VGC>>zW#TDCJLozX00ahp>}@#@%{(dH4*Gs3PxK$#-WBVum%M-;wv`LU)XG`Xr0PMT3B zJP|{yUxKq&@ey3uz8oGugO#UH2ge?nap~AQija}Q^HnZ%nr}bE4~&tbs_{S^I?4WS zmGGhfDR|=rB{)p3`##9+#VTJgMnqZ#kzKi=mJ2+OzcqlmA3~M(@!OLpMGaDMW4vCK zFIgUngOMZRv)%Ed-0Ol&?55GEwh-Jw^qS6M_^Kf4LF^^w7E>QEn6YF(jedJzL#BhC zaSD{IXIa_IruT(L2)!5E7AAe^qFcp?@p>M|L)zUXcwU|i&RWRnP zcwY-nU%?3zMJ0aAhx^+Rg!GnCr);m+#P1Fg2Q;aqqZ9WBH;C7Ga4%OT& z?oEXF-&DvUU7to+j=(^TwuloPAD;;+OR5A$iHC@iY_-m)H*4h_`2EdsEUcjO`hHcI z5RTrcHp;lJgls)aX|Qj+$r#L(hSh{wJ{(}l@YPzWblb?-jV72YB<t>PT^4M z#oj3{F0e{*^zNuBVe5}goye(~mp2hO7X%mkORHaAa=cM|WAhmaqgBHTaV!uChKa^h z*)E;%7*1Q`x#l3WFK$r#5CJ0of3Pe^(bT5x%f`-oo8OBR-x8fh%yT~VoZV@zge%2L z${@~%Zv=O$_>KoU>W%&vF5CKrdYWwQ>Dn@;iFKM4@C1X)Ghk>K@=Lp ze^m&Ga#yT+b?7j^&Pz#i{lnqOE{TeUxs&vzffS=Oe==F!=@1}{*-jWXWp>Iisw;Am zK@Dhw6jxA1u=~V+ONGr(<6!mGQ&CJa-IGVxZk_>Cj{-NZ!~YnfQ~3IAXzP26No8u) z+417)nZ|7RUZKNpbX+;eik zdGGoSUW9cu03&3Jyn>Oma9tL7g<&PP7v0e3p}!_ejn!5gO1$U?`H3fG<$mKrTmJsS zHOI5pEv^S6TXblYa7f(q^~&!^Y>BOox1W}eYE$9c zz$>XOqTlKTHAin|u2)2hvE4E&l-iUNc6SL2TmE)b`O=2G9v?X?)OfyBia8tFGD1{~ z266ORX!jn6{r)D`TD&4iVfLy1C%*DQJ@N+Q^4p^=VmplA+2+ViXabkq$HWL;m={8H;6`BZVFu$ef~tDu!S+jH$LGC z)JuF~fnJ{5S~{SImUc5dKl^c%4yyO87VeHIe+*YE!R}o7LCDMnA*Iuc(ZJ;-wpkBN ziZoLp*%Syb#oAtBXmRKc_Ij#x*2M~vt zxSD-+%lj56NyCqef_&s*P1)6VX55H42oQV!F;|;!p<~^i`g-&*PmM#6KK{+Y4PxzF zV7Ig|j}PJ4lm9R`VMyrj$e&I@o*}wtHb?){P*wGwf`QI{MycMCY@*bX6YWj70bJX3 z&kY@(nQ(Vs_MkM0Orr=P(uw$Lm*8fgl)s}b=f$v>(d$fBai~nxX+J(e!zcl z&0h(4_E>AaX5v5fi2O5)C)eYrD(l%)(oeKa^2L3jj@Wl847I$==yn;V#M?*g_Q_d& zC@+%XUnMmjiyPHFTa?YLbT(~jX+XCs{5dFGWqy4R43?%MYS^Kzm#=`|PTx?F@?xT1 z2fwA_Uyh zHWn2INzZphsRZmhDim`$`}Bu++cc>N)rO#aUO$z%nFBOj4@haq{auBE{0yLKey|}k z6r}`Mb7QgX3T6>>-@IdxuR~k1$6;tw%)DlsCm;l$PG3U8hZd#4^i!ljg#K(sECf?| z_Tu9>nx-r76$a|i*b`o?9}dy&(eZCunmFTYq4H|Ou<6FpS3 zPDw>52snRt|9QV!_bWtscE1=kg04;HVt-PC?xRp&o$4;oJ_nt0-O^HPbJ&N5K4E+J z#rP9hYi>J6_oS9&5EW)skBQJ*;XAGLRjIAWJKb1?UJAYYH@6!UO#Kl!usWPLO#M^F zzOZP|+DmhjFu9)?Yrw1GqX^8jV{cJhb26>wBj`SLH+#@B={Z>+4X)mjOR3U6R0aYl0bZ>2(Qk2MH`Fgd_hfg$nI^$LKljKs$8)2;&I&qX5Jn+Lzg@9b_@ zIJ&vm-@4DX*Rni*H-T)uYBHa|r8IT_k_J8=yxBavL6|zg82I4n;A)s;x{ry}6~NLV8-1?Wf(K-sEV-7wmbA1|OZqbbx7rbQ62?6y zvUK+vhpAzR_{S>?%1_7rMF)8Qy%cfX==~EQdL2+!=Zf(%>Ov_^DCbqoVJ`KDuU%{h zx|~?KKa_E;v^3;!IZt1#mtME6iUe1}RqW=Ti1Z{!fTu_gfS~qQNdO3ivS6FDXGWY( zy`kc>0$kL)iD%u+Uc!%o#A~`F=H~Ai7e!s(a94y=nYT9YK7EQgOwP|J+p>TEx-~}T z`Sy(Cw!kd3xvzX{e&?=4Ea+{Ok)*6+UoeIeFNPvtJp>Fbn;DLln<6rd29~+Q7SFij z312SEoxi?{`FsUG%6i1{`9vFYv;Gr!I@}&0jmvlz*@)jRhS_cC1*hNao#t&gKjQS_ z{^GVP0q!J6;liMcaQE(E?jsFtdtL267!KVx0Px;7H8Q@N-tC*ltmT}Fu^+omcCeQ# zC@XI?aJjdVfK$;xhlS{!rOFAzD&j-B7*9{6d>92(BrLVG;l2UA)tG(E!b6+KK4cB& zY$~R`*Tcw;-#?0}tSkuqFyzO-LC6{uu7CJ7^}hJt9!jV8Vh&&23-Zj0u|3`BD|0~a ziQkiiB^|Vo^CmfVh9ubi|nD}JvEKBHOmzlK<926!yLq21iN(Y6l)3!5zy+y z8R;nu-6!u`zhslD$3_Q-ghXG>KxlB&7DW%_uB8v`Xdmt>xw)HlsTU!Qg2Pa#ax5LeW0JypY0<+(mgl-f}uVLd>^q>mJF zC~JnHrknP%TT3pxw}XRX_f#hDdBW{_n?5`(O1hWtc9!{uR9K`UvQTis^8g`VwW*Q7Vn<3pGa>l8dm?P<)`1yli*-KH&@ zcNu%O!@^t%sW>_G>FG<}1KBX9thu1@+^O4RLH^hH%*)~zRSScckOtV9nKxGZL8Lbp z5K*q7z4j{3mc&LRjO7Gkf!LMlyB)U&6fLn_^&V(@++HaSGkw5O^wm|U`&yfc40Qf? z0oHE$3^JK+%w%#hj6s>?BiYcM#RMpuLE0W%4LE}%ogMoOVV`=&5jb^y{#ylj_g!1O z5YCvaMgq2}%kZxs?aA8rpY1)0tXZZSKr)Nft4p34hETj%Y(j)tx$|`wri9I_;l)Si zp=^&Bi;4c0uV4?J5IMD9ZK_}-4L?-fm87KGoTBscjd!#00bAv_r>DZ zSx`A@QwV4r2*pc3*62toX(@?Ft&?>n8&Ac_R&sm-YErCZ zZ?%I))x`9h2;zBznz=!Ax+hr(Op58b?+B?7ar|v@YJob8j_DB^=#On8zzE1?P>3Ro zF4C<+q2B=6A!cv}|BKrTWjum5)HLcDS)}74m5-K92B4Bo_xc>){c@b)@P0N*&U2#V zL0;{i3-r9lu9X|9Q0*duI3oXLy)ukK2$BuN+F9B94y$whckA7h>xJ$c!twe!=)>ks zb1<5!PF}y;wwa}k-VP_*Q;R}2tj+}0pCSpiZ!206(KL|ls@_avFJ%(1m}mR=h>uC| zoNuR}VZJ>Hbb2PrZSe&P^IWCcug2J%ly{M5VrpU1H>V`9oWG)*MXf2{e;dRDPl?BW z_8A7eIZ~(ZMzB^*g+JM%R%nca)Gm-n*^`+;uF>-XkhG>7$g3s=x*PZ^F|mAUNBs-n zq5{8kwL3>lFX7nO-sXKioM`;hdn&LE%+2GN|LKzv;4%QT@gRerhknZn%o}p_v?EVM zjO8O5he3h)W_sJK37N?)mk-|K<#`PVBpkzxcM-|PlJE5Hb!*##bSklj@h!~VSaQ zRYreAwI2dGv_ITLc4&G|MbCV z28a%*wUa@@7-^qrfE^D2o>K>ly&_l*~2WK{$${bE&PfgYGZ`}*mh zIzC;jKL_cj41^KXMlcHMiV9`pT#O6KO13pRGr-~oK~DEA+RYxy3F}bL!{0mW%R~?r zWz{U-CH*C41vK=^I0?3hPG#HuJne%;Va$@$vG32OLt9G|DYz^3M%$9 z$Gbl?vr$E}_M3}%kd(#M+W`T*{o&QqjKSK!?*;2^lUu70vyQK}Hi&$QKAQ24hj;~A z#NqzTf5k2msEuFYPhZ`4Qd7Nuc0ukV#S`+4gI!v%)iF7DZC_`x>}9^G7s7RTG~;mz z!d~SCc!ifGC)fmk`mDaqZX?{<6V!IJZsQ9_dUs?oq)@}(gxOv z%nz+NeeQ3L+4-5zUflfMjBO^LC6f)(j z{Pp6e5yFfMPWoMJlrQhr5d&@kPl@U0P_9&}dFZhbNGtpJi~pB7(r={*=i#63sKA(T zaE6CEgZQ{Ry}AAsuYi`s*+QXIC8YM4FF6x!3d}Aq6@WK4Nnzsr{L}x_G3E1?=HuPe zeUYU43{Fh?HGU0 zu+1b7$$0RSX%-?wjYAN-u?8)g=M@F#+5@F8 z`+7xal5(SqzHb+M6}U6y;Xd5n%&!OPCZy1jhhazCdW`)a#JyEiTwTyM7@Xiif;%L* z2A76lL4vzA8eD^06Wm<_!3l1G1ebt#p1WV3v`V&6*$HhqPQWI z*jD0v@sXHY-Qf{6!B(~JjzbJ*sA(%#np49ICVzU;Ml9LG^VD}P&phLeJW)1!qsy9a z-5rJv4(g4ijdBI8ZBz;;lv~>9l%7FrqN;iEL$vJ&U=N3cBPGXI>zd3;!ud5Lp7f91 zZYR$@&94f*-um7>tP#VH*lIJ*dgD0^j@gZP^+#RWQhW4V)oz;RC7@RKIEnlfavw!G*!@G?$V>h8Xab%bUHVd#%lmrq(M& zzrRpW+Y2_EJ#i$XOSI>82_%zG(p2EuJE*;3DX^TvY?*oiaG4K3oVIjhEr1gC$#@$) ziR>_=h2TzJ6tkD(<=sk?O=r&;q5cECicL z3!mRLK~9W1UV%@0G(tKKgD;n4?^K<}rY^th0c@F~>hP)EHHS`r3UODHCo!=u1lSTL zW=?m~rCeYN;I_M;%V~4ts|eN{5wzRhM5|HHDg90uuh~J|*6fs6HoVh`yeJ8&y&4uM z-3oZPOxd&XM!au#6-&CuNAk-Y_FLNL#xfk7g}pdtyxw@XF*UR&0#oi0yJoG5yohs( zqSG_r2I(S-*XBH(w<@;DT>!2IA1M}c{Cw`+dMQ}4C3X#SxZrP?X+z?CN~1DrMJ zsS8w>ZqiWK62SkD-EU{rVpXXBNy!f=5|F|9V5BLeZE$^?%Lb8vLQ7xzOrHV0YwB(( zAoLe!0F^*!99aKujG#)zZ9ZCy8A*-PQcCS$x;FV)rH!Om!NVU9#a0l149UKT$j@5U zXBrpoEe(DoM}KDO2Ltud^NMxE;0x;i2y!vz^J}SH)qZBkYEAZYkztAL;Eo9~$hE03 zCYx6qo>;_|9fW0NH@0xEPv#wz8Z{6O3!DQTm`7S1sb0+e)Z){gO8VR36nF;m8KRL$_e30%-Roo~zO6BIS3QQRYo<<@_NJ`N+HP9u zdprTB96)+*PXh0q8G)rm&}qAtE1V?RGbx?uQ|lG15mF{QIK4;zWkv6Pt!4Ku%|$0I zvPjM#Ng@hpHYEISEw=fdLO@g0>s<3KFDoQ_VQvENRMr<=nFht5zW0r6YJWL^K}3BWE*ty{M68DInG0*Ue{U92n-H3M5)OCUw6W*D1UBMGY-RM~^Zo$_ zm+^Bzf_1R!_Ek82>=1B=4^3NZ4OZ!qpt;~#veP5#&I$Q~NP3d8j>6H@^b$UBNUxU+8|MOmF z+Fhr*f$L)$^!52D&g$uo$F{OR2C2%gQ5sW;vwG-<9kgrNrHzt(pzXlYv+ zToQo|st18BNZ=EQ_21~3+M~wiXfQdxAN?NLjZ^D`($c3~NG8vOt(%n z-0}SHBy7|KR^HGV7ZN3dH}U%eBDn76Y@nv*<=%(4Ua?W-w`h{McA$K@VdnE;6BwfT zRG{O-Iu4RwZ0B8O;Xp_Ln~XZk1Qh(>36vHcV<)@JaT`l zhf-5oUu9wktQ?yDd#w7VY~qa==V6C!VbO~!jcNAokjOo@1t5(JRhv^x z=H_c&a5LYN@V{@H7U-39!-Di`**vsrB!|$*k99oLv{9@5Ps1)wJ!znzAAyXwiU@=Q&X%-H0{?w!xTK4@;D8v9!6Y zP>zA-#o!;mb{%kpYdPMZmck*ON8>aFbX9t3B#l9A1%bp*Ff?O)4;?R6~ zp*s6O%qgg7s{{O@llz&U`G$Ac7ZJdHI6i+}KMY8Hc)#1`{w;6E*%`5-bvgGE`t&W# z(Yz8)Qxx#^fU3hPyUduIH9$m=*5pS0r+ydj#`=YhgMsrx&ERcYArGYt$>DhU#BEnz zfwN*LPIR@ZMLczqlglSGUFL&7(!N$0bB#E$fiL%@gG15A*Bm>s`YNF_vNshoBH6G7F2% zEALdhUCT}MnPkW&W<&!2;Zq*MdtmohTN6)(BRpTbVGZ6O zM;GmZkC|c|k$jOQXtV1lgj@`|SjH;N^O~(gFGN}3=EYY!?$3Lc$h~bIgz|xw-)BCO zQ*D>+3C^_BJNK=!c-YKfjH1u>JV-1G_a7H1a+#l<5N_FEB|)Pr=t^4dE%`jbmE@|Q zbPMQ{3zM;GdPvDA@zK3h`D<;fBoN$FvuF|7ZkZOdD`hvlb{hCFnJ{u^UZ3%Gyp{KX z6QD{ReS8Th59-sY=q0O6W*<&9fd z{>tzEn(yZV8hw$8K}c+fz&id&M(#~k&#Qi!i1@`VxnY8EcCVWW+)$;L=2I8E>h4pD@sDMe=dNasFpMk` z8BG~^qZd?Ap>y;X-6JConEt6BD4>_lW9s>8j{D)`Xro@JdfI}4WFc&()xv*S56OOMa?hehuoro=Je0MRk=9U8+OF`@ z{-XVDHX^k;_z1Cc0lb_qMsphOt7J#Ixq_XC3oXJ-)gw9@CS;X3l{hTEq&;{ecUmQU|nuoKpeo&=&(2%BX zdBWrr(e$WR8_|(`Tbr*o>UpMG0QC|n-f*r}>`*6A1{MNpi>TVvs76n~CWdS%)o!;v z=|i)$oF?e>W_N4XnL`pplHxI*R7b>*jf8FZC@vBUYi;S6u&E zZoM4YYs(vi5wW-RQmI*FtHoe0IC^4(L}t>^!n23kY6*|^r_fyf>%mo#sSy~>$-o+ngbfc-8GWts{$G@29cwFt+9Gj$ zs^3!!7k|qEuoIjb?r#N%f+rDoXtn;~kVsxAXTf^1o8nH}zVfhqy229g^x z(CQ{KtUlk|7}WJA>;73(TEGE$91ohnU=9yP8#_(j&-Hn)%yj}f$_-fgPvE0B9-ldJ zcYc^)CG*|XiSCGyj^nJD-j1C)G-4C&mA2!$)(H=oPL9rb>x4JRPhv3OL@ss+u4y&8 z0$%wMv03+iR@^;fU!MKL)@5rXLZkw29`dvTQJRF(q^-8lC5PQ!e0vj4RU}DI=&-&r z3dCUR@Y~&osqwBIfgB;f{c?E@ljn3|rERa0|8S0c{vpIjk^`}rZhKPz_*v=yeiwTV zdu=OXjaZqw1p1=CUg1=u&_^!===z#cO$g%-&vW88hRqZ zD^GNa=Z@^Go9tBC(kNJ20O8?rRPREdm&iW-he8DlHud1m{)31Dk#+Y=x2gLmo&9@P zgAt#R))hJ#DIoT7j-z2isPL;`z(194$EbHAu#h=+q=Uh0x%*aAZ0!&^$Hf~63uV2D z3OE$qS`Z|jA@7bQ(Ynm;%k z-q>AiNp8-5&Jy{Rz)C-YZh#zaLza05{f2r5DMc6zVRfS75rP0G-|E?7NtWxMp(9A6kpAsjyWK*kkbY|uzznYZ&&mi4^kno3-4-$)o{FW4qG9g;nd`Xew z4EOgK+U+V>;OAaPs9YzO(nBA^RMe#KgB2^eLprA7`ZcveWz`wLb-7bCy`#6-j2v|3 z->^d(GaIoAm=1T+S#=Y&-z^t|mj7giW?vXa02{O%GR=FfZ5*a*GqG7~w?nKM`=C@} zv}9M`hr>Rj`haDXOZ-TBG0>iVobOsbF`R%*pQpY3gx=?j^@q>34NL;hs{IXEQN{lW zUqN>$cy~WW6?yM80L*(90KBEm)`Iu!K`zVy$s+v#+a@Ke$66_lP_A8s#de3;uMmmI)vM^smqBZQ8m!!noB2^8q)O4o*-sT>##|^jHfGxA+r;*+~iXB z7&w}_*c7%X99FwKRVBDd~i)njy`13}l`~mE#9j(chrFF^mANIhjV+s3hq6Va>NgJ&r$}(b`Wi(w*sQrFM9m z=td&s-(HW3)LL+Y<9tJjsT{o{T?=m=(P~Add1*opKLyW8sUV+55+C z-O97~zr9DRT&L8GL6@4w5+6MMf$v17C8w1LA#)c=QelS{_)&C`E@S&v)bJGM5&`^d zX9cmaJLzyeVFJ6%DL>hTWOzGDWT{y|oUcnjE$@YO@2pT)>QqeQdbPSnlp19lLpOKa zCLV^bdxx$eerP>^7q$fYT_wy%Vo7k{;qgl!0xWE0a1cvF<=tRnlO#ut6S`=PBdYfA1m9gDbX8x z6k}JPh{&2U{Eu+rMDWV|n8zF0YD;08N<|5b8Fch9A?m zb9-ko!+L%Hc=SW>sLv|h0>++^?%PXLhy3tzu33@Fi*NG(+c(bnpL%hjbY-IcSa`~8 z{n3^B<+!@+s99`-za=c*y`_|v_Z~EEQ+Y92O8WXNl<~RkJ<;5V*C!5zUgH0isW-$m zU`Gx3-yby2;n6I^HZ1vH88W904h5Oy|HdhbC1XQQmvaWAniNI#e`PwXxJ}Ej_qF1X zolS`l2#RsE?U2c2vWWd(8H3tLupKhqYk0^yWUO#S0`>1~u^o@^PK?%S+v&kyT) zoZz_~gq|kF{chK`4!;s5dSaU4PR2e2+fi$USnzv&KTZWEO(?=;X=vegw=9Fo6LmaY zT>klQ=EbWaTWnN(h2A|Hj`|$sr6owwa<}`C4&1^&O?xJA_7(wXkF8tV3h6cGpy`VI zdfAz~@w$4C?S~e1m}=~5pw3u5;JULX4Pz!-d8r+6jG=1^N)|X%&+M=^70ER=yul<} z7)#aD9nA8tyvxp5J$mvhF#GBsIp?PN{CeOUN%IHYBf$o6jNL;*?V*61R|z{z`|x2k zoj4`;>0z`CdgR;enbx}sd_)id%^%R5tfr#o>P*;?hFGr+-`*2(44kM%a(O3eki zY-^)0m5~0bYzzu`P5lCGq&%EL$BzpA=7V(8GM8Y!GuTb6Y zKd7*Ov8_oTEqcE?TX|t?bKWjW-lC_Aj#rWGHUzEwT{(ED#{4t3Okn+`#|Dv((U5yf zGJ^1IsHS2u`f^_KMvXD`6vmAHD>(raIiJ)J2apu_oI@@n%%x{3PaqAD96yORxKOtK zI#;!pE}N~yz2DqOkUZJcb_!0+h)^|(3G9_+eBr}UW0&q*X=!&G!<0)OZ0B1+-ZPl9skCR+ z-Urtka(e{7Y>uAc!H*bELpbTM7*kdE_+VByA=?w8fxUZz)zETI)tt&O1krC&6(gg^ zO`tr%Gcezi+3@RD%phcin!Gx6mS-4AS6-E=wI%NsSuU1=G_u&Fj%_%+sf+0a6(fb* zbSyXURL&q6_r%yyW(lE`Ep)d}q^to}M_@D1D0Tlrtg(6j0;*GhCe5`?LnCPet!5)U zCkHevrW>eC=n%4x@ zw75AOwP(6A0*ErbX$yuIX4B8f49@^P-mj7V6+jur+sRj8;a4ATt_4t|e_wpvAMH8- zR6X*|H~{3c6MJmc4-=!&`dtWL$EPoafuCGWrN#IlGOGY5J+Zb5%XikZwN#Fb@*ODw zwTs8QN8b>~s6@Fvq-Ud0zm@==Yw;#L18o0^3{}H|s!S~G>sB{#{{7+NY#6wu0VK8g zRQx7mZjAVTx%RS@d1Vr8eHzZLH@4;YH;3)Aj`Vg|#~1p4*=xilE?g+?X(87gAX2rB zGJHWK($_AU@DoHV>Yf2UXVB*ulT{Flo4eIvA1_f!lupJO1(KWSf%HQHm|KSWqP@N= z;-9F2Bma1jc(lOB(;`D3vbhB51r-a2r5xaW?9hd%&LPrqzn!TrqUreOp~)N3zJ5lH7~CLwKekRZ6tgLf zIdl$A@x-xg)Io?vL4QEUHp2TkU_B($ELJ@oGabjTpc(m`Pj{E6zvG1uV+qc4&EJd% zlK-lQwK0VLKm=YAi99f+#oF@Gk<@ZE6Je6dWp8$s|5;i1)wdmsh#oOGwGxtI7ku(1 z<$a?w#%3-Xc@jtuE12GDbYWh4Pc_h&c03FzB_`0*V3f%OyMy$l#s;#w=%cso*1FQH zf(d>KgKCR5pUu@CHF6wbEyh)}pj6j=5*>E9hK%HBDL(((Axf(Gv!c38DySbQo3~}E zXxjuTW9G~cf_YLte*d94nXO}aqJ}@o`N%P zzj!Lve-*`I?e^pm;zC9TK0sw6mjjIb@*K0#E8Xn_W(uNX5m=H}66lCcQ9d{|+sLEd z1pC3OeP~ILWQ`-JI$eeoN|6(gNnsS+E1Jcg9n~FFr@dc_yAM4yfGxgSv{__H3`VEy zb3WGp4N!di$lc&5Wge0}2lO<*o}vtP&AzQM?BK@~a%+s%L2FK9br}F+`*JQvI&O;A zSO6#U-L9bd?gi*Y$|w3G$y*VTCserO;6`6*X9}ff7_O~pef76H;2YkSxuNQ~rbln} zy`2uTT^QrU{G;v zYA{?5UPPo!yR1HYhcVzJH2t{BY(H&uZ=Aor9fhM-UA<}Q?lErU%G|}VJR%9x>p4CK zF{NBtqgOrZXn{<2>k2I!b)~|T_qHZ4gfjf$0=43g90dII$=ZHCx+}NBEu$A=dVwL) zIGo_}zr&ES*|vC_8rlW35g{$iJyljLTK4F=tL*#xlW?E|%0Jw&pzp@K&sY|Sc! zNH^WrPcDXebX$3Ara(WZk+2O!KMJEONKhCp)4BaW_r{){Zol?@rNS(ra6ECpRte~s z%+@@CjPz`!PCwj(ctO{Q#?l+eL5Z1zRqOYI{ZkOm7^DaAFIf8qUu%5y3MjpCP2fKR z>LB~Bqu zWIKBrrKm0VFy5C1Huo;lM{5Rs7J;QUF$V`4^^sjWqn{j(YMEy&;vBt%(Wil^j!Je@+yo1wXB<})(Lqq_sCx>Xua2G$%}6KS%>1+t zVF;jj?A6OS5u(`Bq*Y#$maBsP&jz*--m{Dc7pzI;MH+haRXq5I=;SL|iYs<@f&7N$ z>`!Rh5vyc9p2!13Gk4z8ZWg$%5@nGpB~T_r-kDHa$65%U)yh#~e?!Io_g8ojpfFdj zlT7^KkINP|vU$4W%ML#?@g>e*ee&tP@!vuym6V+v1B)Yi@76{e-T<8lh|&Sj#M(I( z5ykGM+gcctj69ds(Xx+J+IWSGhf>wPQ|ACayNJTCBopHF6Byz=<|u zfg(x(YYkXMY~U|3Ms-y;5)WA=4M6Ij+&4mXWVLd~OnP_Frl05=AZ`!}(o~cZtoiu_ zsC(k&2bSFVpQ0Om4U4EBWD@p9Ek(9wFO6gx70-B#P<3_684qs+V?Lh<>H1NmGfG+}TAKwJb2o zHAZcaD)CiET)AlnhL~(4Q$#l;uZZ5f-hgjnjXWcwS*WJJa}nLhOWLs@cZQhOz3vo*Dq<2^YW zfpkxt(^|>j&DSyjwnQgs_lE%oLn)!<7HFH#OZ|9wf#Y3w0=5ZRT@cEBto7_w{&1xw z9YG+t(-bveX{h+e<~pxVeKBFWEF>eK`zmJN7olvR1=w9Q%kKL>FoIXC;5ArUm+joB z8?QX%{W*G3C?|>^Te~0EM(xV5a8A`83;Azmur)9I9hNODq~_}>tt7$X{A>=TvRD`q zLIIr2XEI2;VRy$V(ALHM%zc{w3HTe5Y)v-znq#>zz&*qVw({#<&`GmQ4SBY3m%L2-M8! z++kOjCP6@e{jg3S5VMks7#N$>bBj97ny`SwD&SfF8|1QQDC_5ZUo1Ujg&9%mg`clj1Z*>EQ5O9Zx<`dV?hiz**+XUQ=|WTlyGu>FKK5-NudFB`RS zpHNw4^t3{H@GqM#gSb{Q3m=~CIkI-@jJZ}A1*_0{lBnyUS~NAs#$CK2n{gPlT2402 z^Va0j=6_DL)#vu6N9eJ&VZ)UEFq7U?3mz|e>oMNV7;qGw_=KGEqSo#LU9j;o;Ns@>RCeGd7e@=)HPqQ<7}hV`Cq-wPH)9!- zcnfIAYBpXBp*Gc=zPZfavzsZL56V|R^pKL8^m@+C(WTs3K~UCDHC|?>Ln3e1 z@BhKJ#U`m#gspVO>1ohX?ze4XxVA~Aqk-1ze_4F4TODGtdM3t0Y`NJ zU58FyR%b^Cea+-EB`}lfQ&-bF`5M5xtn7`;n1;RUEvr?Vo2SU5%|DUGk%QX0vmfP_;(VE3{++2JjyikFkFuXkB zCmRirVPUT{%G<(IeB3Frsp$>Nd?{O9KaZfTgYZID5#oLNtu zJY7v;Q9;1qjT;daSh3zvap3pZP6Kx5uQ+dqD0gD)O2bzSopS~eW;TNzKf_9onW~ty zrNULKkuB6&K=&o|bW|>jn-9Z3pd+wSyfoW=<>y6+?}_=P;vKMu_63K-%jdJ9>th2^ zAMHiZD+=6tVpk`m)z^*y$(uOB;@9)<%Z76sD$sirJCz&-=7s{Ne@nR)Rm`uwyAv^c zw{@t&BK4epIbUg-)r!y>LkLa^q%#Vf+GC}E6`h7m z=$s8`j%*}LEO1fdJ_PTl2?UH+nKnQy;XknS&L>VYA(BM7jZSe5i>6MA~);} z{p>mWmQct{eQZ##Dd5n)wrF|%Nr`+Pc<%zZIE@#Htegro7$4)iJ77eTC>B`JXQ*ZA%_v)&)Fu-!T|7WJ8&bnKhrQvlannEeLGGZ_g8%Y=T9C1Z3FqQBZ?1l8eH-OOZ(Y2&u&Bc z{a=|GUtyrBZuODKL-2VNZxZ{FxS8Bp$8XyCU2#{tn6P$3eQ6Yvh#pjo+dI%^h3?K{y&|+jg063r98~+}XHSM%Ln(c!RNd>T8r+ZMDwOlJ?Bwe2 z)ely81Qo;;f#e#APd(FqN|CopyYvnzj$~L_+nn{1;O0G8Kkqls#=NB05X;;59hMIj zM0w(0)DOL-yvh*+A5WSt40o>C#hVv^>GY!tCZZdiN8_zRhqL7gRj1`Rr-L|KYx~0G zt%G76@6ECZYqcV6G#^rL^Q|W2=!H-pFS$j_Qe$pJc zxIqMw=%buS@-Q|iT|>`|pE#^#e&1G(?{X*H+M=K2^9)_0+#qu}^h&d&39a|FzLISnMgc{hV<FVv$ zw+x8RaEyU2EmnLG2W*$DF+V(+;7VItZH3rTy9{RS>Lz3=Z z;!?uz6O(TGG|ZnWHts!3rsiu~upEXuY7Uw{UD?04L&kx@kKcd zN$6QS1KvLJYG-AUOBX$~8|)Vdt(D4A^~eq1v}LsDA_T{v#Revbw;(z`!E1!a#WbTA z+o5#FQ?lIU65jhK*=JnXiYi}LuHfNLXI!_wop4Wjx@7`m{gGYM9SrUd)Cs`l>+jQC zzpc80_yfx*49oQr^z@!N$Gmjc3mw5VPFR30fF$JGyWkHOSaRQPi^hJk%sWsFl$Rr= zho0z_*1iZMYEL<8!0D_WmV>mU`kE=ePPj9u1<$NbF>8x*SvV_2hZ$L=N%ILawd4E8 z*8cpHB^&tmQ($qIqMtl_i%R$Xqb(N`1pPzq5ZFflH;j-KEugN#&?s( zB)MoB#D5^P3J9xOpN^0R`3}F{z*%PgfpMsY#oX+*x53l|CNemcWuu{ zblf`s)BN%0jdttB-w+LJSB;Uw+IXz4D(C(DOA)~tej!VqhQPkSH0 zy@yr(nU*V^PFFm&6sS6ynklVh&#?a+Y|r-oZ@Z}jkz@v%;bCE2CaRxbo};IX(nbj- zv+x}6e8)t^=V1HQX^i*(W8=Tx+Y-h&GS9Cg*Dz?UEp|c;O5`lPG24rH`f_m4q68|7 zJ|d+g@G*+K2}b8{(!pJY1x_ z&?Z5$VXFD8?-d%AnQpQ<G^S@d#wUzrEo?+v3I74)}|%*WSv8Lzi1Am0wGHn}}PROeJuJ&1q+uYb*6 zJL{}I*_$gacQf3J(s%U1c9ZM5aIdFg@IOSZVeU)YwV#x_BnQ!O^D-2nz$St7hKLT{ zl2#M?B7o|is(VE^Kcw|iUcBg3^-T}rP2Q&)c9r3dDGhSM-t5~Rg<&KOL;Mct+bvUW zrhg0q_foGv16GrLs!&)d5uSADk3ttMp=>s7_A2}b=QS{d1ab+l*>~&wm|hx!&SX-( z*;=zn^?iiq74pkcu7#A<%P`mb{HTY)a9QPV`zgG)vA`QUo>Vu)ZFRLK;Q;!FZB)~`Wdi#+<+wPsFISh{h(XPP z56}Fc(mmSXLu(1tuaGg701Q3*B23B)f)PeG7GFw+IWPx)8;V28M(p(4EocCD%jemC zk&pflii5&J)u~>uk-oR4xI-VI)?U{?%QF^tFHKl>>4o{8OX?Ls2DTGQge?&yfjf?g zX@dyya#*BTo@`|JAB~d>YVo!Wyf=DMH$bguT7ad(+(BaNbUG6Ix#7JqnHiq-Hv8{q zin?C%$9f~-q*vY&$w_A(%{+P~l)u zOjQXPv!)+~BJBxkN5E7%&~az`{3-hmN-?)=nR`L29O;M!iV;A}bs02%Rn#wic+fcD znG95Tzhq8?RLIVa8+S{|?wcm6v6aGB5FVrH&|5V}OhZw!|6UHSMF~~R86guSeFiS< z=vC>ALG6)K7hTOVkujoM!f%@{srqh<;|1(_!v(8Yu`M`sW?dII?+)1StRt#Vh`P>W z6NSbvcWlWhyS`oSb?KSI4L=Y&WqtI!%Z_*29>sU$f3K`v^|wrkG|NApX5jMjp(2Az z^6I}Gz7)B`gRAAHTeE=|yhXGTkxO>YuK_#TT;;46<{=eRfPZjd5hJ^F{Ky~PJj_0( zyrZ$1j6V+5PWWLTB_S?B2zETyJ1Ij+H}eA210FA!f9HSFbv_v(^;fU)StJGfoPd64-##3sq;%=lYVr zPi(@fa4!hK7lQv>PWl--6alwNc+lFA_x;Wtn6f_vp@mS-cyX_pZ>zzU zO{E}C(x+Ea{K_n+WW-F+nBwOC0Su25P!aw}vDe&z_xm=Ifu>{B&fXlDRN23)cpPKZ zk;vE{hBlFc5FPjT{ekrZfj>`QxifzuI0#K`W8X?s8)rpSby(!gAvT)ZoU(m-#RJ8@jTgT;jo@gsJ)(EJDh8e%qTB$u^ zliHPxTOhRCy&O#~{1VLB5@X9Qgkxv->&m@p=hBFxz$UsGqO)Bw&sA(=Leh*!Q&#YU z_6Ev+X#`!V2D)JcCgi<08ovlfL|HJXiIeI}-()p^s$Qw>;{aN!I zy4_Vx*Wp9R+H(3qf?{onKtTWroE{L8c`soP$$W@5IeCQSsFYNHdpEY!w~d6D>z^CI zdK7q@|0*tN2ozj<=FE z{qqEcQii@Jmy!e^@*J(ae-QOGP!knxhR(&eoc^=Xo0Z0nxX2t1f-N-LO-Z;AYN14b zt+2xPQftL^a78E>XMK6UHfW@8!clkxPW{4sbLGgeN)+r4U)bOJdnFovDBm1bJpx

>+AZlqGoN2Seqt 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

i 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%0DYh!1zyNy@cw1jkC+{>+)eK^z5JRp^ZT$e1sQ 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 $kB!71f;;!Gywd);gBvOf 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%0DP!7qQGBpNT4OXbamv5|f)}3MS=zEm{#T z5icnA4_)%-W6h{)-!I3+=mhd@cb@N#SQ^*aYRa$WR!2n8utiZZC(zmS?xL!73Fx^1 zl-IZg+wn|5HRdBI@aExh0nG+Ys-QV(Weir>;Qt6k5I@6K%308fAZ4!I_N9c|uHQm2 zWjeu9Bq;9vie}X2+E&4U3)cft7lYlnUFPMOOl{gsoi9pHa%5$m7aZz{@`DOFU<(Uqi$zfF!?^BImZZQ;0Kjjgo}TN#!Kb%b zeVdlvn}IjaYTRn9SL)F;^~baY*b2Wx8n;99amuT+P0z}f27g`pi{tc@A-p|1RSeR1H!WY4q9>FtXeilqX?e3Qo8_}6G54@fB<&);YdigL9a+Pu~U1$BbF zs1R>7;$DsPB#_3^lcKEoDY+mtPx}{KeF>mKDj%or!9anjo3n}pHrC0cl1~JHE$%iD z5|Q1!>q~Djdd>i)nT#QoF4}PcR$LYpZS>V6mB{;e4ABM!aO27S3>l>=kdHCHKt^Ip zoQT5aaJD}^3trm(JFdPk{2Sq2AmCsw_TU03p)C0jT;;W|M-p|FK%|lKlI`mIA+WQw+eg{ZZ#T}7O;%UVaLRZq?;}J7 zTab)dW0p5E!fmW{@*~8;#wiidgY=sM`savez__c8S2uWL`s#k7nf*ZaI|}AEjA+)f z(JIwbLS`gC3EYfd;|uZl{9S$W2@|iS76##Yo_1)LBqjUm+T$xP%4C!Nq=u*_T}qKJ z#xngU>wv@fCnG8{F7OZLwLs}ryBDCMUht%}Nzb+BOUnNykq3+WB=rbP@)Uh9D+!mB z0IP9k>JfRTQ=&9QA8$*tYAW1UPjRC*4SseRvjaQVZaD#+L=3AC%5M9Qth>zvb8MZb zKV8G+5F29Xb(;ijF=!yR8{L!RLJL>kskiFtLq`zLiEggAvF1*0dWGerd-LDNlK&;!IFvb>`JthX=cp07`V!({h%*cW-e{ zV_pFBsoF*=(m?dt)1133ETvVXooiTO4Pl$kLb-hjsppV$@F_5(;NfR9T961~%@Fsy zoX;1hzU_Jye5s54<~jO2lE~CnlHd{pNiWpHi&fFE5ie0o3<5R{(#dwyo6}t(CL#KIUjrrb{FJ4Vrm9Sf^QfDW$%MsOU1u*q_50cHl1ec>% zSg}KdhwR!_WQ6aW$2*MzKgzqU6o@+)RG>VQLQ@D5tXb_F3SmNUcUE_wbjh^J?lGNx zn`w@cuF-c4I3u#2chHDOwm88tKq%mEY>XHl~%=;avEd9A)!jz z8B?PBk^6&YG#`AVV{G8S{&-Dk>RV7iwq_V!+A3m+NZ2e{xjiqB#O70;(*t!XmG zsKve1)a?u#M!z(QHyVoECo6r+7sn@@bV=Z%oo;=tEyewmlTMRgxzZlH9sM*~`xa7c zZw7O-73_Bjv)Kx3`96CD{U6y8!iz^}bDAK$p4@woTl(J1zVoZF49tw>X`P)Lt2pb^ z2?w&@!`fiNx`ySrxpx=>AZ54`Yb6ZKTdi;8V&_i2O8RnDD-dNWj}Zq5fPCEChdb9} zxAk{i^*7RnR4taC=m@q2IfGYrWfRagZ@S#zGsw50UM{+7zoUx0cXa#at!RVkD(kNZhJiSiO-9FgJvW0*M?k zGzLPsZ^cu@G5&b?Za8pQLV@onCk5|Nj-e&Kj&hm<{RI|ehZXkAyyC=13VD!TXe|57 z)LtyI!q*wgUsiB!dQ55&4M`b_ywlx)_vRo(zMR-Y!dbtJ9V<~o0~Q2=Ikt`zgT*jl zYhtt8jx#PUcqNnm)}_ZY&nlggVK)q45kEHYDim4TZjm-`!E0TJP1KE$yn~@Cyz9Cj z`f(dJ$<{@gBDAb36qB828ybEgQj`$($*!ValV(`_mS#?uPefT#mG;f7JlipbI%M#% zd4w`0;`&QB8a#Ur2C|>M%vNMgHsm{H|4?}qE>#0O`elzj&ZLwZ=tt9m;xl{CZ0 zhil?2?y9J`d@)*>pH3tHCU}$8WWrwHw)^dy^QQj7!Kh6w+z9jP_n7go-pXx7c#Y`O zEikTt-;f9~#_vrJ%+bqLB1=j!qazP0~qqfeDM4d z6PTm%TQA?F&D=M8aC|d0QTXxAm-dgDWy&10^ioGmgd1MBiM~j8$&o4#5ArsQe8yn& zOpjr>h#nsYGgL`0R~I+v8M^fN*u3J$GfLv74SRDm5Dm$H@PIfpQImZGWM`^LRA7YW z6zF%X*TYfDe4%ozcUX$1OZ@qLp>Eqh)B<_N8&C8?Lq-48uG+KivQVpbhmAD!2`r~-R*H_>}qGpjzasBmk zK9q8v^w{)v>aX@w(hfvCqR=n2E@z|Fx?Y5}#LE?@AV1D2xlQ#y?+F8XVmMy?5CeH;rViB9DKSAZPE4VXc58b`)DQv7T(1}wxz=_C50v|lW*;Y zL^!T4X#580Ah@ED4~bg1%fzrTfVB!$Qp&0fiO6jI8dIPyj(supbcRns<2d=rRYTiu z!rs|I;;P`qN@N3t-XCV~qG|8iXE!kOO1Mm|-oX&7Bo=Kd2Ca`gfMM_cmsitl(B-s} zm_*LO>hLaVDThxlr%QiiSV1rvkXlrT7f8btdjIY@C)RzytLnNmUSe_Zj5a{CF%Hjs zDzvZTNL1eFN|lG1c@C*_-AOA@80Aw1t7e*-Fb&B|97L;p`F7*RlrC{4f9tvcJMq)J z8VG3u2IQ5F`}k`_f*bI&d%?|t6S+(Z$H4@zag4;n;D^cG_!`TzHcQVVpR3k4;Rkd2qT?wC1AHz=%g}lXv=ti zmwIYJZ z-~}*|4I9-;M(OhXS~AR*oIP4EI(?| z4UwpPl`gc>eiP{NEwhFv9QrSmTF&x zb|#3WHs|Ci3JhEUpHK8IpkM}mrA3($Gcp(j1z{oD^Ndn5%e z`4EkJK;z|kzSF#v`U1E-2%GajSI->^HtBTUo1gfoc8e42)r69|n}l>x1{7E4W7gjA zC>>AO)T9L$(KWWjIAl5(9+cR(tqZR9*9=bHL03~MPV5Zk1vw6!N_z%U(+1E4cQubg zU8s|%-HBHup)_9vJq=&sZvc+HK+GgKrW(iXx6C*bvpDYzb=o+B#_OC8RpV#F<_lhg zN`6~Q6t>rXPqP%Y6O-oTyauVkX(-TnwU-u0VU6-v88?X>a&+}Lk=2V?< zL&5d-+5D);U_`da9CSYs8*pRT#m7VtUJee_mUy>`^gj4v*&P#6ZkqjtH_s((udwlAmCqej6ER6IwYxNQovDwD zrbw?VUs!KOda`l^3RQ}_K6>u+lJu(M4o;in*py-YEv<}WOd01N-kAkOhq$BS^iKx= zPWXGem^o*80oCgfCVjcW`riwRWwkH*5(G=1X+4=u`gNalz3$SFci(?__-f{fT{DBl6`3(u3<;hulh>vb3kjcpq$W6nRwJy|i@a4kfBO2-% z{ZBEyIu-(wOe{!llEO_=n3>1^6N2yDX&fVte>>aLow+E2=w=6-CQ!=rb_yhX!ZuP}KA!lRv}wjTX&TRYhKsnvavCbj%l z(PAPJidDP_N%`e;Nb^R2U$QNRHoG5KZ___PBS(Tx2p{z_eu2OqQtdCJJl^E$`dsC# z#Aedko&QmH#FqudKaGPmCDYHH!~S+6NV!GygHoq6u_o5y=k30%R; zXv`XpPNWX9^(L?z1plxI#cI(Qc#1lXe-6>fB~bZdzC|sNgK-zOTTt|V#QRa|^MO(t zzoOtQg^>XxcaCL%UpioqwZuZGSNgi{k|(jOuYas zzVr*R2Vj%1_z|b)Gw%U{c$FA6y0)O&;*U*lzo87Zy~Q}C|MYJY zn??kIVOIC!B~zepL_wf7;ZZTWysks?X~a$<9+pIWnGDuYLbsnSM`; zG$Mn5;kOG?i-UAB^qiFsh~Kbs-SIlrFHkA{eF#aS<%og8^Tk(7z4JDSq{>AMGunLb zE{mYf9H=cFxM*y>VZogXBzSZX+iQ=Xa1XGo-7XFhW zlO@N8Q_zn7cJ*KBDi18+z-KLcG;%^TOFBUIN51sACJLI!zYm7KhzuLfB})zCZWWzq zKTU*n?=|)=eG>#fCh9b<3>Ynl1p1(6PiAODG9={eYtY!e=vvpXaVH<~D47V89T+Dw z3`Y)oS>W45OuSvJCimE3PP_LOC?X=rU2aNWo9iZ#fVpPYwn^i*oTbmyo(KZe9oJAo zY+$mzEDZmI<8s_(C-}ar8Ek7Z6!=1v!6d7nzb`5IoX~ZNp03^feZO_3Rlk7nEs?F8 zwb&(Bmzbc)AXOBqLPj*37Ejp*45cG0MmU~sOpJSI{isyD{N&ArDZOz$hw1u~=&wm# zNv|jN?qyx9Lx?Z@ro&StU?6L(KVzxxs-;+Tfs3mDE|%7tKG~rz#NbWaZG=1h}Tf{G;dCam*{#sEbWL!+oD}=3Rk706AFIdRbd}$6&&K ze>sq`Pxw~g&HywFO5DtJn{p^Yf6D4}klczD5nprFoQ;#ijhwo)Dbvx*FI@0lajyw7 z4FKA486o0z(%~l2*`uNJR5^JIwkp1HOLz?y%N20b=uDDlR0UyedEtO-7(BA}G{#iw78`tm8LS z`Qs+^@=z@S+QBZBMD4>Pb5p z!c)h+T=i$R=Mfq36{d9vG5K)!O0f?7qV&rJGM4UZ6ls&|vYGk9iw7l|mnfN8AG|T- z)YUYNePl6#e9gq1xmQ&7%jfq<{gc%?-Ly)7Ul!pD@7Sdy2c9~^L2$8wgl%XvH~{X` z8;B>4B%T)R`NtL}{~Bv}#jAU36}m|M&iG;h#b-gsn&o-jf`^N#u<8g>9 zW+fZ)NR>5k_{-}!z-d&yg<+o;hpWQn6$rfrm;ysLoenM;ngJnb3GE!bJbHc{L9bHh zEA`o|SzbN*4E6?l@oLx&U|CJ(@ti6B{!AUKjUNKWD?IVU9w3^_@VBodSik{RLv!^~;C?)$ob&#AZG zdfuw{R6TX7|C;IE-Me@9?!ETbW!!)8F30omFb-oP z!?PCl;BWnje>eo33;cfwj`@~hSTj(0nJQqK4{c#-OTtTg`hPIvUxz>tAeGoiG9yb> zB_tCwSCgPXGK3l3k2rCNhZzvbQ59=QG~p^g zi7mxYwd#WN)DX-yQV5>pkS21Xq5S9qF7C6BUR|l_tYJWjJu-hyy9eHJ^!$?riwss~ z7}`S5UE5%(B*_v~n+Fh9?m_No|2&vF8qq@&Wt{PbAM)RDAa3kuyJ|n!)*k-J?5Y^Z zBPe*?G=6z#k`#pDZhEO?+IApDHTPL|Pj0p4Xor3*l0NX_@oSr?Zze(aGpepxWZZf` zFFUUN#>Y0Z-`U8zg%13wN7{M%C!^n(BkApv&&4206MwC zc9z6od9aS7XO90z`Kt-qkEia zg2?ow6!4;y$v+pD3f5>%om;dHJ`=V*dq=$mLPVi`m5q9B0OJH^F@Sivs&)#8Ga%?t zDK@|T;W*>aNaqfX;&|PD8}&TH*{*DkN=sY!3DJb-^r6uEAM5C^*E{A2e~Z`;iQ7zb zxP=X(+NA$FkUF;kS4$Ji#aU)v8lJjb8(qNfw4L}@0m#&D7@|qs2ikgrM z%~pc`v&5*2M_D)v4;C2u*YYQyTRP-4{=$BWtZiR0(D*>mV@pmax9L_Yj{Bzh*j|99 zzq5?2rtkS)1hnRg2r*V~uu@uA(#^m^6miY)755G5DATsd)?kHR+J+EfE*wSK?jC%4 zebl-S#(145^ME}*>w(Ri<%T0^%TpsIk#L6qEY`0OUvDSu`0UCyXS*fxZHB2k+1Y6mKF35~sz4g;>v z?8h0w3Uucf=pz_87dd^i64F*vwV3nr9#?ln;~+RxA(ZvFCf-sI_0b~jEeWXXoB*CG zfMN&(J%WaV)PXKI`teZLOO8W>v^-_(d0irE4ZNJ$$LjD-N^8p@N$Th0$os*f@5oak zW$zYlZ&RCLvA$@ov%JdZHfUbMtQvJdj|H5pwBe6Mu^|#ZRaCbLmGDb-WI@=li3R*Y zYar=Ic1$0%;BG zX#wLu@758`;)2~>-*P5F+wb_!63|$mZ+vSX{%-OlrK{WL5(xfEbX+m?;))?eXL)ss z1YtO-aWqsWjQS$HCle&p_F~l+v03o+ynw=~i^wDh05!h3{w(v;k(*L_0l|lwBQ5=J z2yH?X8gE`AekgdXoPfOs`0*1&=^*dfsM;U+05ls5iAdV_2LHHTzNn~) z7?(Z5L&VW{+!?23fjt|pdC$8@Nx1k7Sd#o48ga<~T72<%&~JG}t*Ph8I_L=z9QMG5 ztj&9)WO<*g`fafCGMS;meaLZ9*E$4j6(DD+zVsoVN30WZayLY4R2g-+hABzMU#O_h zt>5|a*@O!B9=;sj)6no>EVdE8w=wPw9?{V7OP!yTNR1V-o*Y1W{sXmP)r z(R*a@GA?Nx(z0q-(g}V|xP)Rk>#|9@!wS#!4C7}=SHMq%7a9C4xQ>uhme3(4`HinokXB zJ2KJNsZw6b*!xYn;mZT1D1q=je)9_pga{vZUh9eP(dkOm(a_{2S!lcest?MEZ;{&i zt&T7~jNb137+DiGY%9fpWivcr*o%92Qa4 zr7UuaPrPd@qm7RJ!4fShC~Dl`u=(ui(&v@;Y*DMJX3in8!69Q9O@_o~)$Xe&5v-W3 z&73qAJ!d6T+8l}YqvjXig7+?{rS*H&xl4`a9*_;4UBkZ8Ek-z7wJLJ&u^5Lyj$_u@ zs>bZHR0*}v!du@NDAc+r`JT>)85p`=RDE&OPi?J^@AZhbScu*?cUX8PMOLO|MRbj$ zsn$v0@A8f;-rV%YcwWfjS{<+B`$19VwSYd4OA)W|o(ggXMGQ~UBZ1qrgbWF&iUk!% zSCytWYPuNDrY9o^yk6vvI-v_wwe8j@trTl6CkS|dk1#1Ui7QUErJyEgD8O_vA|7Sh zsUG@_^vtwxYpr+ioqwn(bx86hG_#!vneHt~LKrOH)?7?5y}`FR{5C5{w*79m)rI|y zg661s_9T>|VKQTG-bDW>!l(MWm1x7>S?TtMzW(b?m3n$M{pK&}#wuojT7|GRg9G`-wOfl2ebz` z8uNs7H+cTv5Qp8z9ZH^a^%p(+6*Zl+#|KefvShZJ0?x$N|@ZbG+zyqg`m!-@qz;JvhgSt3ceZ_5lpD^aImlSsHfjoN$mviOorFMt=Z(-DE|e$V!0Cz&Ut7X8sREkv5%}{7|hSNYC338Hz8}wP>$aZQjbLC zDjiD_!hBYvJI@)_0IwSiYlrOt|QOvmep+)50N@}!PTLJ`14Fc(_MBACixPRCH+^5 zdR?^`?X$#qm$DE-OW$k5@dT;$yuD{VBe>ToL{wipZMM9ts?+j{janI=eYV{UM@OJ1 z{6{Q$ZF)gcPtK#(ADXWheu@vt7>&&S9CJKAU1sofSl;02)dQp`j9U08VQ3{67A2ZW%R~8OjJ$U<9?<$uhwIAS>8Z4CW^2=)Fq|$os)wse%S9O ze?7^YpjVL}QwzhE{#4BgycC-_t09uv<4_c1K{;u*5%eehG+0gI!;z%4$s*_6aiW8; z_CVT73-57NH5QeD&Fy|zaGYE1L49c8;);9xR@W*LFD8WHM(vQOEw}4HthZxZNH+de zn;);~JCyy{!SZK!tv^nlpf?pD2}>bYV8k+?-$~8+#AVIFYpRY2oyW4TPi>Z?hKa(6 zco)gEf3C>*Pc%Z}WQ7=ymNd|W?tuteWbZVNWpC@NjV*Yt%3+kw-qoE2R9}xx1iFu? z5$21$SbjUfZxS7#_rhoV)zPGv(=zt2CESbZ77}f!CySrPfb@0pVK+qXR2gu%fm7s= zIM$5OyGer&zN2fb0~kiuJ#^rXKRXkpeWkKLQ?Eghj8)tv_ERT*QRdv2AMsy2H3S|~ z@1@2Q2SyA?42-ZwT{|_n#A?*V%>0Xn{U`Nb=bMg7CA!87Q)*H88d1SdJ~DC|mRXRu zSN($^B=UOEKQ~M$nIgv1I6?I{73OP<8Ap;{ib$* zvk9)WnRB1XmF`JfC^07vp3%-jrT-{y{zaYWNqXyk-?v!pPnC@&sf3gngxBGZ<#mDL zoPqyQJl`mgxP1EVsVHn4QRib-*bTe*Hp-phEj%!_>5%e#M_#Pu*T#Toiu=wlDz1y~ z-G<4(xidS~*#lnA!|-vn(K`9BZ*5}4-Zcw4J{i`&z>*;pI<;5jzP z=J_<&`uya$j~5EmN@?OhYW1*cGEBF~{WZx!vb}bsi5q0>&KkdLUiAFweO>Tx)AJ*{ zbXeI=BA9k)no<^HXq=Ql^4ewqhzLw?bG8RZ*KBEp*?_Njn;o{Pj}BsBA$d{z7>8XR zx>~dxI=Wn_Q~aPUUdac9G_n|!2`J3|bM0^*;~<=8;6Sc6?1hA`D~^YtP#vv(432{% zkN_Pt!L;X8@O#MgPA^ZfHy?v(kqw2g z`ma~amg&ya=lG-#d38AG`5w_D{_iizu@mDGNUSJa8Ve<&G>zk95$QuTbND50EEd)cE7Ac;koQOv04TAzGRCP;yy z^5^jJ;dB{xR~nbWQQPa~{PBsV(qUzH1%`ZDAO%ra;vzXKuF!_4oK<;B%EIKR5ae-0 z;A28zT>DDzm-7>3=FQ1`Cxye07R`PX*FuK5N@_%?)kf_9t%1q z($%P%VNjd$Jh02DI_=Zk|NdNL=(fHbdlrwV5}2aVuQ`5UNfRysR@d5ZTQ3v^X7PGG&bj`u@vh(sd`F5ADb~sQ*wr*lF(TQ$o22 z#hO5Zf!ROL;;)J6BoF8xj8WsWFRxO_$%`Iy4GoTVuZI4rtSViFB>6>HS^Q?|(!ZEdKawm%KT{YvD5GKk(K{+7M)`J`q@W@F z`EBD3D49-gQc*$B)fZ=hwdOU&I3I!Ue~L}owf3Aj4D;icFwv=b*RJTzUvi{!IP8WFzUTh+_p`eSKeJY`H-zrt*%A`BTm*?qX^e<8(+In;*^5XkE z_^7Ei^6Y`i%J+WAON5QhxYVt1<@Jf!X25+;!r^%d?b>)|NDXdZ!a}qB#!mU$`ayK4 zl|1L&Vk#px4d)VzW#~;cMN98q3V|}Z$3DGhHLQ{2v55QW^O^^GhI(!f9R*B@{Cpo5 zAH4tYMU(gEm*;Rf(Ls^&h?`C@l3(c|ma-Z%U83Zs{-3m?{GVNrX?+b2R`*`eJ=Q-* za(C06yZMf7)*%T(KJn2op|KLrl`nSAqr%v0O{Ii6Lg^>tPDhkChEeKc>U`+s1Pb)_ zBiZ*M>f|}?dhk)KxXbRqEPr1V+XugATf? z76H70%KSPyOg(w9_x$vXP|AJJIHZD!pp{vK=Eosauf&RW4TRK5a;QPwRS z{bw8G1-91lvy3!8ZOs}_VHVn%<(gUKqvzEE9qC^g2ckazKIilWq%a}{54MO3`r z*IcvlCiESon_p=x+OU!2krS3`37WiozlOXy8}L$o^PTCdL5SxX=jCqk{m&A4ep(xs z)&bhXAAa#&%wOR^@H7IwFk$o&_7vO*j8cNFol@RRQYl3&lAX+LeV;I3d&>FPb4o7($GnuZ znmZ*_XnRJku;s2Zi9F^|s^)8!2?JN?n+6XQ@>0O*+%ijc%UF*5YaC)gqbGCFk_Z3$ z+wHDx^c-4h^|gTwn&rsC5SS8AMZ3f%@1YF`@Z~e*n+7N#K7tMWJMsK{4^?Z#QC|{h zN{W4CrlU@~$?LsKKeO%&3GV^8lE%7V(m49+DQ}QNmxJkq&e8{(!H1VB-?iZ-_LZw( z)nl7rHgR7R!8Jn&!HNg7DUBFauQ7YZu?exQuIlEDqf=AL^VcO)*3L#o>>0LD{pvgV zpIq-$vBp9t{xDk@rN=lf-?}E%9vkXCds3eA97&bHS8rsLZK{k^LJ~9}qyfQv_4O$A z)KS>>!07UX2GWM(v*}c>UOPUD!8x|73q}3qMw^*I3 z8x5ziaI??Px>niZR@8$6T^Ms^<0@-3fovb!-1v+}8Ka)bTg};Jt4<=VgT_XVb}ekn zHB0#^{wrHW`ftC-46~D@qZUJ5gV!>~Y(6MIqG5|ob6H)YhuA`E!Zu-@P!i7H5rR$B z$nhI*P=u2AJ}(n0HLl@dV7Ydw=A$*_5XJp>+~24Nxnut43JohYC5cXn@AQbdlXvg2 znb7ka)qWp1D*u-9HHD$P-FYBo(Qn%%kpnQ~;??^(Uz!plzWInC$F;t(pe)-|8HQe` zIWG$E@3J$`7Gavu*Zgq?uRvBH2Sj3HHuYPMQTnjC$r}$~wW#AR9~r$XBN+9R)AAFN zcJ*HHV<>#^gs9a_{s44&oQ8marMLdW{Ucnc?|N|3eD0eOKsi0Rs#2JC+M@m`>2eZC@Qo}f@fkF zWRU+c*qM%PnzpQHDFk8`Byj-Mfr0;X4P){N#LnFgy}N6J0WynU`e1JIW+XI;6~q$Y zUH7YEp+vE{KmFZXp&8;b!4DYFst($>KI5u%9)4 z-PjFu?61p&=s1J|=sV0<_1=)St$~UyH^pU?M?9`DMnoBFHHk7R0eNk>Y4c`=2&Se4 zqf*k*AMNBQLpZayQrm)yFgaxIovL|j%m+5R8<(q!;?DUtB(gOW(9)tdz{O?3lUt;I zgIhM0>d2B|RMF>W-HyVJUM>fVlAgPJbN-B*rXt)^Ua_3W!?IIY=hF33cIsw#V$a1p zDqE7PrN~tsy7Ykza(6C<)I&lERIMmhNiPV<+z<`a+=CJA!HmAfee>F7^Z26Zkz0z7 zn~f#qg;G?Rz9?x$2KjsIb@U)wM35`DIm(NaRMe_OAYDl7LH5G4ZXE1gB9TK8+R>iKYQ2wKR zsa9W8b2cG3njN;3m&3c1mtvnPJA{|+l6wd8^(W}Os)muqf*Pf=+Ei-Y{!4O*1dap} z60~C^lbOg_NywpCpR`<(#lUJk=p~LIDaa(4Y#(gVfX>m9x}0Ho$5R z1@+0b%($KdD0RfqeuwJn)$9xO3S>uRhb^IA|GSHoi}cDuaPsX$ddMy5O0gH(uP0xa z&y892qo|Rz;}_*ne=oG-K;^}gL#Z>7pMFch0eUfk#afU4g4&y+{V`8grvp*|quWj{SvSYB6LhpkR}?&c#e8}+ z>0(tLdRr?oEQnjWM=NPTV}i#p>wqV_$J`U2(k*Y)BFt zg|s2VDeUldEaj83t3S(8_YruhXfz%t@SF@%TIgwo6`kgEzrf4%ccRSB2>`<&e>g=c?07?8D?Jn z(nSKM54!9E=8O0i46^d>k^6xe#Lha9FV;|vw`?}Cn=*!z3G%3n^%)WSi_XbIa$*} zHnaAe{f8&-PA)=6eA;5EOuDFbiWO^Aet$@H;U@vqAc|Z z^y0uiC7hfl{vg<@hQWpJ88h8jN5MS32f_Kq)| zfTmCKNTp-}fdp4Nkz2MO2cgc%0|Y(RVa|ZD_UX~x(ON1rnY%Jx%z760vOZ4=)3mQW zlB}7WNGVw(^pTrI1)Ax;_YO4$_rn>Bf5 z+^Q-=Xxp=n;ifi8_m$mtNCAyo2soru*XNMb$I_q5D)$Hm+$flmw0IRG%H@j^iiwyi z_P{DM5ud2w#b>s4Xbc(0z4qg#liob94*447ieK4z?t`1=W$WV) z;?hU7W`!un)HM!iQ+`*9>wjv?yK;3+rqdt+IZtjz?IvX&L3&GsGZDS=qVvpXVw?v` z7ktM=_T-mNH}KoJ{dRm22M2oHdfg*6y+QdSo&xO*rRt?jZf|w0jD}R|lb;^d=1z26 zB|_n$1^H$`QiOEq0+RwAr^Y=r;r(uOH+lz_vn~;fh(q>p86KBDn;L{kb;!WsTSWsM zX_RHPDp_rZZ#);{shf2pK)Qzo9%|c9D4sb7pJMUfTZ8`I{Fsez1;k*f#_7tM?jTg^ zw5a)%;dO_wA4|aE^Wu zp7LjBIwqb?81?-zt@n+@px0qppW|0EHq7ig&m3;~y<0A#x$n23#EL`*gy?xNbC#bOiG%|FMomM)Kk!`|Y&ZiSg2JCyh(M zaoCVyZ7Avdm!Hr`mKPnr;ZPoxZr%6Gxu>o8g?kQ(06|eFYTqo-Aje2)`zDivo zirsx&EjPZl4`cZzqQ~1#^~HRsAvjiTL4>^8D>Y}^#)(>z`jO};G*K^lpKAB``LV|_ z`*9r=gieao0XJ7n4Vaq%vy&nM;V0SeyYD*eC~MeNq$r`BzX_$}E&$jx0|YhH!6}y| zlZ-b%{RxO|=`|tMxCtwEtgxIm%og$d=0>_iQT(LU7PRst)5(-n3|Ha92qVvt&KQ3+ z+e?`><6oQ@B@A@V73e@~EE4+B4 ze{AP`L5?v2&E*G%oxG$&ww&9n2K%IwUShpgGsl$6EpeGy#Kal1NH-;`?w^KiI? z#CiG<8WNK4^hb|ysotNIH|)UR3i{Bigqr#Jt}>g{ zoqJxNdwWB|We7&**Y9Bfe=^f6gZ{`-Uc6QTNs9r%MVpTIAC3+S}wBxos6#`HK{kok@=5=W|GH3rfPwrBUp zDGztWvb^8IU0**gF-f8K>xo1k6~rDnLzjBPzRJJKzX3TTP^00>ey%-H??7H$4^jd= zJ-NZGWPKLzDAvX|sUgEN%Uj>~6hB#lR6bb~Y5&>t=^b(_Ivu;)xrRFwql5V>%SVE)35d(cT<^!^S92pjqe`r|3+dgP{aNl5IMVp?2>)DXK#FtV9#Jc%V5!i(~KQ zz?q2(E;zC;C)@V7%ITw+Ux&grA}bM&Tz%4QcQZIXMDESsP(CzSjf z>I+b=9Qvgkr`ji0yrNdeTdJMwhE*Bh-d!fs>9urAGO_^fJ_2B&^Q@|TMC85x<>1TJ zOkRn|=l#pw`@U+JoVefjFBf0VZZ$V?-`C|9yf*{j@9DW2brmx5+5d*W%W`}iRmi5x z*oxg%oj!H>={uS502j3U7rg&JqXO%+M$K_AzySgie-so!{%!zeuh z_gviS6?aZw1Qiy;21~GQTlF)X9i@eHBFQ&yf%h*vkbeR9|4qIeXo7-&+dN_B3DCw7 z|F$u&GQrHmebN7EQ&V0C6*9xp|8B!cyJ_A3^G;CAUZphgWcb|e9{}E*z@!Br=G!^m zD8vV5IBhQ~@qEg$g_^8UutX^B#=5VH_m(;ZWQ5;m_8P{mYxf)NpRR<0yKabN7|rgPls)9N9Dxv8wmGOd zr_H(2LMF$)XaO^PlaXL2%H|n*+&qR{<&%w)gnm0CcSI!q8x!Ph#@G8`j z3GleWc%{+X(frv~FOt#BXeCq}5{wuC4;%WYIY*XXYSf$2eEsp6wXaIrovMug9~zpr zAd*$9Eb@jhoSN}^_a5P|PMc*M^h@`N%B+vVtlLURy{lNjkQhLoO<@sZsje>(9)4Vx zUwAeK1ANYAp35PC6928rbHS}?NU)_{EijUmqD&d-XStFE`52~%^t)Y>&Mj9G)ze`a zdGL3CaG5e{_vmO4@`o`QE!7ql8r3)m302to%}TG3B4rfect3J)FU36Fk=JC~-JbOv z7yB7dNfBP|$!wo=^}2SNb3u34WvcH4bA$|D{{#Dik>gnRC%G6{P(tKbA7g#E28_7- z&Ry1_RUBx#prbC&@ABAPRZYL~UT%#!Mn&(!&H(NF0r4!j8ZrXbbjVVRVoG?T)XFsb zx7c6X1sX#@<`XG`N3s26?DpRs-B@tH0-=OF3!RK`tG#;Lj}zBqTa{C?kuPw5(S_XV zzog}=FrMl83ye)T;p>T%ua&QO>jCFX6x!?ka|yk^2*X6K^?JrzEA94MJL$iZqO@wn zQe$Z05ax-@lk(+$qk6;Gj0s8b;0wl)JqFpm+k6#-%Ys%xB_TnV;Ek7jB26#m#O{0< z#Ii+|u=tgbUxJSz@eoo9I;ybONRJ^QM?94-Eeqq}@C_DWu(lCbG)-gXz;Y$vhT)}b zcr+_aa*lg91mhwEHqsJT^2~l$oO(NURn>`=Mrm*lmJ>1 z08qJfIi);lSJ%cv5Fw{dvb)46)HH9?BJ)<-ISHCAScvtX9w9t;cZlf&`WVTXm(F|J zMW(ieua$27Vn8tXSGo;uuG9v&>UxkFnqjWoHA{6^%YnI+g^Wo#m9-7nL42( z**`r8KlCmJGi|c}oqNV`i z)r_W%T}x_-+|L%`LOf|#7;YtEX~+j4tuiYs6J_9AQ{^^%_kXA@PAu~U^1A(w^v01N z9c?S-dAtom8&s75sx?vzLYZ7E^n#R?%&uwKuun2@eHn94- zTsTfh-TEze&9lc8T})>iq5xbByY9wG?j-x@y%QMQ{d#}j^Tgv#fzxVTsZMG2iwY)x z)LBtoNyfIOYrrgcY)QvyuV~DNef3KCo+twe8b>1@mQGvvbUQYix$$877SXEsFGNf0 zr^)?C)&OqQXqQbM^y!y|*@bPPF>uJUpMEIlN4@aEY4fh1o>_%WIb4n_OQG)uK~(El zYU11Jy%~s717mdhmPS=Xuu>;ux5F}jbok#1Kn(K5aY60~+neERnTLId&qfKb>q8hw zW~*g9MEZ?1(VLrH8~9tA6Qbel`w{&K{0;q2aqXJ7u*%d%!1oKXAb%|#L3Ay(@Py@; z?`git^p}}f8R0rc+?gT{!gTERND{?HBz(X!z&Em3$1sJ!FxToCp-QnBKhN>7m!tc7 zGe)Th?KAD4<0qQzLIS+C)jB`&txW+=h71^)w&ggGKtK7AnYON1`d$R@A8JWpo`=k{HQ%cRJAV&?V_8*q*r68aG!EA&qPqqtJVDWhT8f_2;f&?nm= z3s9K=8~@)YP;9?ZC=sk}yBO=)Z)>a1V!X1R*MaH!yR}K*hv=+G$^@Hy<64R^ApbBd z;(~_R8I29M7|JF9d>CEaA}lNAn%`<|-qk)2xFuV*JOBRyr~EHXb^618>7${l^`EMT zKjYFmyK;iuM%J=lSTD#-Wr^k}I+LAyky0XZ?>nTD1Zdxy@mSG|+ad-rCv@JFrnO?_ksrUEr7*n zlWzD&Jt2G9=d@R?*-Gg@GGgY~@UNw|^uoUwz74+B(;p(X93zd_Nk3~mL{XwRUb>$V z^NM!WD=u65JD{rldHPfl=}dYi z$x%d@X_r<~M5c^V8~aCr-oA~^djN;~jklkN_E;mHH1A%(qHK_Kl%>a!)?-74@8z!B zw2xy#EJna~D9V$iEVPD@Dpwefs(to5FCS8;4>JbTO^L{`J9tuUI*%P`x?+*Em*U5V z#_u6;ukJVKxO;37?sP^Sl{Wf*!xD?hMH=H*686pp4zwzOc$@X!tnNq3yDvWSVn+jl zDQhr#Xy|lg=@D2S2$$;3Ipflxv;q88fX7M!{+$8DrZ1-0u(c$6v4}w^y(iFoeR0uA z0ETr;{Fe_UqR)T~^2ds6bN)K%w$$H}Qy)ME$8?V;~CT{qsL}ij&M5wI_lks^^#A+P#^xQB3ZsXf*=S0h4Dy=m*HsBL+e1kMzY(kE^wu z(Eav+IgJ{4XMpXJ;{YPaHOaYtaI7_4$(jRBP^O$KFCQ6w2buAqzV9Q#Nh(KKEoBWz zbxF3ywOMi&%L4ncck|U@{shPUi>##2Ch)IUOG6+OwSW-G<9MM5vsM1V`-TE#B4BSQ zq}AZSLJePtm zx*BG!ckdW2cB6?y_AL5pm{IS){#j6sG4s?1$0AZyNkp>AE*lG|byWlr8+B7~|RQuf?Z7~~FO z*lZqwQ_>f!8_if*y!M_~`&pBsu?!6wkRS`tD-U!p6ErF>XFxgCzQ7O!+#%xx2a?m8 z0@R@6MSc5nLlzYAXBo%AW>)4|F6JKe2R!t`&9=?}W;x3W5u}aijWWI=y?6-VA6PP2 zfw1?U)aK%{JV4_E+cy@rQIW~TuKQ}XR{;@ab&bw;s`~;Lt~pH9K{LuOvqqu z@R@Y44_tQESs<`Ru2S|uQ3w^pwkTLZ>+amH9q+2nC$;A}Pr4>k6f?BTwTxGAjAm!B zjxo@k;A1FOIKQat7uK?()K~wdM}{Gz0pET!m;lGd<>zxXfIQh}ukZ{n-*v&dB!K|& z-6RJ2d<5YV4P<3I(UordEoVSh$oUcacjsoA^MmHb^!ueP=MT?im1Fa{c>Zc{#DMmu zwrqpmXF}@SsJ0jC8RMB(X}EFRihZ{Z_CWWdH-*-doc|n6c6&5pY55HH>s1eCc|l?* zCgh3?d0GOViTk1Y{mgf^Rjk(J_cuEf84B!wV{_A_7sxSoVKMwee?jfnK^$u}#1c&f z5oIW>TpQ4+GyW?W=G{tjx5QiHG-Ar16R!WpI4po%E$DdHVuhzl)TP-~^H;rSNrul< zpwUki#@=5z)wd)L5CDHi?_KS3>CxBoUee2woYpTry}Hlz)|Y^gtnUb6=gb(-(}{u3 zP)z(~4)Bed6Co~I=er_O1?eFVKXkWx`R;lSW2T-H2?jPOMz|gG0eB7d^5t*H`BS+~ zy5E6^91Ps0%PvcFJdj?+9|yZg&OG8k+8R>B&(X?fe{ zx`>Iom-sOy`3ZACDqi!nx|fCv35vs037ITzNZX=0&y3$C$V{Ajg0!B?&v`jPb*D$KL48EwBgvc8Q3kcLbR(yeJL~? zwF0AscokR+wnytvGL`V&&cKhMy#i5~2h3;95;>XO#;DS$`o@MDJ?C8wP7j>x~ znmux@4qZjMUTCrlNJ_Oj@;O6K3LTqU?h8~{6l3v8h=AVB27SQZ^nr`HIHk($U5(bq zE%v3D+m)tOSIPZZtFjKZP;brd*iU6Z2v=CH4?WA#I1Z!83giz1*N?P(?f{B?78EnO zmZy;ZQfVEe%oL%KPXVfI^`X6Ny4UMZW_RYWwM4=a*@er2q&{6;CF2mY^beJbw-r&u z$M;6t~i`V|Z1O0f2Ac`On&hNNL*ZPE&k8+=872rNny=N0VR7K}Uo>U9W zpO*prKW#~S2i^O~=}OQ!W^5!>ahaKElV;`Mr$u1<{BL4azL5ww~JjC`5I{=ni2 zx4C@If4}yq51l%&Uc6x9{V?$QbmomEjC=15qKk+x#HhlUY07oTw?*|!@-v~oPsD~W zD)uNuL3IAZFoF`lmFPMR+ZP{+8FK{g{nQ-M8pUt$$8)7;aJvsdxwd2=i*mep5mXal zS+`Q!{av{sj2qmf5c&Rbh6Hv~dhL>B!zJCLsj_4sY;e+t-st;~~m zY-FB*&$Mvj-UU@-KYY}CsBaZ4D*Y4yt(M5nVDC4W(YDLB;Y@^r=oHJIx1Pn$OSf)n zvda>4$tjswCbA0{b$FEvDsNyq=tr~yi`hfo488g)%b3sZ1@tec9xI6inrSN(k55Z% zc^0tAQdy<^Md);%^c>K7rH0Gsu}T5HfTT_LRD(G!&Gr?Q^hd`Y>q}iZkdpB%EWoQG zJFep|AM0%$xXZr;m}(Jl z-@?WFZDKG}4J5U)0$Gv_>jz=U5CHKg*dOjiTp$Ku@9|l&3pF2Ox=DQ$k{*h#Va?dE z`rU2ZQd%Y?+RNLd7G#ozw;dTw{hc}^T&r7Pv=aj|Vwh7Y^rS!G&*7#LhFWFpxKvT0 zqklL+A0j|noO8S>9`9^8V;t9Eq*i!wt1M?DZ0pRZ`f*lEOIz-6BVdX$1~w?x4B^7o zaV#Mh@fuI^TIQ4&R=R=?#4{j%`@!%lW-HHIMRIf%=I@~s`k@1M-TYltYaaK)=<)pe z(GOJjys0Yy1B&NXJJ_@lM6Z*(9G9k;_9JsuNX9bpG-x!DSwap2p!VLgxoup%p~QF4 zU~Z1F-|{ak@003i=~ql=pO-nNxG?Rhi=P!sS?0$EO&hwdzXD=mh>*Z~YiRWmL&3kv zwGs=w#X~|LIy&6SNmF!CKtlnZiM$vpo?iN)b--eUK+>nC)l`G^d|!2zA0QyW+w$V` z3q78VukX)=Ld=~NjMrg@j2=tp!DkhEL!o7s5myCZ0@K%C|F2rz(stzUn@Y5Lp_3#||&+)bYG_3D^-EVzy_3iVB@KxaTCrXcE|Beu{BwBZb zR3z683+hwJ;Sc>)U$}&7dJ?BHV_k}8{AY9< zf1Eko*a9hK8e@v`^b7I<4FXN`5yAP$+{A|r#-uF!?X%B8e!A{xC-_Lb2D8G#0jl=k zHU-UpAODX6ak=6|5J$%!vl91+ty`?_i-C)w;mfIkC4jIA`ssJvfw<3@=UbWn}di!YNLLO+4fMw|7xgh~=E6*gt&I$?_v?G)X<5v5p~{q8>0HSeyM)f|Bg zNH2}`h`bdN;F(V%(Qt$92hl|QK#CQI+gYAZDtA9?3Nv~DA?`DP#wB|dX>W6--+5S= zYk~}XdS+h%pS|w5?UJwuDN?NJlfu`x-@izA)YP@u;qTjAIa%mFB$0vj2wL;EiO@0n z=^#3-?7M7glnY9IR<(TBEM@fvJwDcSR-^G2W%6Evo_|{e)u~~AxWBXPSwS7dW&H&Ia6m(J-?AtUc(?wT^lkqPA9u>9k z*ZJWO^B`u+ZuQsYep-*hgQ;inG%4Xa({i-YyHL*q?gxJ&S@%1^{YzO885DAW1khP| z;H({LQjx5-|8N^(9;gYb5wdM=<%KZX^x^u9iZ8n+me=9OGGhzUT68)xDSR1wg#q^~*v$`Rdeye{ z`!4Kiw1&D3Z}^^={$KqA2v)j>eb9rJy3z5BMgDzjwV)XpuIA^ryO~<``+{$umms?T zW9dECh-uvp^pO**M!@BltmWnLvbX5-!Ny-l;q4Z!uBP zG5+ds%EE3m>-+exibyr7;WsHUQYWhIOo@Qi$Z_m}_b`@lF%p3|iT~vn1tdue)!B#w zUy;aoqHi=$%2u?eID}aM-yRFfAjp*(euyEHmm}E|4GB~G$EMJH_1HUl91@4Mj^8P@_rLMPOc@2>p! z2s8;^8?}yJMxb#u&&sAy`OIxW+glf9KM>ssybJe-adR2b3=m|+O5MPZ&Ji=9MnHc< z|9RXNv&xSh5RblPnG^x*gGGEb8FKRdvF?{&a(Fcv)4pywKq$D$Vei1`PSa$DnRu-% zYdfG030Un{zTt7po^Gt>VS&@G{t(+>{QE~$FdL=~IYyOR?9W&KgdzX-tQyNO&-Q-s zj|@PBuDD@ZB`Ub*^a?iJ8bo7Lux>bn0>Wx6%arzTDd!~00=L(FgB-*xTkO+K>jnux5DK(yN?Z8 zBnt9B=oJ z4AqP5c{ZZ>a^i`>52aV@HZ-QBazud*fS zvgg|>2e}5)TawoZKTf)4N!o(Pg|i1czjU_BnZ*U#iUP_A5TH?V{r(6rk^`*uQ&c{A zPjXg<=-mbqQy-6K{l@jrL6p#4C0g_A2Mft#s@@+r+{STMfHKOKZ+d`g84o#w;$Ib) z@oJkOz}qF9kvE+X0mKrw|641A_mamTY<^6ih5w7V_l|0^>Hh|8Gy&;F5F#KTMVbgm zi*)Ho?@^Gh^xh)9gVL3z^eSDD7NvzE9i$U_Z=nVfa=qbxp5N}h=j`qu?>T$+W)Q%D2(bKCzSFV}SJH9;%e zPRQB3=Z2;QAMcZyg6eA}=<&bsivJJb4%{A2eJ70DBPRD>Xvq`f0)lI;?()CHwq&Ge zg7|EFr~81Jx%hUMTsJ${raG~5O?t8o@ne=RgP%l$c%hRtZ=~kKmyCDx%sX z&f=c4M**ir**J9_Kk?^`4xsI5QCZ-81XNWtyW7QwXsQ)-vU{ZuoxE0ba^Mu5CGX3v zlde^s*P`ENsRfRosK58s)m2pBbh{#Ssk9YMl{n2Wp@Efg_*HPILjONXVgl^{vzqt+ z0+{^2%WnUTEs16YxFv_JhUsUn(Z(13Bc+< z@bTma@$8lcc?=8l8Xb*&m3HfEoS0~lJ5nB7Z%85xWVej*rb`|@4s`9i%z?aMEqA#Y zZJJD1@bRJL$W=I zg2v$GQQ&S|4JfsV*b4vCM;GAL#Y?j%(w4`SOEZF+)5d?Zl(P!z#z>j;O>9e8`KW4D z^3PYyVK0h-NZ0pE4_@+uH@#r>h*h(uwAc;9(LbzsK9Wt+xAZR8cB;=G z#U@EVy#?lcX50)(2(0>ib>MKGbH`18M@M(N(J+@v37gkbsJ`5m{O8@SArApKx*F+g z!trgp@!qHZKnK(`I6$ZA<$t;w3Hv_*9adocg0mSs;xE*Pv{cg*P?>zl*lFQ6NGhmhs5%Uw2OT5R=d%DPqleH~ngZy)UH>F_`=*l7^ z0$2uC1V`sGlOtb92sOG58PaLss@&e3OZ+I{>RwLnBjvBdO@v}2Sv$jROxDN$tw6@dr85{53!ntc(MQ zs%qVTUt8J5pmyRDD7hGOuXoi?$b(-aV@ppYu>6IlNp3FRh23S<<$9 z9#%V=(uG@l*mszf#HW7#EbL}dxW{!JYgxT$uhRPaf+2e-(B3SR4Y8b4Q-WiX)#psypF-1bCf@#ROQA zS5szAwu-7;a=g_Z(S0ALD5ej>D4&x27j(uVSCP*U)>?kP&xrN5F2{6UB_k&K4I?tR z3KGYSa6i(>Gcm8P{D%Cq53pWCzHJH$a7FW75v$SaJb`Y|&HQNB+eYlKFtPstN@~3S zu>HYAk=%W1FZC$nKzSnyKT5f&`mb?<3NGyUsny^1ry-r(l=191ylG?%{-Uf(IN(Pp zo5-YR*Ns;N5DA?(j+Dwy3Ys`RsiP6M9GADAU#O;wrE>R=MFtezANrJ73M8>cv?cDc zE61eD3#;uP#g$xwur*t*K;azFe#gFY@utnBhW{pq4qY3;?093&sNe5!y@ zo-Y&R*TCMIJ=)a#(&CtsZny?>*U4dr@}JAZ2H2j^tE96G8q08FGFJCL4a)finZcjb@}f$9_Di#wj>enJ1_cM zECp79M(ngq2T(@;w`YygilMI1L z(5@w_t1ybCzGJS|F8nQ?<6l>)RcXnFahy2Lfwf^Ebc`77=uC=9I-uwLM)*>12$v6l zL$*q+95aZDu3;q`4zFpm*d+S@;#VC2d2OtHH#@~o4T_7^PQ)y7R>vRW?l)>K_}fN6S-rs1ixl++t``=8)_ee|TI(iO95Rj#yme32`k3*Fgm zsQbMy!$~Uz!BP%7XvD#!DH)yA2iT@kThwe44RrUi7brlyV})yQWG*C80dGJ^&qjP~ zZ&&TCRr?Y(4&jCEa&d8L@6vM$5)HVi#+7KFRy+mcy2pGCi;1EzmENV25)s%(y$-j&Q2R zm;VA+caA!Mb|AbFK=Pk&jp^*pEFZWV*Zk4F028H$N%-d~IQ=atiB9jHT7*&N8e?O% zwxV^t9cn_Ua1ZeBO(-N_@lkplY!fa+eu3zM-n9cwiTrw!m7G!DPEq>3jAoSp8w4h$ zexK14mzr<6HD351X&r-HAZ~8rX6OGMUM9l;y@*UHR&~4U^UT0Q{_l^ondltPf&tSP z_BkFUaiLD<3ZtfIQgn1)?)bk!u0=>?YXndNDoGRWQ;{k2DA~LIDCPB*HuQcxVO*8L zs^IHH)3|4Q1Df>}kO$eHwRt2h6{ab8y4>u2RPp%!`a9V8sC26=T*Gxne#kYHpGW`6 zS#=(>Y5gc2dUNkr&=k!30`_Z2Kae(lcAr|Fs!l@4cge(4+&!xSK_3L9{V+<*j&wMy~Xjj?kQ6`)t|ZuRBhACQh@uSf#TA z^MKpgqS6Xs8QD5!H3Iz#rQ)nH7e(u!u4t8nPbrU@{?YNN{-fi&qK9%tOsQY>96d1m z2gHlJ2Jx=-DD8kSbN;y4k*Q7@b)9kAj4a9%@<`JPvxQ8)83(gtNy`Wo9(Q>k!1J!4 zp4r3Rh{^ZI`gr2^Kfi5V2M~)d9H%&Kab8N`Ye`&tVrK5l%xR?5>RQLSYE;NlwPwbR;DD1z(Xi9P7OeU9HR6z7j0 z9HhB+KV`i~!)Hbm>-o?DRkYGI&O+}*--#NI0RougK~b_EEH0hV+Hj(QUPFUe_x%|R zJDlM{;UL&T>d~}&d~#v#(5RsM5y|*U# z*ouC6@PH$TbsZMjErFYQe$L;>&Ub!dalUEcZfOtth;@hPaj7ef6$h8KvJ0d*1j`0$ zdBvZhC<`6Y^e4J6h+XVTGNd)N#KLVmF-pNR_?m@oCvWdj2m&!^%|H8HoHO&GYev-9 zbc}}#P*f7lYDafmt6b5SShD5rx*{VNakA`(X=l?DMiCO$`b%^w>uk6ZgCDCim%zk> zNuY>C<TH0-IqtRN|nEg+|3D`at`HCbGPB`ToPA=XAgYn zRkR}1kH0^#t>M?ydeT{x$LEHGM||9cUa|Q0*|YFjM8%&dMdJPcLd$wSe@Qg8FKEQ8|9a9|EQzW`q-Lz00~FFnhrl;CY9m zG{t7M8uW97*C$n+T>shYf|xI#s7qeFsy04liyP@`?XS_FQgSD!3omRZEeirmBk7iAju zU8A6-I*bX=kohT_ZeEQ$9n#9}K;9GPdr8*(t?QyM&=AO_qG6lo%@)h{gvGI#95PLu z%cq!21b?L9!kCW4&SD>pO~;c2e=_Dh$UXk4^~%?85dPkcPDGiK%n&4-iS03*NBX8{ z-k@a_Np`~k;~V6RPnG@rmGjYH+V6I_V+de=DT-oP;#`ELwvl$<%OHf-uRw8PY_AB& z_e=gp&k5M?D~E&NsE+dpoV^O!gGjNyzqfIQPDFfWo*WpL0jJk$2X}C1kC$SO5t_I} z;@RU11bV7+X>`q|%HJgUK;n|nd#zEkU8GgQeHj>T@>^2kk-m4#+)UYhwo5|bsD5J<`#ya?Q2o}C2wQenE{As;RhFob-NQ$g>Jcu1I0zx0j% zzfXdD^Wr~Hd5V#BpX~>ynH)me99c|Tc5{}z9KLr9MU#eHDS?P9=i=iXB&6#P^4>{i z1Iy36e$6S_{QhK#h^h=@zL_(E$L-&BFuHcoWob+bcLMATYdod>Z_{0w!#dKI2zU?# zUSLnAcaycm51y@qmhdbWJ_MYx;nyx<&=5i>Y)tb*_Sfwl2rWDZ6)sUJY=1AL;RaRpvazw}Y1DN{JxlB}kI$|14h@@DQx`o1uIF5K^~ znKGN<=_L4&GxQPmep#Jm@-3*m98=K|V>zy@MW#o>`dD~Hu1^Wun|f;$o=J(&R^5Qd zE~= zClX>zPTXnclh5)fMr2d!K1uhN7+LQ800?;_$oQs+&3|4QwTKj7z8p%SM{3- zG}%a0hja(F?7qW!`W7v&%?8}?+zb%Myj}CDdc9}rKe`>ZMFR_Lv|lT74%$vSjCLu0 z`e*w=w0K%afI}b=9q;qIo)6AQFe0P1OCxP-hkuC>5e^2Xcb*!wfaoI4Zx79^*E>&c zJGfMDyB)405y4z}kgymto~3d;f<=pdx22zrgte~ol%~9B>T45XXO=@?u^Ov)IHE8V zD)q9Bw9jSaPamE^0$_Q?vs9}ZAC$eY|A|w%?oIBGSI?~@zIm_%)36$E9v^Z=yAQR8qp}bNzv30&8BnM0b>AMo!wo_K9 zpq3W}h_9F1a-8im9tpn?8jbYW4~R5zCu9uHzE{eb1^N8&4}e%m`DLe1eg5Th>w#aI z968M^t%t$U4HV?$d6chYf)!bE*Xcge)37rB?8Kv_#!Gli*m;}m#qv!VNpifd5XM&m zne7V_eg}iQe^w!S0lMdYh+T{1`7mGD{Nx0V(1k$5O1IBXPj;M6uqPSyX``(>P}zfw zQ>vN3PV5~4WPE6pB=p^*9O}L| z80E*?2y3^9+z0vEt2zvq+jp$QlZH~)loO@p)EloP9n!0as;o9sC`SIE>|=ToL?8Dj zJ@PQ4iifR0fC=#nicAI2yLmvYy34i?xrT%j%A2x&LMl_@m9Dkaujkk#NWVPGUjCF+ zseO+_Ky)JPIc30yvAM)mnWz=@^^%8GlR1~Sz?!-)kkSIh;qbLLJsR%~d&0%1fUYkw zn>7oTRW=YSd-ZnyHGkHR#m{veo2{GkI+eK*1cB-~hA7uhu)w3~ zqiXNO?US(P9{F*TLVrFpAT6~uj(H!JqLJ>wBQ<=^qc+tNjP>~&SEoMY)`hLu`Tk4( zZ`?_Eugz#j0IblB1q$w0+U3i+_*-xA+GB+Dq^Z~DCfyA!GoZd~Fc)MYwAWD!<)nH= zGJ2X$jYjslZHCl3eS=h9P$IjLoI`Cn-LH?LSS0;M%7d6jESw4F0pCNkBb>lhUYZoMMRYkTB!3$9+|?hUe7z z-X)6SR6J=wH(7o{zzTiAp9r%;~P25T_?w zT?E4{I)mSsl#T+Gedp@2e(nR&PdAgFla2O#uRi&7Au;+^ZE-iG_v?IjTdMV$BvW+s zfOvVhxDQsx&h=a*UDuCuPb7S8h@KWuO=VKP3PD-5*g@bt&e5>%YL?~Aw$B264#$;p z6rH{t+4=r%WV5QLhhe=je;93>U-=E=YHArocbOL`JAh6ma+qWI||=wFNk=peaLc|HVsolfrq`Q0_=MsV`!Vh zI}>hIE~q8%E~koeTC^qb{sh^@Uzk@In3OHG{xHUJZTrRz2{C1P8C{tVO3-XV|AlnX zvENCWnpC<&UE8&@lUJhOm;6mT5OM~4{qkJU%*h2V&*p_QRW=`TcQx zwCfs9?%n1i3BRTKi{tg<`((Uu@FS?l6DGn~Mr4Q6UoG~oa;>|@;c&5L;3wdN@xgw= ziN#+&%#k{KDDJy0y2$cp@f$UoT##wic#*eX?9i|qksP8%xPH8<=bxn++Hw++MAonZ zl!pM`QoMmrmL0VyTtrth?4etWw`+`}Au>B#3{;mK+Z{V^<;D|w(;1N}Q*LYZKl*(W z@}6$+7BRO}(e6R2F;~K%%8OQ;Zaw#vZQ{+EHTbBJTk4yzv10eD7Wio1Z7+))?(DDa zce&NHm_%2^TL#Z0O||K+?Dx{P9Qqe%q@VJ!n#RzYxzDL>TBOjz&OD}TR&0NVH?N9s zob0MpcBvGaDIRbNEHq&8FFAJkcY!BzES0^jjz{-T)LL#CocGdWCG-WQJWgUZhf8uO zcc~$D!YJsQt#4ZMA5v5eh9`J5^Jf40$4HAEi@IJ-R$v~PHC+0CkwBkYO5 zexD|Ec23fq2)1}O-a(r_+m*YR&LjJpR|wId<3*d?uSF0Av^L0}S9T~aO_gUukh9jS z-ycgE7d>f;DzYRimB1x`qK66n zIjExa#5z{-!`lnijeo^i8_S zq6=9A8e@Fe?6;?v{?dmnOL8Od-3@6SzKA_2DPtBtllP0jt^+;{H?tjSTvX?Ywg$WfFX=tY|9r z(B-OSOT6-XlijJpl-3n=t8?1xHMo%J4rjN`8$jyB#-%&ijN+s%pDnWe2N8`Q7ttH_=>#zI@(Tt*-y|$t=7w2CwAWzW8iaNBL!<-Jf|)paqgDwx{l@4eE@}nFAZ^(Zq7$U9dq87*0Q4# zt++tC{_%vZ&-O7z9)g*$5neGHnv|L4`o9o0mqvwWH86mK|91aOA>()^SCSplm0qKdITV6 zh{v8p!%K208GkP~izLDhW4R{qqHsj;d?2H6rR9q+ zr4cM%|GffqHTM?V6mP)kFQFFMA5UA~&!iny&io#R^7=~0fdpd~Vj##JCU1H7_)MH* zl6(B*`7j731Q)0BweFMFBYXeL{MA&*HtN3U@Q*yNv>luac}9b+m+xBW`I5nTRj+p= z7GhyF(Yg~T@ASo&`KtOrWcnATLZ|Iv#wRxf+4+1dq|}eAHQ;j6)^(EiQd&d+x|2*? zRV{HA(|!t`gA(gIwBkbAAkmXsSjAt}DCqkxzs)v}$*~A)1b#qwL(IN0nn^8{Nrv+^ zS?LyAwqig?*;X>1#AqOuM*hL~bXCs5CUsP~-+Z6jmIM!2jdSp4Mxo`HcUwgnLE5O@ zRNBt7Bp}XQ8k@7pql!>&_zsgjt7eFSFup}!Z61#n05AMByr1q#Uy=&ROw3P&5S2PT z!hm+sc;?7i0|=5aj7C@W9{dgsF8cgQd3^hwiQKf;G&7o2!S?(oCFg)8F>XvGy_c1c z;>+(1WlmYkYuYPOae>liZJ2-))!mY=N(zmG1-lp|OdSctRLfxY9FUiGMYksphH|i& z0c68SNQWeM@VYRU-ulW*kCG2uz0@gF;TNY%xGIbQe1A|OvA+>mGdx1|UvwWQg!UA! zLKtOd2yIBE1DzEg9(6ppr7fT*)Rpsoc=NICgnz~4+?-WvW57QfEZP0vxb+Xh%sNhU z^qRt3^7Wcao?d2p>7?@P*;5QE=`0&}(*Av$lWKjD+k8g#9dojkb~w=kOmSK2SDm^9 zrsGbsh6rXuH995TmA2@!QkuQ~M?K31BNRG(`BHFZjwJDNiakWlnd>FxnVs*>IC0hI z^EW4JRtH}rE(4X7EP&!_!#5`#DWE(^d23|0^!A$2Mdy21%kIIJ%zEGw~XF{RtCgdm|G&%d^}F45@D z#?Fu$E*fCG@n|%)-W+YM5JTh-k_o{AyaQw6Jc}OT=D!=S&2aOHHeS$uu59 zHAhue?b#848l+u<`h!qY=>P%&WfO_rXe|y;0B@;@cM^&6hssze<*qxlt}DKuO_)93 z(1c=7HZ)i7Lb1u1zM?ldU{?lp-7LF$bGM|X-j!^q6tLZrglSC$4bQ}@yRg5v5hgY2 zVZg}FSTBgZd-DC7BTGw*``eiDqi+Pq$LplVw{O1v=Fc}S8D#qMqU@T3OH51}$bw7R zRQo4olh@bokho;lN#^VAx5MQ)BZ{6|OZc#lKMb9WdsRGaaDTVUhCp7rO@?m|-(k2W z zN`~x|LgFtM@yefgi|=S z{1w3nV_{}oNk+A6oR>x7CcJDgMY-nY$aMUI@P+@3)gP?umDlUh4Y>E(zKmL~9cb3l z?eKWhXevZSVAMos5vqhZk908<6oBw$f%#!aqNI$!;k~Vhisn>l*vToX{ui_;Ef&sC zFPntK?K+%Rhzc_}vl`gUL;Bsl(Q*ojF$x`i+ym+N2ymT=- ze_7fB|IFAYyWJ`g9OT#jGyj>= zBX3`M+TQxdz=jtW3+#2R_>DxgY0kZlBpj;TwPfLW1eLJ(|Sg^zlvZV zt^(DP%NdP>T2rhekj-{EoK=Q47L)JLGN(FZZdbR{sdt!ssj1{OC(7Ra48(Rx2cE`r zR-=xlZlJYWupV+e3erSJ>aEy?-w{=}CvE)~jNY_!t_)G>LOQLtI0u>tD!B)T9SApU zVPrXWq#V9f>si;g4I=XxmvnfL7HIbaFU#ouI9j6n9EQy$`q z@SlJ`%)R}|%1{fsTBhxLZZwk#nmy~;OfjnD^yx7?iLJ&`%G~TiFfo~EwsSO0JCE|& zJeGRvz!aKH9K=(Ft(%3nO1zlEv28PIU;s zG(OV{CH!>PlC4dY6Z9OM081ycz~^H2P(5T^Vb|Jju%nFwY!|G-DWE9TBrXzhaABXhWRoxfudT9;mdK+WPq}aq>M5LD zAF()zadw+;TRz=rhh7cam$RD0K!znuMRdToc*-6C0~^q^MY^kfL#S1sr63{ZVhj!* z{MNxFjYXplhQJIgOM>j7s^#CPDP5?I;yxT5Ah1_{$56mpa}B;M;&iV~;tyL;-M+x< znw4WgjNvUjDwgooLSqj!6FKdN-AWSy>n&#t&E0d@D&<}%E;zI1I~-KRKLpN(9vQGM zm~3s;_}-1eLxeWrH`|iS*{U@>5M6#MS#GZ&#-QFeD)Y*OF@mZA*ysRi7FIU9>mgs2&D>T!ntJDF1zX|)>mwNYFXCm6c}>m+Wbxpl z;ZHy&u=>LP^4N*sAo8|0eK_mefkc{+L>42>vVG`vU*`bvuPfN1Z|le+F?Y#~e9M>m z8>Ka|zdkZGuj(T|i_6>fxnwa~MO_g`IOB-t>-f*sa6j3dw(h_slKP^$zw^L{EcHx| zO_J&8ECJ%47?lkX#buNP)+7(;UC_~~K2OH5LNZmOu|tsDlQ#?ZD!TV%wmTmDU|oLV z<4&IPo7z2EiR0@>`k-}o9ogm8Gb_y4Pswh)bY!W}jZQ)yty{FVe(v4St#AU{Kp?A* z>THH#R*EKWnUv^C44cpln8n5&`*d7(Q{W!PXcf8oxTTeZP}T76&}f$0mcqNZ4&k`s zUKl2z!Udx_XxixiN}0QZVjsAEambR(;zHy<=05ZwO@FAZVf(5qLn9_)^OuqmhU%Ap zrvZ67Uz6J2FPfXoJg<%*iEBD46r1_|t>a4Lg8u*9*(ty1bY51W(B>-qMH2+ixjsH; z2x0Rf`$>c=i-P@GV(Fzw8^VJP4?(iLgRecp47dtq*9&tGcUH>`4|mU^_F^k59hFz5 z*ZkJEeetoo*!4b#)m)$;_Bqz10hpgWcN2#q+osouxi4Ga=wl(0Cmg3QzfzClCaYXV zB0w_wkS#uZ2Ss-QztRkllVty?`bg{U7IFi*aREPe>LJ#?!$8EUZJlg)PfD4Kf&=MH zXZKvMfZTUN$^8-Qco|HU*3+_UTabT(>f0CNuIW93*E}C?eT|1<*XD99w{GZg+Z&Z~ zwqGSsXo)$Wp^i~Wo#uEiBa1mzu+z{{BKKdRKV9|we~K4`&fNmi$Uo|dd|U*9-Ma}t z!T!oKEpaMu^Hk}W1e7TJ^w;;6>B0pg&q=Q=qrk7O4rWqpMsOD?ryDS8;M0pJx#L@d z(%9}hM7oc3?n)z1Dje5$ltSR=M6gwFK377Qv{S>+LvH#@u%Gj~l_$-s7XUk*0fh$elsMlfZBjjil z*$4F(f^V~dc>r_47_@l7xuL3+Nrw{HVvUFWPj81{+0Zg%(c!0D%9fHicy4>za-LjS z&6{9d&U<&fsF^a+yk)%a*N8xUTgJKiCIqi&#of>(KUWYhtC;*NCJGEEaaW4`Yu^|D zi9>rR1-zTTuz^K!4hKAK5N|?+P5?X^oJZ8{zvq8vNHgPT`dQ?y~<3V6*8c6!bB-Y!%eM64wBO|Qeci2z) zs_557NQFAtswa~+Fq}^bj@Wf2sVP{OAR>UyB5AnQmH-W8UGY^R)k^&X)AXU~o8H3JjaMPx+ri{N{W!i#os_v2b|*>yOb!#8!aN)pk|`cLnSAOAPS zOy(P}3eW$9m^EFk+Tce=eoU=S6%={Eav_*uMoZTFa1ew`cArCr(6t zF1i8bC`8qzY*Wj*n7H3;%C4DzNV}ZIrt;l_E3DHT0IhOmHmg4pUZhX>z-Dkel|mf^ zd?aAF;0*js(uns*%#tv)cxOA|q2_(1oliV{Gq-Hs@1UMi3+kYbi{K!5VqE$Q)e+f_ z0P3gr%BQ~bTE;y)5qQ8d4^UGiz&L#|_lFXG564ES)O@n9?eC-zwmcS#?Do|wRHT9C zO;~qyx}dk7%SGN%BQEafH6DLjHZ9|_r<=4!dE(Z^RrosY>cJzrmW*V{PESi#?muR40kUZ1GU`oQ+Ra{juKhB}@*f31 z!Pzs>3EwTI_J~Qc4q>*_Z-fQvvg5yaD&Sve{sI)uWx|L`Yk!!np=!sTZvTG%b2AiH znrc2L8abguT{sod zj<0yFj5u}loAX2BsZ;eU=0b37eq8@*^F+tKP}C|hZFrnoQ=Y_CW;QCLbXT=Ze_saI z)|&jUHm5)|`q*3-r2xKIv1_D4Mx#DQ*h#s2B=h>;l4~oMD@{^9+v@pY@m!x^%av>D zSDg-q=e=-n+tGtmp}d~6&K!CDy%!)iOOwni+$Azbd)ChV{Ibk$evx}7V3%>TYh^)U zOi?n0_8p4JtZDbL@7}7<$*I*rA(7P6tsc9y;qiT@&BAAC!=z=>sxkQc1x9Sy>S#?2 z`5vxVJ!^Am<&stK4^V{YTHaY%RP(!&9I zB#G}vozrlB_WRACwv0_b9&8-*f-|xD{zB>*vzJ(_>oOWCZcXN^Fm&T0^%>$(cJdd5 z7r~ySHDtzdHQV-S8kUKtc{;cGmEE z_)3bWdH)&wf&UCX_y5-5HwP#_WGmMFZbGeU^tU&8f^X|9TUdb}&-qu~@3ZDA|7x3; zX8TB?%RTudx`21*ZJ&Lb`|zjs(b5z@E$+$p{Qqv#WJco`sP)O`NXPVc&~|((_{O0L zzpHy}YM=2ePJIIBZaXK7I*yk=S8oh-oc$R}2my+3$2r7NVnu}gC%X%DYSFPm6A z^bsm!Bnh0*oH%Ag@1SNby+P?zhJpJSZ}bD(hFtlK55e1uz*$)og|C}eo)SZ zjB(PoW)`08zL0oLX}dS9Qto+4d-ZOjXsfwQBX=JDK-Mo-Dim9_UvyIYET^DB^XjgY z&F&68$>nGb+gA1|IM*N^oL!hO7qxHh6{lw3>bnfH5ZdYZc=fR@M!7&{<^?~a7w?|n zKDlolAaeO9@wQ#WE59*m%Y?#bAu$3*uG~`4If>1Wy*78T=Vw>RSU04@rUF%bu1&lz z&3w&ShC6zO$L_{eW}H;<>Oyan(_I8349M69b|UmgwvPG(TCtehlS{(C%sV3r3f70f z_aB7yWUAI-E(p9)#|g*;5g{Bc0VrvHD=!Hc@=5}?;^20e-bOkRHi^{tH<>b1^_Jh@ zPy9^{npRG&d~V+<#PC@4(-9Z5BUq}Zj+HJw>uo&Le?5w@OGw<%C^}ga=?u65A^eAF z(fUI~e>8*=U==*rvmEDJt-eBmBbAXr%b9W;RpdvhTMor2{Ql0Qws^V>Wg{^>ZXvls zwbLThU62C-Lomy}h-YY%8M>xm76v=ma9>ys*a8(ol$&FxH65{RR}EuDw6N#}sXdAD zd8x!fvlAiTUex*P;LUfY9&{BTQ<)-ue-3@s*7$oln4GOkfS5`fy4xJ5k%@CeWi(dZ zc;buKYC8uWj^S)kJ+#0K8DV62`nbt)-@eTNo@F#>CHiX-QOpe+O@SDcazn^Fo`rr+ifEI1EYI;GqaT}n_^Ol~EJor0pOl4zzTCD-^;l<+6LxACYL z&C>UNHTY&)Es>s24xCxlMEe*j;~95b4kr>DMMYH%V@VyPl@KOa3h{sprI;PMM=k+m zXTTTf`a_zNA0?37jpYe&8y5W+qM2jve}hSA?Sb!h58Y<_4O75r(k#s2a`0=?hU81C zrlQ+q3U6<$9R(3oG3A))KAS0z-QOomO4g$pMSz_e|3aC58@Q4y+oD#J{LZ*ZgIPRtMID2bZs&#HPM0T9OG(+L*kNJUcgb*V>M^e167A;%UGlYYZ?eH5 zmsGRT*%zx94WSa>Q1p?FQV#xis@c6Pm;TJRw@JVC{Ae=}_sS7M@uSh?&y%cbcN_z1 zm4BWYN*I0kFtKArP%9gn9eWXRo-6)(*|hQA_w1YGpj#|SD$$W*pL%@gihC@XbUifg z&P^%SohDztY`yzQ?fyi?2$rVxpvdpCvViPQOa193Xd6wF)r_KXpZk+DjKe-DR|D%W z``x!(&1v*N3{d!BOMJGFtJCrigQe3JG}VSxp+eumC?wN$*LN}K~& zskoi&VAW`{qJf>Xi@TBiz3hL}PPNHDtQXZgS0!}qa*(-T>>ui0T>9wU>(9kM&wav1 z!~X3lVS_x{phEJqqj7*>z}vxquG2~eQxZv=VNiAOw&|{n2d13Sb~amT_42?NZPw(x zWwHsfF%3~JlfrWe#9!i3&J{uq|~`H^QG6HSe|=qq-np7Loco zcst_OAB9bu8$3lQ8kmQ-$6@}(>}#r1okNu+zXHhKD<{?S#g`15=9+Gx&vHs?t@M77 zR>38p{~6?4<#`)1l`ifsTpIp22)t6yjsj^u%oYLePg%b6X^e68JK~xrJcSOy?!H{J zx?j2aIfw@Nlp(7}f1*eJCoaDY!2T9A1*O<@q7BOG$8lphb^t?z=LU`|{~63L-2WO( z%^w&>ezTmiN0WH^sf4N8PrQxz`Q*wRW43D7Jiq$9OCuFXL8ojK4eK__Jzpw$mSa z>Je<;O#^CTt%7&G!= zS<(XNN#SNC0|i0-W7=Jf6~Dr<>aj{H48M`5uENc5;KmW+z>sZfg)Y0+|5Kf4RcNnZ*jxH6pCp6lGOzdR{p- z$3B;DDNewDwt}q;O#jGtsA9@a;@JMODd^>CKHmzojnild7Z}kEbq!H;{>`tOt{Yn< z|GDO!dYw9z97FxDXR-|tyapUIjsO%1t%&?YOJGJN-m7D%gi^G9nE<<^_)t6R8xqCC zyr0Xj5MjBooJVA4tyubN!e2=pW6f#u6r0z?(ZgL@ZI<-5J=8!M8A1)z^DMK|9Inx! z-`=MgRy1>$C&flYaV>otR7xA~xXWWzfbEpu1z+-=__SL)R3kKZw#xDRaP{R zLxzQ?o27b1qX7Y;!x7f=YS;9d97BwXc;NbwZSyC;$F~{}0b}1s^UYZJ^_|v8Rr7ZJC`L6j?8L3i4O zcpP8LDioVOIi&=XmkjRtW3E@j{t>zeW2#5I@4_{#75jt*-`ZyovYnu=OX8x>P}jz- z8NqwM*C}purIx?h8qV$Qdr+|LD~#7RD~ecU<)f*(FAYany!xFy(yyX2aav5&hFcLK zpFw$UtA_piNj^qp?Ck6KxOb-L{m)?)Gk`aL>FsJdy)9W^*yo}#wTUa6pepC~Xzp1Y zjZH3mk@3htwz%NEzpFtxt5Q-y=96h`a8UEsXaRg!?smFxJ3-cHtrU~U8hC3f4-La{=B5WC?`c!6?q z1e!f3BzL7enl`{gILo=DuW?1`Qx?7cssybZJZ{OQJKY~v4p7H0rak2wqS$u~#p~>9 zgp^8}nB#(Q6j9uZ?lx-*mj&yqv{yP8XPN8+KZpLJ;z;XoDORHTJ3=Bgsd*Z^J$sXG zmGRImwviY$Bd$(+vu@hHh7Dd9+;3Y3Pu)}+xz?1CmwDWu%yx`N?b8$tnVq#AW!07$OnDg&Mr<3!A6c!3Kx}SPpec#Ox7*88Tv<{I zO>o((A^ifc>Vga3P`N3vu#R3_5`g^11Jb8 z3ZVL>9TG;BDjp4|$d>=LdROA_H%JKs0&%yZ7LvC2SBh7^7~_T_t55jFaYw!M+V;aC zo14(a`wMe3{B!W`?&ZSB~ja1333M9mx^#vzH71iZ0p0yplS>U`*o=zf`Th-8M2 z@?S2oA(i%0k^Ju&Xuiwji3hmb9yvhgU%O?n#6oc^J_r|GMv#5yro<0x(n22#d7qi^ zS>*3$4MRUWkecRfg49wk=j0`=+%9r*0*%mfaPfu8BBjz`q)YqG}ew~ zz6}aIF1)AxaUy#enf4WldnPC0IRb&s)jlw2Zz>T+*hG3E{7&~PM&*$a0a_7_CF%7D z;t{>9U~2t!8DVsOq1%r&;PRWG%LC0O znu$EfhSGDyy}|tp^gy5b%b?8%K)Kav07j?r9k*5ND*4yjM0jwBl+x?py;uCr%4eXi z#}{P8p(z)igCFa<`t3cfC(|3k(YiFdF(HRqlL>ErBikwT{lVL1WUiYGj)d@4zle@y4Ba`r1fMju9}B+d&xrTjdx2aIl@BBb;Vp(?5&xH@x2dE^lw=7x(FR0y@0)Z!S&=>X1Ku5&N35Jf-Ghyu(T^{ z^YWLudcEtHXd z9~!GJs~BYe+z;b}nSefvc4S*f()=`!3Qla{C4UZPSB}}>+KF0)qBX^X?$LwOngo=n zkI5|iAFs+?#Q})}xBRYx*fEl?x&lh{ciC2mKYQk}iiG~;x}L02Sex@~m9|*ILmU9@ zMr@}O?Vl*gioBP-fOv2=D)%mJHHhN3BiDPZ^70fJJr?u%g)`>LEj^Z>R55EK=Nu{ALv=_-2WobEH8U*^XAF(B!H_w*?^(OVe?BK)%oHTHwy7P`+f zF0?FGzdyvM@IzP{y5#y!S!G(!Jmv-vA7N(YI5#k9D+-A73;VWJ(BDw!(P#X*VDVwy zFDofE7wr{<7P)6jgX4}SMsRXb>p?Ah=*V{@4S&6TKFoRz zJ&ePm&(wft`kZR}H>bL|hTk=*`{%>7gAOcG)OY??ym+UC%Z1}Y=sM**Y_#)L7ea2W*ZS^Sx^~&ae2NduWMdg0{wR1i3}a@<>YeHL!4x^=Mc3KVHB6UWB@}9iCY!P|6y1NY1scJEiv|~BWJS;$O+f_3gFnorE z;@jM@mfJZ+YUU=QH7rZYI(8wb&FN5ikb}YkYHHGbp0i~C2Q03S2f>`Xo^y=ndC%U{ zI=>q%VJ}JUdSgoe(faxJ{u9BVrcD;{uP^}+D403y!Ak3+LW>sy%dx_uY@JDYTDl{% z+H$a1pr_PWBOTbyFi2(IQtivX9;@mbOjp7lMi*?q!a#EDwI6sT@e8q4W)R1EeqzBm z;_d1hU=^WKtde}I;-%XGbz32RCQ5vVA@uz+8M@uMS67r@)0#M89_Tn_Hpnew20!wf zqscteQ8|&Hrn}p1A+hGdBsH&&#a>}Bo>b&o!IgHCumE>gPwQ~9u%^(hO--pQeF)gG z(L-X7rHlG|<|6wtpA!m~M0E!uivHF&1R%k83~7$@>5Q!!43yYRp#jP(F(GHEpaVe- zEQ;M=dlI!?YBwbzMA353oGeKmEa^x*E{Bq(?_oprQNKlXa<*qcz}~Xvw*!CYgokBZ ztih1!5*RymyXDX)?|5KxJA=SKe89JG1$$ecVoqTFg> zb}*T0#4yyC6aRu4B7|WLDa3ZxX2^HM$B7%)&+#R$hc0l>VnqCrRn94mj4tDQGcLy~ z@~X;hL;`@LNUvb~<%3+HhA7w0iMctxIo<i zg>!Q0_i&FlrgQ7I@V5>D!gZ7!O?>UZ@Xo7<2@$F)v-4U8QgIf4;o`uBOb#J7@zRp% z1@Aq7I$#Ze+V{O~g@`?^nskFd9|Ss{TWyCcgoc^^6%DfmwK$}KQ98NT_W1lDlYigE zNB7L`BXG9@x5*Cz&fVo|Ijc(tae;~`BWXJcjdAF8LuydO5gZT)=4!*)0I) zykIbGm#Itf>J~XR(wtTL+U#c#fdSPuQp!CwzMZuMNi~e{GnbSgp{RxtRxk>ctGqZX zihwZpyf!9|K^myQ0z3}NChNLRH%|KsmjlNFaks^4H^_twwNqgfov7zwy$j5=HjJR& zWt>^J|JWV>2QS3K#D~|`&U(W(uCciAmahz$ujNNl*MPSe=)Y7A%@L)2HvsDtX_O+y zMub+-7>9CiPPMP{?q*YYTt#WN;MtFdEK|4}0{TC|tLgfcY6Z<@p0vUO*ef}9V}r$W zj(Y{JP7M_`Hcg?Dg?R`a=lX-EsW7+mgoe7UM4RyKN_**)Mnd`Nu={n0+MjOE4!!Hh z>(7iC4if|UJR#DTGF0tKxqgD_0(n4e0ZCFK5kX56xOyQn(f3`t9BX~fG^cJ&$It); z%g4 z+sVe%dhAx}ZoEkO<((v0yle3#S914nC2x&yBH$SLpfy0wxldn7&ObdS*H#GmtmK2N zSG_Fgax|=r6n~p^D{Ha&wlpC0LI`+Rd6-SOOIx5;s2|ML`28ktthz_QGr(nI0oh%i z?^njPocF*Mb>kHFEqi})DM-~f9z=n33y8{8;$~)l`T`K$P=E@yFCtoXobflu7sdA+ zd-2XRf7|?a{ZiH($m+bKpM{HKsI91E*U2EUvY`;N zc8W)(Ns*RrRLW#JK6r9 zP9OnyPuIo=F>UFfwx`ufpB>kex z8MxksDUh8pCIZmoy_C0}eSe z=ML{r{Jy_?|NPzO{&mlO&a?N~d#|f99mK*SaYZQuM^0b7qD3xB8l_QU#x>`YWReZ!4)+KW3Gdh)jKdz}Z~?lVa&686rAO>Vv~ z?s4+)&`Q#@0VXTUA7|fGh(2pVivVV_5xigFSdx8G>4VAeQ$`6Atd2~!ZCNF%@IaV&{wYfpV+YYk+Qi{RE1Vy$qVC%?Lif7pcm?v)L15Op8U_movvDF@VRQ9$&YP7SyPt!#Im_NQlLMvtO2-!aU7 zoHs~Hqt36P(Rup5pJ-75b}#C(oI#E3)6bAZq`rBQ0GE`dSt>8x2-OnTL)UlOmy$ux zpS?B!9XyPEMFt+hZRH}Xjl=i7Tf;XI(tLu;m_78ndK=r-EhlO_B#+^xR5N9v!s&+g zc~ckzuW@$c$9ZYp??r~63m}KE-ua9C``QdF=E){lyc1nooERWZ2Y_B=W4^ z@49^~DsSzeLu-zO-r@Ng?7)Df#xc4UH6295*Tx#mbb>E~%|K^JCH9;XE9?zmsZiP` z8dMgv&>i%sdF@%x6~q0luGP~Zoef6kXKVMSKcUw%2=Ph#((ohRp;!0u>sJN1iXwGw zw?dxKq=qE*ym?2!7fdZz*B^a?^_w&{e2(GeZx_}h{_p+5e%)HHU#*j`i)M$o_~jJo zUrQ(CO5tyjYRxd6-59P3eVw8p?L#rXdf$g|WnK&QlLT{#k$pH1HEiH;lGULGy8zrF z$C=?nF$b^Z27eAny>A8S*}b&!A*p7!Lj?pRR9lhEq=^fhz+~MyueuF*K`J#%p3@5Eqw~FH64!)$g4K`aRjSIOk z-dvYSlb>jp@-Li~Ac?zD3IxR2%;BGC-bKG;aw4F(C;9rD&C@%I(l5R`$b1?2Ml&Fm zM`RFGCf&d=GZ47-+zneKwvM^+TZ97DDc)7+JN8F2vZ`;BN$ajGK`4>Fah%%$H^uA{>FE?N+qVxdM&VPR3NFPaplSZ$#HOgBcyyk4K# ze@w5Mq>S$76NRhjSZBr>Nla(F>k|o@tT5ibx%F3YQRKtGN03h!Yi9QZg890>ttqdO z^^w)w(;{FAb?f%(X6&~0NfNzx{7EK9Vj^jWc>EnLU&PCdrteKbP02p#^J@Mo2Q1$d z!k@~=fuAMyusr&zq+qYusyLd*nWr|1FX$=AFDP99yxv2w+OXQNd6B2y!cK2Gvl#KM zeqi>!nHyJ%dZwJI(u$nZQ!^&-xEuDxhelCgmdH5i6y@R{)0%2pM;a?7rKLtiH%0xW zpQpEr^oowPz=h~HC}y3AJxNQgeht_(%QXG;=Je8ZqX6w_IHino;iF$kze;S`Y)NfE z0z0&0w2z59`W&K_qD7-QX)6T=Q)g4TM(?G{rovM31$k|~?7!7J)Xf_jmm3%+8b;JR z*&*zv>P_k`>d)$_?2jiUDpAG}c^0`8B|qm>`ei8>0-Nnnt^CPaH^MCQ4I-K?oEst=SaGP@|od|U=ohsj=jmKh6D{3}sb>S7e-*&(4-`PEIV&XHfcbm*x(q0u95a{nIH?t0nAFD}A%9Ggd*W?W68SI7Ts!-yEY4#b2eG{8)b9 z%F$|nF5_1aP=Ug`873(TDGd3QJ-Hsoyte~mcl*6IFA@B_+d9-oX693xnl@XKR<>63 zl(cogw$1jt?GM{}%;jJkHVo}`4X0#FV6*l!9nmcJYqS&K2 z%|SXrvB6v+mr_e1nbijdB4x{EdR;tSlWWpl#|s??DF>U3`U*Y@whBf?YBp{=Ex+*1 zDa{wm1$g1}$H8P;3F`Q1iF_^777Ov>02@8*hYq_n* zvzA5J{Kv+c6PladA)H>%Of`^mZPUKdXR3e3Q-I6DlPo(W0i`?^VX8~+`8qN)cEkCG zfq;ocSu^FUe5xVip`l?3-ap(OC$;%wc~Itp@`T5`|R7Jp@vL{*(D-HqAqa`nc1hgUa*XUThqa!bPvkOjt- ziE4iH?P9y*y*-n@)}+}Vf~Tn!%bQ+iD-<<_*|Wu7!=|Wq%bQM#s}8Cg{`1wBWS&1@ z3}UHsVZ^j*>3%WQthYd(U>zt%?Dyo(oX^guvv2gOe^e9Y5ivaCaw0;2 zKEz$a{n&L7enhdr_M}n8q1n%EWYE5FL%lvDMl|3^Wj-a|+Q2$({3^>{^wr*TYc6xf_f1{;UBNm+ydlxc&5; zALg3tSt{^MRJ1187SakweJ5|oPUv$ocae~=z=I-1@Q|O+5#@WD?1gR;&fw$d;N&jqBhK_s4N*+`Hk+4;;h!oV_To(Xs&5#io!u-Mgm|9wJZF-)&%nSS z=Jwu7R8vOo-{hDtaV8rN4;N8hUT<%29&dggXE$qJJ`oWS-sdlPU%cSP)Zljab@DLx z;dXLo{uh(~@R6}}w{Wv{@vwDvVz}jN{?6IcL!61}wxRz%|LUiukL~|z$;tiS!@>-Z z_qK$WkLNk>e|cj_#cp#&-`M(CIvB{_PKM=ey_<% zUWe6qJKfLefuzb;--mZ_dy^!)8G|9;`2w4)Ui;@Oj zJY^ub`$+0FPB0n6P~Q9y`wPyvuLLvM`uTAdmF7mmQyJo3tYppD&-cWGV`u>}>F(@6+JF zW<&FRr-r1mjDWTAd&0u|-UxTrpl#rF6#K_yWaM;X;B<&RO?9FwAxSaEizOE{47n8i zni(73eMO~!`MQ>V5wg#lCH0WF0^E#_(PEujRfr|{^j=Z?E9dIu_0&yc!z_a%$FfJz z{E?~3eS^cs`cWT8o9j7R1>~KdLh$ZOqYB&+=;N2&gViQtDY#?xr9!^nt(fj^#=;u~ zs2Ukc$bVk)Gkk}1nwz6^rSro`_Q%f=sfc7uXw-=g8X%+^1LKiygVs8)tOpW<%8P$q zd2f$E%TvookenNT3DZ*i3SG0;PG?E6(-cyzK7AUS1pb=2(#3onykEAyWAgwK%lnzR zKYtzX&Zc^m?Ev)~e(OJ=GiU#(o}Y5Lg;~a83q|%Cx{;$2wucoE)$KibT)-(-qqeHlg@<2}(+`5>2oUt`$ zp0bX~99@m}IkZAKx<|1pcUr{Bhs2y=hCK$hjVgX7P_|SO$zv1t2l?|V;w&~`^q#wt zYNim#6-~3J(5Y0ljvT&9KC9G?_DG$ME)jqHXVuFw30=>mz#PHLrEToVMQ_=y)c8FBSTqu#OSrKi((!{Pl% z3zRt~z>v99uQTXg0u5L7m9V=BJm-<~WQ0vR%wy0RtKz0S*5|>G{xc;u21WJRvu^?c z9I}t0tB}|)$551RqnJ%-UMRiYjCb?s>oCt3kE%AFSkvbUNwD3xtTedhRW5mTkJ?F2 zLM?u~OmSu02#4PY@7LixjrOpR1N%fBrF^-*|{cC^Ju=ej$l!xuUfKkS^e9lP1_5y zNiaN?FIVG5IyGbjJPVp#&E^`ZsZRRnbQV3}Dqu=OAOg6cBmb%K5|diTtd})AVXZ?M z%a0|0X1B-DdU&sI_szQzn*<`Z+f)o@U&m3Jyn#IW)bkaa!%akyTUGw>O_P0%Sfd^dw875{QsE~hu z{1P~C)+`n^KlkO|mv4sW)?MttUv@3S(>xwQqeb`p8R8=%#cbovtSMV0#s9<3 z&^u)@jHim`KfQH4-5+^PRV4o(cKbY9t-o-E{@YvCzzl;OY{Y-rEnC`AwRBqjx3~ZQ z;QxeYzr};auW;cLijP!TMnm3 zg}>?8Dll_tkF& zrDwCy6k*1u8PcUs_j$KLd8$TT4G*!qFhZAi+iVP4&1$0~+5DZGdi3jU#yFjstG>(2 zegyuU*(ZW~4@e_*#nacWL-u1k&|jm1Y>Fwy$preGY6bJ#sXAUNS&KAeO}!;c$J1<~ zRR#zNI3?kZ$Y6t4pP*7*m-dW&>Y;grdGjxTJpXFUxVZcUrGu-`JTegvNk#M_#1Xyj z>@7hL-7O3tluTdtL3auE$6tFWoDOtdTfF4Tl%BYk_nmI|x|Ynm3`{^an-#Y6b?aLQ zqTfYdEFyjVjyk}&Ibn=pyr{umGj>zBp4sI#m-`1&2f}Olo zeqeoIXuR|FA`5=Z5^_ZqweB`{mw2BP6P#5DetAl4Ag6v1U=hFPXpW>I+BU$5N6>86 zSGw$-yDzAT-YYft5QU#{oyB5SjVz9XzHw`;MN(fFw$`H?+2XMPJl6|f^CP7=)HK&s4ILK zJ4daz`Vf7Ld~-pU+ed42m8x*=`J_&`qPj5407_*yhD=-HrD|(7p-Vck9^r=X^HxBc z&>PpK6@{ABWiKkTZKft>Se^Wta~^k}`wYH)BaeuX&lQ>+6#1?(cPaM^%J9}@O$F(A zZ2myx3ER1k6;YN#nhrR&rBArK|4}2^1IR|DdMMEyP3b5^>=hgM$(IT8T~pt8CcBeX zOP_4;8UL9n(ztgDUsGR~L2m=*9Ps?)k!8EtwwOQKKt4f&(IajpG}E*2yT#8ubVi`Q z@0S)Ge{yCk+E^`9Ck()fRFNGk2ejq|o4z>(kTn{tN1dO*&#M)7;n-1d>)nUlveL4z z@qp4Max2kHHam=>6N@M;hd9Ifwa_w+oInXEk2_{`|&$<0NVmvjKNYgefxdR7RnmQ2Z*WKC5^BulLfy=eT&ly zBD;LuMXDfDRR*TXi6QJ1)klk?@V1kbg*(1Tq+Oal2kRrR-0^3Mf0MOKZH$B$Mb84N zM5SjRi)5;!;+^(BIzu;LD;;QM(e=xZ=n@0b`@30ia39VY$RKFL)HS7(KaF4fPA-azKCIS4C*-#Wer-UD zC<$0ue*Hjy0d7-~X%%)(lVg_@(_K0M!288&#IBn#XSPw7?l*t&L;&WX<+-Hi2D}-N zi08uYRX7O!>yApwf3T!kRXvTzcC}GJr#q{7SSF030Ho<4KpT(?!=*|uf^)e#y4vz( zhANtSQ34Nsula2%*_ZMV7M9q|?#NBAFoR!a7UeIMeMQULFsVd4g{}+s*3fPh(DEX7 z_g*3~-JNvYGI;}|KsbP|z3(!a)_Ob~duKrGw)xZORSbEZhM=-MBZ?p0@ADQ-N}%l( z9G_PIG!9lVvY_w((S{d$YOAchJ|)|H%3Hd$Bigx5*|X_o!LO1$$j?ug{QpdS^*h~` z*+KMZ$x;Irhb?i|E3Zc`hM~AA_5JqjYT@e1Z?`jX?>_4b=UH@Q;}8e-Tje|Y zg5nk9!kIl1#^rkxI4{H=v9#(>T2h?x4sZ|XdX&ve+d!sEhU)nYk-xxj@I$!wtgQMo zP#clD4&y`83uNQd%s-&G__^_$@k{W?HslZZz6okDusayxtTzjY#t;4#d_0`myEGwukSdXZ8f1o`8j&LaLf=AasZrb?B8 z_4H68=N0t0N8}g}o*%9*)0 z2Pu;QinuX;YF&q&tjpuj%U8~u7O*R`j#B)Vu=cw}@t|!c9rf9#c1IQ$Hh?Ic3^&WfCIKl#{q?m#dl=`TzRl zfPB$7h8fe*;E`;TI9u33`A3?$zTQl->yN5n`M(lQD=dFO)eLCK5P0LL=qq``Gg6;< zXYoJx)e}8O^dUqQF$DY0J@44&%>0CBhRLQ*S*U?wwFjAbQE*<`<|p7STdHW^<@8{= z1oXc6*VDXdj=QH6l82mZ0bPk-7$knpV|l)%kqphjQ3X1sPO7BW-SD{K&_5f;Vr`{+ zS5%i;I_s>VGd%myuu|*l9}jI|O=xTdzCfmoiH&PQpU`WnZ+jm7Uob~_yvr{6H``ed zgL}{Hs>k6Irj>KI2hV1P24l&LYsE`l6z8hF37wavoOC$Zz&lWu3obXEraWeJ$GJ;r z8v<*%+zz&dk1+y7=u1)yJQfqED_<9&(;<5Se1|-ECH}#RS(ZCB@%v@a*m&oZws7y1 z_VxKQQkiH4g{Pe!I75L2+sk#T6`eau6QM$1fI9UuPU7AqqJ5m8*ztF}-V{1R1b@|$ z#V{XG+(h>)~t8#37E^pM~$c##Lo#k@Y(EhC6HkBNXZ}B~QJVTJdZlC$Ynf=K7 z`Pnmfg*e6MNTS2(E3;N1m#9iB$_F8<;P(wRxk-eTtg5Cny7FBzujYyq5QVCu<$v7J zDH)K%*mIk$(FiTlvJegZrtY4o)L2;g-)IleFzC#9(t9{W12bA0%tiQ_m8pGO;vz=f zQPziiO`fAepWq?!%+A$M5HI(v%thz{6V028@D@!*!2Z4^^c&#O~&t z=SG_slmthTz=T$WvWfOA6iL_f@2CP;-F)O=o?9GA>&3V^9e}eCD4VtO+`XJsl;Y| z{PjS@e(!bN7jPfwZ2ZByq8E($c+uPHRr*ZUswSV3u7tB7=T0U3Sfw8Yd(EI{7E-^? zzag=k=l`mbr z{CjN1O~e>c!W?q?POki4it&T(8C@du_nGM{||33;W>dI<{*+k}kBYD)8N@O21u zg-b&b5jAVFkomcX8{W8f*HqvC7M+MJ8E!zCH;zf6*V;(j&Q;KnPP^^Tb}ga77W)0z z(HnU;RHEq6{`Pg{XrZQ#X1mP{bcU{yj>D#*y@DZcF?-UAdBbUY^Y+M%@I)HSlL|NI zzaEPD4q}XLiPp?Ocs!sgcV>>GM-?*IyWoDs4mVg7$rn{d1{suI5GN}Mm@>t|`!DUk zF{S9bv)xss`qOql-7tbD=n=9rbR`?{HL zd)D;7_iR-y2KoUsF;K$P9~l}(AK2Lb$TknZc8Hak|2RXGWp)jtJ@BJH?8ywp_b#Qr zu;`Gh_dI@(E4Pv%Irh(OS&Y$b-*&UyhS{XNFo%cFZflu%YgG;{PJdj`a&-;o2MrW zf`;@$cep7&gnN|OL8Fm{5NQSrL)UWI=u2haV*<}8c;UhzQuz!z_s~&XziqU5MkRMK z)a2dtfS=w#Bp99?w(*;B{Z4a92DQ<#^{LNM>aOW~>iN;WS$du3T8sVV9P38D<=>|4 zDC;kedw-GOjm4B-JogpzCO!t5s75c(UY@e2)P)3Ls-je$jGO$#SaGA>)BC^459ZMm zrPKeLsWc6wAB56^@y+?!q8apfSHe!qBW#QY$C8yt?EYYHDa|az&`VrgNWssW59LN~(LcEuG+h$t( z!*drehxWq3&1QRy?E>7FwH;EQDQ`gA)YZ9Ajd;Ry{8>FsvYWtnevQ<{b>f^sgPV(Sz#ft&^Kd<{#*& zdB4wLziOl`U+goZw#Z`8EMA`=pJ_9GiU$j*2xyXcBHRCz7A8W`eVhVT&FCH!&8ZoG z+CDF*-IIpmdZq6&Z=29t7tp#eeh@3IkZSKSs0>^N%i#s&lr{8xse8*uG_zV28yvdOtXu*ZAiom^BI${$5*P!;& zp`Qju(U5o-bo?X(1~#WK4v80a3v$;qvTi~jD7c_Tk3p%L5*9uW3^;={NoPToVr5`j z%9r#Sh&f%ofL_~XzJpL^0~sD*kz@UxfsU>E(<+kms6Fha5_cRUWifKn%_0_5VTO-< zA0qb$`O#fokHVxPr>o`f}xS_=putm{ZH!537$i1>-5+a4W+soiZuhhrUsH_c|h(vnHj7uPIY z72Rkl(-!M$M{ z>Z_{t7nkR<8naJ=Yo5G*8*7K_hieLKtq27OY8o6;!<{X%rB|!ssz-*>-}+C?$*S)& zE8ULrIoi~HLhElaN31ii$Ad9rh#=YHqy!*1W#i!|Q&6g0U9Ef>c=U%CGx`ho52&VF z(#Ci8Z1_ciWy&_OVHO}&Uzf`K9ir!i%HPij=Y><O zbQjAk5Y<^xWs!X&k@on9-q)S;MzpSHc#?tfw(&xhCS7ZdYMH4X@^E+YksFFToOr%+ z)#sznY2Qkm{YhI2l-pa+B z&eN{}yqvWx(OapuR?w62UV{OyGzX8M7vz|kn zJP_*zty%czkwZAt2X;mc1i{R2%ygYvBFBs2$(2B^eI@s?p`WSmUI%n(7I10@8oI0P zGg|}uktJWizIrofaBZDfNXRUbj$5>O;dHRiVzQDJV=OH0yP}%VvS1r|M#~zM)idz} z;{n7VNBZ_Sr```&RcQZqTgOcHUP6tpG};toVe&+>m+nC zQ#(I#qm1^RaXm_l%C1OYU_uMth*QBySB^A)C09YR#P?Fwub-=j=So$5C1iEalCbc@C zA0MDJ_XQ#w9w?!*GF|V;Z><^TWdttBQUxyu1E1d`+e!Q6=8u!p-uZtNYevUbbTp*bqT5ah zSCLDOsN=pH2>Y$F9@yZ2LRXpa9RH7}ZyDS)#B@t72X*Bui1pJhW@ z6x7u$=#Tc>qu@ZuO?yJx%v3kROL$*gkYWYn78Ydg`H)`f0(}JT`V1#!rv?acqQi7; z#q$lh4BVP8T}GgR#hW^d^}=@#V5JI7kFEAhEMHI&s21YUJUf0{;^MUF1cnIuOB2$noOY zFu1$}>JR);Pq;X`LYy`QY$voE^*^2lQv8m!&@+9xL-+92(%R9Vb>HI<(5c+OpHBZV zc}Uql#_5ZqvPjn(lAF9E2Cs7sj;Rd=K;_{3>LwX)I&{Z4S9_*(NEd*(4}}K}BUjKS ze_inQ&nj}(EG?()Pk{U^x~k0{)eI|MMV>UEy*E+d1o%Zh3iPwJL`?=6DlHvwb9wQ* z$~1}bgN4=UxV%tlSA(Y;XWd_@#a`v_M6cDS&333w)P+Gl^YrWH@Fts$373SZc?a4F zRmR0zJ*zSL)2#!uH?>Np-w?ZHhVEbP)LTua@B0Khjaq~c+INu{$ocIyo?(c# zA5dZ#?lGVPdTP3|IR+X}v}3r=5k==OVx4ocl$Ma3eKQrlcaC}9TB~a;ywR%%$`hkc zPZ2lCuN)*Es>^2>nl@Z?z|1xk^Oit9MJDeMkcA<=A^h3ER(~s4y4%Q*=Wrx`rr}Ea zIgkkY-6J=Hms!;9ir$kSUM*{{^LK@zU`=jIZiP6p&zwym;f~MOBRQJU%6dFpkm_x{ zVQ?i{@N&j&xE#d8b_nFxG#cYG56C8;!V+T>Ne5rrQ(N!*@r_{|*FtShH9^FcxJYQr z^}=Zh0)MkGocGzPaeEVTArsJlQhUq|Yk?I|&&+BB1GtVb8f>U}RxP13yCkC)EqV0F&ujB5yK#d=GcFsGRT z%H!(yo(N2hE|%MS(O8zPURo;v2ybF zSEJ$hZ-xxa#JQoRO2M6^J)k+LF<@kQ@Bw}UOuQ)ug zgjofz2j3=azE{}UdNlG2Ke#N z9kJ5CLG`N~rxHaJ!fI2|CC+b|_XYPauNe9+1H~*6yro&41v4p@I2Pg_;6Tkr&+Qu0 zagp}>>T>1gOMhbKAGXfUB8JS4uK@UyV*B0J>buF#Wr6i=AI5(U6F(oLufFHi6&1}a zfuPs)F}zQ<=gA>-2e>%A8a<7inM=%CxlnuC0Zn(EZm%9h*f^AkmpdILxGfAp6KZE6 zn!-haC!M)NVfGSem?M(6!k=vJ#s>j8i}p)^==&*OjqELXjual%2lPB~jw)S7y}Pt* z`W;tF{O!imhQVbW`N*vfy<|E^)Z43Hnf$}}bAgS&A6;7vm;V_4(0X#UpG+|C2xkLb zwxK}f$0ZvWbjDm%W99hPKW#vl*ekEGXP_FSv}4P5Z@_p6CDT+ne_PxO^VAI|pw3O$6Che?I{|B=sCVe@a-E>O=@u z`$;&xk4}hLV>`4BUzEC;>$pTPP;S53<9TF5ZI*#vZP-p8!YzfEsV!fyT`vHEhw4LF zmExu8Er5eV-fu$`#0x?1le23JD?CS$3*~gEAEIp$0rMli4}`P>JJPFs4X+5rWS`RU z#4caxI*dGyChag-X}t)8Ntg0E@je4OGgo_AM}Tg*$+Tf_hZSSq15Vf!Oh;ZkFTDnU zCNDWkR3TY1wXe5^(uUQKA#|Avi>2t*SmGk6so%Xm5iK*XmFKhSnta$+ysLh|>2ey- zlJ39efdCrX$EOQh1FcqClii^t{{39`Fndxr&(CPn(520Vn%|DlSInty;5JteZPX-^TA226cG~ zJC|HwyrUg@#{mk>;EH2E*8uCvtnla-&o8Lg?da%o)TQFOyS6vKgBQwqNAKk6EDi}W zDX;;D^Jcj9;uBhGo~Sj=^d}Ngssv8+hmj$@rICa9Nz{--S#Y7cj$+v`LN)ewTNy$* zFn}4aJ?ywJ9{$v~H2(l#3@yUXUQ_8u{|5l$b>jbg`K3Mv{vww$5TAs$Ce!~&l=Kf^ zg+P5v@zrL)UOruP2=2e(Gyyx3+#W%_{{^sw%&B4UFd)$bHPVNijMBo* zK=DHtm|wjz`b$xUn8|y|<@5)yL-~LT3E)PLhtv9?T{!dQ2c_n-AhzPE0NDQZ(>O8m zzd!NOxq)${M^}fZ@EPHEIDfdW7m$A^+b??JrDLUlsiCYgaK+_RV4IH~VI=Gg7h>U}Fz|Xn!tCKX9Xyb0}Ka(%rSxKM?Wzv=5QRNh)@- z1Zx#O%KZv;s`MW-+8L)q3Hjq@oz3i%&SbH#*qo`sWaTrkfN{>%R`{A1H(-58>JhIj zRI>GwPF*{o+`m}N4#=vz0m2b%Yu7v+7e5ibMw|_e3vH0*3-r|R%`Aj2%?Ya4L29w; zwg0f~G5X2;{Hu~>;Ntiy<5ch0>XYjwhu2VFQU`nbu)=1s7t`$--H0?SQ*RBV?AMM^ zDAr{#p(C?e1O-3s;UQk?YSQc&T0BK~f$^{ad!Yk>cNef=YZ- zDM~_J{`aWr;}mQKp31Rooj8OyR#ER)th)HUWAVxWL*E^5G^tob2(%+2he17HAXz*T z0k0b8_RWDz^EzI+KPHwz?cH}BFnkEl zECorN{PjYu_PqLT`eB-MvvPNRSsfO7db3}cpsWYjx}mUl%Z1c=NF`2Q!SeSnx|Eke zx<}zz`}ZV+0pSK74qox=Oj!2K7?v~HiMQF8~a%2 zafD9pQXFlj$Y&TIRl!f(ylJ2tz^EIa(6$-}DcHqIH zPtbpMZk;VDd9%18x7rr*!)-FijK>eo-;HC0e?n3Tm`dQGSc0Q@UB^1#F24ZK+%VG6vkx#70lVpJVqTB9eq;^K{drV%%*K zWxCuoI>!ex1cB>*3p78F0@TDANL0jJvptedlKpE(9W6-IRYu>l`r|FK{_A(P*OR!K4k-}Lj@wHbWfH5xSNj@tW?*h?vc;TJ zu`SnyjMqI~A-$@Fx6T14$l33Swk9NwTTd4bhXynxS98hoDx_O9ve0=32x@&SNvPL(B zfMV0}H?I1yuV^5qPvzysYks?&#lW^u<9+fC`-!9FtNr8f12#Xlq`9MjP^Y`%Yn_$q z6=tSo9r)nhSN6xbCoTLHv6Bm7bli~-1 z#d~Jy{$7ZT>jj9_>Z=pAvi;<_3h@2o;Ojd#>5l+qJ-7(`^;N`X<$Y7FJa_E z_!Z^|m!}VGLmCSqGIavi=|CF5X-tU@^3(C18wjE4LFN#GzV^xl)_=Zv{TEF~aw?+x zmh$?(a6f03*SFqKiiKK^!k2;1#U%*wSB{%lZ(gm(a=$;!S|z zp-U8)_%AJBZH62$iD<`h^s~VFoDIg;Cr7cOFWTZef2QV;i8T{mo|c=@$6a8;T_k)x9Sd zr1C8J7N7P4@Uli{JXO~*xxn>Nxo?(5&U>D*cnsxAcGR#}HXaZ!GGw36!LBTc)59C& zP*$^A`4hrnAF%&Y|Lf8a&Ed=%U=I@uD4Y@}MdBlSTlyo$JA&DK&v(s$*7aHX;gE}V z0=j3;T*vcg4oKW~Fz4JtOSWnM-0;}jr=# z4TKC`I4qNbK}bOxC*42-i0!YK^3wu@8N1m}tKaH}Hx^UQ%MY*n7pqQyg51m~jj^8y z6rWr|ljO*cAIE<#?bk^*9*C(TexErLD!G~eIZ@Wtd1v*dkZIP8IGKcq!J`Og0l}Qe zpgv+FGE9Ln93ZR}qQ80s5#iyaX!7udtcwj}oLMFd$f>5f&SFNp2QuGPCUu19ocTqG zor z!J);5 z<)+1~;%_~i7s2#;W~P@(nHmCK{%v(Qc;ev zd+4GsG7Hyb&qzO_lh+kD7|ftItEzCSP2k{jmd@Cfq5pl=3L7zGOGw)aBdV^73(p8a5JNoM6)kt4Uc!&X+ok1{noo}pyW_#4#h zfe?o?ZM(E*TGtUJHELrkjWi&kq>9FPOfMhMJ4V6XMrK{F(M2M__WCaSLb@n9orZTW zKvn6Vjl9Y<>oe=P`D6;vlOo?=Z6^X+PM?!Qvpyyl4^wBE1QeoGPBu<)QJ+6t%mZIe zGZALJcw~V!jlNXv-Q(+Qp~u~<-^HY!f-_p-eQ=-2UAT|@O#6Of@@eyo_nNpWFFRFv z;FDuZ(fh~o-7n`~Uf=uTPT}xW776Y65a@e#9lOR$islj;Mbr0TX(Bpy%Dc9&f2BGM zp+qwWx?fdPO(1B#0H!pM-acr5_!nUHL<9n&Gxwely}5(*>?S?-6%71%k?7_qChHY3 zn$`Ids;Aca7=j?hf!dC1x$eU%&jwp74|E4j(6^>6aeJsHj{yctI@2wP967mk6U)?Z z60zip7uu5dW6Yx!|!_41Prt_Nv zpwdTapZbfdPmh`EXSczivlFM1C38Z3p`b&ujJG;$ViZD@i>dAuA$Eh;-ZL}cR&u;JJo8ez>od=ARhO?k@LQT-?=C>%pmy2za1b6H{ zs7$xMM~k53ve^5Nn!|X6{v1JCHQOcckuh=zz4ctpQ$nS133eier*vz|;vLx!BY)ID z4p&2a{`%Zi7MAzW=8MDm(w}ut#p-NfW*eY`mCk=$_)G;c^P2$XbjRijBex1&B{GKC z;{Gq{-a0DEc>niBkrDv`2}zL>5b2IVr6fd`^`UMhLRUcpT)EJ>5B(_ zd~WD8Bj!PONwtaQJk%rM7XRjq7IesSRf2%rE)VAJUS}hHcv0|Sj1SpOC7DBlh||KJ z#8+jYBv~dyK}{CR186wyH37W<0Ql1O=G$6BeX@xaec35O#Lr@J->_Ofz|-#@EVHq; z;tX{eux&`CZTIltg;Vv0q4R!ncg{K}hH(Qy%(R_O)aMyff@iTniVa$HLMD1?N$vdF zNLJmcv7vt^H4XW_Ldu>(&bka|GMtYVvq4-!o3kT2zY=Q_I9ir=wpB%#0D)fUYlKnL zVg6D2F_en*$)$N{-iKh+ySJzYeT#3J32(mNeioaKX36Bdd(#-d;)5n(gILO=`v4l? zk3JPF*5glm{1pH5skPS>V{^ok@pd_*w^4OY4lutiPb4pVUw9bcl4k})<$uag0+dzY+M=9fcLk14NK9Y-;(S8>PCk|^a^ZTr>s=i#mDBg&&lUl2b}VYnZ||=52iNh* z+Akg+!CnAnJyTt?GHNI_bbD7o_WII6nfJl1a{h&79>Y$@Z#OhKlzBLebT0w{ig|*# z-m4ylQ_*iWjuvXSYV>#+8ews}TnR1``3ZC#=87=~Cgl|yDDVLo(V0=pW( zd@vFpdhulz_+(0}*7J3O4cu>kKP{xhtALivy8@Mg#o44}d23;VWJ#~)yWw?~M|pOR z4Rxe2tnQ-Eht|}501?$&)dzR(ZA=wNjreT!XV+FTA_wRxnkQ;2Vfg~6P*82-`m!@T z1u@QT|Jyt}!_$FGuD4n2%P@%}Ot6=v|D}X50rGv>O}S-I?Ze&C$-sh$3TmOsmCFd)KF>aS82j4jGfm310Z5pW7=SC80(0I=!Jb9yCU953lrI}kW z`6?v#Ii=K*ZmhHvEAHi|skj30GLJ!eTkvH2oZO+;8SA@LrA1Y(6(cw19u&n&0exEV zF_eM@N5k$8KF3419?vGRE4DP?IF}g@*nqJc3(;|xsiaVd=+0(2v?Vqy+&kXasjdOa&HO?;XomEsJ z|Df$QUh--$4)AA}E-N0r*hzW({xv0XE`;(hnY%oL6rAjku9Nv5qptfI!*3w;?qoCelnl(NP8&QhsCh)MZZcSnSJAgZy7|OrqOlb{6^?#&6W%HB<*!oA|GNp z=z-O1D~g+!1X*W^@oj&UaPKnOY(keGe8K;4Gu#wA^#U93dj~NQmGw`C?Th!!3#z9T zmFNOrGNfi1+Ot_Q94A4MtLHR1G@@HY+Nut~of(+W0@}kKgI@r$l^~gcH02HQ2ET#> zQgwQdX}O##{&xw$1_%F1-PQZ3+!Wnv@D4`oTBZ>ifp`f91m7>o+QIXt&M^n8vm3NI|qbVKb{ zK|ZN*AC^_`^!+Kvd*`Gz7sx0c1*Wz5YEAKE>zWN@>5+WiGUUCHj-juQo!_r=rq>od z>jj8}+Sf2OLN%fVn(tBaH)0h~R(d50wN7RB`hj2AV6ZB6oLM}9^2}1R+^%o{yjQq? zGneXh)PreWR4kW}vO(sgdumt6<;Hi*M_Y|Ir))5#u|~Y;&DUC|JXlIc${5U9_1`gP zhpIBuX@X|LBY~&hcNMq$N(`Y+`eAp}v;(G2v24n_%vpk?Kge@9UlkA`$-$6jFAYS7 z-(f8WxVYUP~7AH8zE zn5w6Er*i4@Ga)0%H22ml6{*IBxuWrfL6CvX4Y97Go0B$J-EfQ39+XW?_mZ#Z+Mn6z zaYmwF55InVOD8bqM+Y7h2=$vbaS2BenKhm|_ zAeQF?sG%b%pyq0NR@aSr-fgR-2+F?1gC%{^#KYSV4Rv~g13BWRQ;W(QVQc6=E8vxo zF%ij|Ews1j_1o=$y&5VaQ`O}*Fj;cJAeLr_>}s#2&IcN}(vGNbDW?=@nsqiiFGotE zbi#k#{*X^x9%XtOp<|G!|J`xRPrt354vE7nFdXWga%%2#R6QS@jZEfuQXLo zJ-rrruY!H^(3UuE)VZ4Q@gN2(9)sSqz_yeT!xFclgPK;$4r4&*Lw2C4RsO^@@Jxw_ zW(4xjw}Ik4kz{b;3J(@TgC}8d;;jKel=~vS{kN}>yc>@q#Qpql-~L%+R~mY8Fk?jJ zb`<~gixOfct*q%|q`6eawx5USqpig%W)uS#*?lse&?l(jw$&7%16WX9vzK5|EWzP{#-|W+D3&d&2oO2QH^$tIZ`a1a&r&agq;ol z=F*ilR#G$Clo9hBjhg&%*Yy!sGHv_Dx8fYLITuzGJ-=MO8Ou?0{7NqXj^;;Q-Q$r; zN(dZY>GmFIV9*(aMyKR_KG*@!Xa!f){P8SEhv6)P=ci64A-@kxi{U5AV+5sfNLx6S zO8q;>uMaGBUYwJZ+%0p`CV-JZvQS$jSE)aQD^?R><^>A7dk*$nKu^DX(VPb~6_d=`~m&tG&^R6;KTYZ=@l*{!+6J|+7IHh)v62hF*t4i^ z=F>NT;|4nAMKgLZ&ZNH9uvZ&-wmVo6zKTok>@;AZLv5#VvHw&k-l^^)E3%hROV({pzv*rC0+GQTB zy~adoAyzpx)M;(k7hZgMB%wWAm*gjIrLbMdMF*~y@3OVrCA>4DvyDzDtN!p%%G0cJ zpX@E|w7oLA6TH#6IFr0=TT+RZH=wIRxdIjO%paQ=wY%;4ysD=?59XWZ9!=^&o|JjT z>*O5rmt&xAsT>y5$CA%t-OZv)+lxIm$rKr@qUf3eED^h_7p3QB z%<@VPH78i*qkMN2uSte=$YafQVjkLsaMe6}NO6&JB#pNhuGot6+=YFw7~j_$N{@|I zVZsGza}nvSG13WM%8Y|ObO!tPq?)5h1m_9!(UEbv)U$sHW44%$3MSNwvEa(cN^h>^ z*k4#$00T<{aJfhYpJcS865FonpPgSmp!goQ>7Bd_31kQ(PtS63iIy)>gV&20LE1`X zX>Z?Dr7H4Px;Ip;Yz-NuDX<*LKn{;DW6>bGseIF3_b_ag8Qs2FTg))hXKGg{c>V+)Yb(u z;v8}sdfLPFQRibvHR{i-{^7XS%U_OEDK;2Ry7GLA!9O+O=Xxi%&z$CoiO!X$+VucD zRQx-TEp)lgf^>?Ppu8Q_}sLbY_-yNx0vXV1Ha`E1`{?!=lCT7H-jts zE}Gp}2G+#hrP`HBsaiog%i3|eEZDB7=Y^6h-{bWJP{0Jmp842uoWgB-h@UqZGly_FV13n&yMVV-ZJVg+co4$^j*95CUNf)&0 zJqH*zePVXy2mGc6ZZfIWmre1oojKRsEqYq-`h3f*S!>e>GEVlI?>JZLA#+B_j~9+n z#muDyK*gxNIBMZjVeta8e(?a`3Rx;f^Lpm>?Cp;(&BZ839q_7M%VUlqScASpgBS!S z&F26`s6zSpHsMQYbV?l)j=49AywqmoH2HfMoH>qd*fV)>ZFHi&x5%>36K3A1*k zcrGg~6_L&FKFgeStD{vOYH-2v$o!jef47r?i5MgR@5+ZyzX0wV zT=)6GqY&{NvmbD1+6E-P!UKo}U3l6v$<}Y*@&RubPhs`$@Zb+F1p`)RZk)?1#Yvrc>y7 zpoPVCLq>QjvgM>;KOH`WsE!YUr$8~c`V#1k(Co#A`x(NQ(rn|qc1ylDu|7L?+Xsz9 zyNM4MrH!eb-k{c=F{jg&fo=vqtM)ZVYDIdwA^oPJq}8L1n#K02<=QgW28t2g zYLMv94`R`(&L)GF%>A+kzbro&8m$(7IGV;9QcCdr)VghL@gn#LzJsb2*(KpaViPRK zRK-)r0Yy#~VZirmd3->E2L|3E8QvhdRJ^d6)$|#Tg^{$gG`v0QZ6{#I+c3HDG+S3% zYqPG8w?G;*T|4HbTs%>QM+J5%;QG2M)JZ>sT}jA`KkP1on?UiN0&>zzt9+rvu;nyH z*yKH8V7s_YYTk)^7;b=HT;h7}hZ13U?BqRNe`PXB1IpU{m|R0zRl;@azTAfIOchx! z^B~%z!p*UDec;K}EU7nAVhzRE;2-gDzd(FrY|$akk*_??zA(Ex{|=)&*$~Z0c5|$h zb4}p!ek>YSn?kz`Hvpkxu9&XMlRHRTeY zg4nmA>fW0lOiMhBqHC+tbeRnM{h|)p&}OvbBj9GS^(ptX7|{I4J8Ut&WqNckDO|Pd zRs8LT%Zu9)p+24dauX#du>+ zQ|e(5zjbIMrODk$LjI=_*AA!TQ=Nfl9Pa+AOva!ZS%)$>CntKUTM{42SB_0 zj-Ay`Jwdc)B46i!w;4E6E_gV_R7Wp8_nuSG?C%UJSJ12b7}koId{%Qh{wWvS(J@}X zz^igV)PLJ0xXwV!s@7IkBotFp?#DR)P&O#XKPC1@&xJAp#t?L`+5-Gf7je^v9QMn`5fH_FPv@Yu>Zy!7G)r>i{p1WsD&;g&bC)j{UFS?>8 z?=^}~Gad=_vLkom4=XClkCv&Ry3>+FjEB(KLlHdDEB(OB5ro2HpeFz(88TUu7Egf+ z&N#YW;y$9vl)!;^2Uk>3Fn!>@Nqp5#AiT6awOxPC<+JWfh25W5th+3GLr#6->jX#` zl<6**NIZ<1fUVnPm`ANDKavLH5t4p0joI-99sx$&anGojunel>i;9aXVF%r()oS09 zt5Me?nKF@Cj!z0A(;o%}#?W2sgn$KMY>K#Jo@qv5R=Uwe@Gga-xY$cIza`%7Yqd~o zi7DXz84WlB)IzlXWai5GI=r(9%l<{=NxYN(;zait5DVo3CLm?B0RCec+<|LAFPQx( zFXK@9bS$d-`#()W((YN5P3`9Ya`$|Eh-+5eC>z1v-VMn(OvpT9~F{eS)Y z1h3*<2lBz=o}=MD(b&T)^8K9hN}B6}{uO47+9cuDF*@fWK<^!51G z33B4IDz^W_6ojMlAI_hDn1Xog3grfp|HJqrd35CLVO1}=^`b_-UfuZUbMj4~b6lxp z`}ALJI+FG0bne)@1&y(@h@vM5ehiqW@%)E+=%}O!#1WLsekYpoFd9@(W7tg`RRN_` zUjUVG0D_>^BPf6P4NMX>^5Y?sk}(Pfly@HY-o@)3xs*+AlDLW81OQ>Ax_Pyf5suXL`uk<#A0qM#z@f zbS;AGe46f+zMyv;qxsl(5dNYydUC|>vGiNSv<#Hkw*EX&TYP|zFtB)s4sZ*(caNcO z{^(@90hClLMRF1`kn*C)9=~Q|F?!GyeaXJm0W1Oq@!T2jG(%b;jncu|)2m@6?1@7} zh?7c3P3~K93RE!X)JlwB2hh!7oH~Z!w@9H{Ptm|BlQv2l!eFyL(887YE)AIwCZWWi>GS!tVse7T!t zF9itjUfueD%b)lgV+-05QU^~>P4$yQE;?(ftJRI+8r}+8pb7%?{9Hl~7;xGw#!_W( z;$r+loMPA3Az+0%=90>l891$=?=l4m%7dn&BLE&^g0eOI6;;Y)PWIbOPfTZK2bno) zmX(+qa7eUk+bhhLSJDnm$(lbR?gM1d`?ZiLR2XPQ?YL|F#g_z)LC^yY`?Q;wOEdu7 zF=r$DJaauOef6I4$R}kW?enrkc1aY0m77~_dO%c(aZD?tJ}aioAM>&^`dKjMSS~!p zur$xM`3$*r8Ulmfvh5(kkOwuuYwrXu@p`v_6)>6o2+yq+ZRoMb4bp#(T$(J3a(`5> z6b)pIfhe3CLD<&I&hJSa$!abR1Xe~EGNZT1ZF~CWFm|FZ`PHHVz}y)w`}6Jtp)AY= zy*zvt8Ljw!{?KzmsEt$tit1!98Gg5Q{~Mec21gnz4Pg2+R0_J~N|U12uhfwgS-)=u zKaHlwb<`XhQ-6e%U%&zWZscr>@xkoKn7XKhwotFC7w=qQ>B<4d#uJ@LAG5w~t8D{e zDtWW@C=cAdNKG;bvc!4wD}3Nq=1h9^Z(1#k#Yp`s67lC<4nv0fw2~YqPP>lD`i#5z z0);VuDXD@uk19c~sYt4?E%q$u3pbHc)WvNe@puQJOn07z1f+MW=qO;avj4slh?z?i zeaGxB=bhdcgYF*JCp0h55Xk8oRX;q`q>=B{2_*`0=2;%QPS`}g^{=_vF!FioIc1D5 zo!nzl8iO)D`&;J$dBxaTFeTmxhY?0blWs5;-%kfu4xjeG7fz2ZdZe;<7QxXaD0E}Ae?rmxQorniC#;_gg@wCCm43 zQI&A1bRcF!%l|VrlvqSBw7wr$VL1O*gdh;T z9%HPmxsPMD@J;DGqsTs4w@GKTzjB;5z)KexA+0pnLkWV-pj9HlB0Le7e zV~;M)koy}NOY+C8h3vpZ^vrN3`1S5F$?mRjG8>!!1DBT2hKjMTx0Bsl&ze3q*d|>2 zYJkW<;jtnzGb)|aa159j?s);Gom+oRJI9q>^VbF*jNUfS^K@H?mLt=V(%yU-513Z2 zE@Cqrd~iKZTQm&v!l@l$lg2qKc5p0ec;%$hs;=ae2t}`g65NKxdiK*7T-QOzkV_tp zC6AH0Otv@;M^&!GT9jjq;YT-0E&RXTUf$<-A@68QUlwBQKf2(5dUWO{Aq7*z9>MY} zxMhD>vkcDmKl%VoI?}V>ufzzMWDDbWj@R(nG%c8P6LP4F1XhqSj@+P5Q`DvT!|8N= zag8vSl!h05*ZnYFpXE&UM(U%eb;SFRQ;ZEzyS}4u!Gf zB4WKE0gNc*xeM-QG{*toQvfKffE)`Zz0On6gX&%E8zC?d5viE0`eFvRPvX8+Y&j?&9X|&y~l}k;G7k!g=^%M1F#g(Rf}mgVg$4g@inF1Z+v0ZojR|KZ9Z4uv$u!X0R779$4Cje2s@&2Ja%{!P-`z}0Oj!RqSJ{dbw0VQ)G57mA*+CAJ z^8$(+?AZUFS!VEmPJwncQ1ko#=UfeqL+2A_T~O{6O)UBI@~V(TWC;m+cQNU_6^*QA zWIA;tq{=Zm+Ao+gKAu)XlipZ{wB3J)kpD!vsrQQOWaPM~Bjm*9`4AgU(|gclL-p0S-mZT|At#`F z6~Q_|WB8kNA{2si(Oif7U;e49Q2>VfJdVE$-)&Xr-E(IU88&D;{br8x7`&GlY~9o6 zVhMOeiM3Gk+s)2e{wE2HUB{YdLYy1!F&5dz=RK8NRQ_wv*3k#GH>W^h(Z4~{LJ5~qHWt#J*?gK+1OEJGo(Nhv%;h53Mk|l%58MZAxY683Dia6?gW;- z4O@5fY# zel<#;JS*<75H30vq-PZ$mva6xgUtRdP{)(&In2QDcp+Rp&%W?)K5-7@6EQ$gbR67U zUKrJo6Xjl?8Q#=c6z3%pD}Zj>MM!LAo%z$D;cp>~wWV`0%Gr12=no!`s1w{C0jl}q} z-*v_+S(WV*-(LFkjkn=($sUGaO!QlZHs&ZB5_$+rpuM)v*a9jWn(G|AtwXdy7gG#Ja7Mg_1ssi+S9`@V>0# zy|zblKWYqOIko`|O^>Xd{nBFNa}(LF)vP8%B*UPa*cfX!8Lo~4YP7SMy#m~be*0|) zT4rjLH_hLSTbuH%W8tVX={09}@o-^>aN>+Ed%Be=g@<=xR>>VCm-!{juZf@wU?<%8%)r`C+{aLh?|9^p5C|(su194(;U5cdUY0?%>F!YE?z<+F z_Z#iGN>VEtG3~A^T^@V2wE6-Fgp>K!_fry?_SKF{g&Z?c7N_m&j&XyLt0Ce+XBx+?;buxwHJo!5;8Ko{<+QG<9X;n3C!-WG(R$R{CYqZ_;1#eDaN36#UdyO zwL;Q;RpJy*xCgqry6BPC9+o;c90rMTKWn>HGiy^DCG}U%{%nDTpFR4mD;>e}O_R&lG}1b;sO5NKhd``C8tgTN(;LWl2~<&KW4J;`*?{Q9U=wo*-1fZUtS z92kHQCtozLkStUq4(7q%%Kj8{Lcpk#D6szU)mSn$U_j;trdXlMsHJ`&s^_U8Q_0|V}NMG^C;?ZAQd}H$ECDo1!I6XR40Mw-d{S8&S|IF;= zs2~A?B?gy%17h!wvOVwIlWS!j>s|V&+NH(r%07DL#qC}V8ybwtXO5mKy!Kw?gSpE7 z3ixMmNe`22%oLs%kxdEO3h)npRwtTyKyD9o3~FqiL=krtUglT<9hELv-&Qq3MwwiV zvQ|uE9sPO_tkihw1r|Bb43!B39wlHh@KJbt zN-*x;GCVhXnL-X~(JyPsE2gXMFYyMWFTu>uT~SY)b|NqFQuLIKhSb&eQ>UhiwBA#e zP+{$IzBkf%?A!RnXxmh}pg~w)A`K8`v<>x#7(D&?EoLePWzWZiVxXlIey*Y=9Fp*p zJDSBaO_jMxOcqmb(W4tdi)nO>2CGm$PP(IILKDixfU%!*@@SK{4BF5-nCe1kF0d>R<91Ict_Ok0u?H zw1-vSN;=-pHUZZ)FN2DV@$Cp58*P7m`4K@CVlXoi_Q_&vsDkN%E1mcVP4UV$A-y@{ zbXO8)kq1~Vvj0IwZ%+VIt86HP((t8&e|(NS2DN`en^wQltoQ@B!0`kfU-TprLVcf# zUG3Du%#&e^Mk1K?0<0UD#fmd2SG*z6c^iy-pwFvWu8~S#;#JjZkW$b{BTXB4Gl40f zOvyekCP5S`tnR#Ace}XnZN+hKfrDUpwFy+>^HVtf2~RsI+K3dqf7wnYh=Lp&Y!uve zIyGK4a$?^rUJK%Nbz|j`5y{q_;Uo15kmUGCR4o3XSLjvuQ@hZG%4owhj2mIsuPNm3 z35AA#xXI=baN1+%U6~XTcJItsB;NC(NHZ%;lo-YXy!IPjgVm%jSC7_?M|c>~o$UG= z{Af%1ez-t0&HkDp2XL<-&V?w&(fa~Xr`CQDm!|7tSJLBE}JI-Jo%8zn#MW!VY zK55FL6Mg&Pa0FqEOe;nwo3uc8peHi(bogtMQ|Myq&&K_)23@ZK@@)+`!4A&y1Y`fKHb+#@~Kdn+CBdF4tBa}k*0ykFM8P0gst!0Z`mea2cvXz#WIEMV49X*{o^`brN7*DE&avihFU#VSzT5{Rbd-cX6;j)r zRBo-Z;Hlh4i0{zyQdC)ya)ziM!h6fGF7Y=v1d_H&CKEyn8fNq14`m5M8 zajoXxd8590rWq&4k>@#RNiIt~xtH7{xQ_EvI0^k#BoY51@ZeW77rqGLEN z;k5?a=iYNex{iU{j2gRMO!uUJXeoOhR(V*}#0nWl#r>r6&^Ym!Vaqr*A<0LrfPt#$ z#JcRmC-|GfU7eaf#&Qb4#|&WkZm%=Gr6!(Y)DzhqhF^{9AYY4}qmfsxeN=6I`-}*b zM?Dzrdp5qOmw9@8UUNIJKIDmTLhU}J4fPhgOvxQNO3A9@iX5jDBZM)+Me^3<73tYg zOe`J)Zs*;L$A~^o0#~Dn!mifEi`jJ~;}(+%iAr%sb8GdSuh7H-p-FmPEuDvr#rp7f z+Xr1^x^NR2-5cRxqDR@v2qNNcliLv-K8CY?0OW)(&4^vs1^5k0bY@G_N#Ly^OMMkXVR$5^@9O`6&b?1 zrin}C(uibQZfefBAFpGEYf--tUx6}n)PQh5i~$~S6tjVdSkS8guR*-t5O<1BqX|dj zj=;FhobYva@XQq1&4WRB$97PeE}Xt;3cP8uO@8RiSD?Fk>O8(1c+rfu zFwt5-qIf2D;tTvY19r-W)ZWxPaGi}~pZUG#;(I-JKg>7mgscW?DbXGX$8@$=t)gxcb^o;SG8r@Kf{9Dv??6qfk_ohM-V z&;adi_Sk)a;tQb#f;y#T7?HlWrk;e&>n$^1iphqNqS^UvHXX7t9M|`%W*kL5^DV`d=-ki-T z=QXbiKut}7uxOtoO@mGtT@x6<6FDgTh;*48^Wwb$LjdV=M zzHK(1QM}`alIr82gF7E?n|3mO(ak$~ccbf~*8TR<4@9l&#Bv^~#TuV~&Ku;5(~VA( z7S+ZPFtpY0#t-O1S$|%U+ViE4(fGpO_y3%l+|=ZroES(^Tt7%Yw9<mIv; z#ALXs*A?jW{yrz}?&XGz zo4Fzt;7I7hX`cN;aU2jj-eM00%YoW<^^&p8u*pYR}>2a0d@%wOC>#c-`x{T`5HpoNpc_%(u@=bsC>#Bh3 z=U}`-`i*Qc^6X#Ls}0D;5@&eL&dRafzR{IxN&OKo1MKiM3~3!2d;^JHY7~uznB{J- zl3&Sd8O{INO}3AJSAD-HXY=kLw7CxrMaJwu0i#nQD4eSZsVQgrV{R$)sn z;uyyxcRRGIAVDsVjyptrO7$gzr1>H~ss!jXCkf9%AA>>yrcLZKUQ@jM`=E{d#j>Bc zk^gVY#MHU|AIrp0&>bVZEUm85%xS__k*!a+ABMMbh0n9tkx|eVedsO$m?2r<@?O4jEFqooiTfGZ)8WFZQ;Xq?E5EwLKN!m z2>y_r&DIR_8% z4@fQwzs1&Ib-)QvtnKrmujL05sqp;Xc;0E|`K3cPARwRm*k3~)%Gmd?*o?|-W&E>1 z5}#us+ocsVc(vL}qa)i7i*5FTUeFw?@TOSG=idDw&y%-`n!7~uiB!dfw`n~$NM4Nq;_<1*=)0{EY%vaRRugI9FdiJvr>ys%j zH-s@a?3R?UtnaW=>8b|s(zruZZ19b!a132rR z+?ePBeep()6R*t^)L5PyX^|ueZMEh-=Re~fp`vb|6df78g@U5auX5hwlKA^*-th3k zlirhHgPPEeKfn6BoAKj^Vb8Nbb9ay#lCHwkTI4&@0m<{qgAAm@&?Usx?g%tjKAjD3 ze^NcJzt@$vj9*Q*lyD=4ND7?cL%>p!1uv9u3;05H=l6@@OIs47+8&~hvJ})>=krw! zI}P^sQs^NgUA6|$Nu$b_CKVdN-b8G8eO$!I?2B+h*AvZ)?kmF8Y_uu(a)a@1r&6RhSspT1$XLe^{tj()PBU z_iD=hqrF1bqqRYbv3x&lvBOWpu0ODNAC)Ig;-Q697Z7jT?ns-x*Q?9Z%=B|idaS4Z z24cdF0)1UjJS1MKX^JKm-#HBN_elBE~|}Xr6&5?`ea4~Y( z!pZ$og_3;ddj6yz@nCy!TkU-BKh^ba{6S{A8rtgx$y7qv*sUSBZA`f)jJtu^itL!c3S5hp5Q< z))#8+IA$GgK_PpMM+4fL56ZQjpbjKr4p2|m4k<_E|d0(l71vJq8}?eY4~qt660a_4*9sc@Y125bYI!c5VX^Msg}?W`F&} z`{-SKOhR3PDZjI3{CbUED_QmQ#d4L28b9|i`4!^#3+PZT&!V$ymk_lH-I@K1f-Y}! z2t;D5!TV(G>iJc$%$=tz5gpR^;%!|re{F2MggY|$UHZp!ReZ-WT4>dXzDR#KG?9A3JQw%+2RZcOyR}wmQoA}!(-WU5@9NB(S%A{l$5#TVTXZ-Du zZN+#`{h*z%KwHRESPmaDsXTXc!qAJjc+%rvFEOu$?C1jQ!kJ!UJ-wROur`sDrW z8a2U96qJOrSI7(e(EAmrWsl0wOcYv<*jTGv%_KF!@~&AOH8@YscrT2dYbQyqwWw(J zv_kSWn_kRt)LI2tB_VEPBw=@!vd@i#?yP(SvdE60ce?u0l3$M&W+|DFPi*kbtU4)Z?%_!HV)!)A@ZBKO()2EDgJ@Vk{5~d|(?;I|y_2qdoK5 z{Q94|22_=#=C2=jxZF>cik=bP8sRNM329G)3>)rPuDB?Zyyc`{n}Yap{lvHbG4V9o z_5fxybYP$WdE;g#TXdT#n)B-Gne2w{hhSth~!P-lLW&))9V8oOu9EsJzGg~AVQ{;m*0AFZT)P}n!k$RH@7_+kZ(wAXCLW=7@cQkq8Zvwv8<@$2s}Ve*uU{q@*pON z0{)s|2`jwIL$eHb1lZd=T=IO@LG1EZg=?3X#DKu7@6B7N5z9h`q19>$Vyxa8D^>4A zy0=FI2UGpErkWms_a-Wx17s%^2-p5d&Gygh?1%Z{j)^Q>rA#$AL#JX_XC-o&6iED3 zDU%YOal5>4{8LBIqr9;r0P%OhP>YrdijL5oQ%UR-@mH`?kzldu_#4}0T z-lQBW1REy7#o@W#?a+?nk*Njg`&uUct%m+2@{@5_^~nQHSBl19aNEwW^6JM1dimS# z=cU^w$}{K*9ZN?&t>A%M<+NzCtFOrt;BmD~pC~ddNFVWhYVV2{{ihba8Xw0*I`>)S zUpH!2#fm6AXNQYX+_B@)`)tWXdlVTUTY(5NW2(%y+&j|6g|=85Be4BTS=3dxq1f_= zGgnxCGi_K2dgwERVN|a|+?mR8qk|yA^4BS2yR=qxi`0=#XWTDwOMxpjATh9FJ_JW< zA(;iqhtt5=)_BhG0!r)mHggnwR~6_Qd(tUA)b}23YN*^Nrvah^eU!wFmHSO zO(fzm?JUWGmo9GS+s?>GmZM!}@dNp0p!pFh)|xu)HyWq50`mTr#1~Xk=&wrX5Sg43 zy+T}5(HRI;HSZvNh0RPlHKkLL+1x>!YC1;G_$-KwR5-0dT~*BhZ2I=l6n`&?fg~=h z`K9m{*v4duJ|Hrd;DB8;0doI_q8WZ&7~$l68Z`S~osx zmTm(AA4B!osrY^TjY^xhYDeu_p?(Ot{@__m=$-qqpwLO|mKvShoLB|ANn3VwziGVZdAB z4|=%}cx%Fxi%AZ#w)6+Rhfp;3vu>mFQp9UK)Isk24oml+G2plARubD)Fj^b?E)k@D znj%Ru35C$l8C8fjGz_B^;*)wCr`x!qOhK?+QU$yBW+)MQG>5uJo|0x`SLe*~CF?`E zYRGu+F=(7`as4J+d}N+8Y$ueEQ|s}I7QMo)S9ZHLkVQ6+g2MGm3A$O4yTk`EE<-(H zi;NcP?a(UJP2`e~q6y>kLV8ZsCc&Rw%SB4EQ!A{NzQ10%b2r|(#mOuz z)*R41(Q&yrST^?nDY7n>>IJuG;D&$|h!`J*?u@^%!zy9iMtomf-&VfD=E=V`?y7~P zt#X#Y5>jS(=UXCqv6?)JdcSyj_2Y|=a^s%{#@_dkgkHW-Cw38|mb4#eRNU*lnkH@H zP|}kH-YnEvDB-F(wUYDLBNJo4cOO;02pge>XB{UVfyHm%kxByGd1VTt_0 zJ6(`v@iX+&2$gE12ddS=ybO0 zyE>t&Xc}qUT)W;$3l~}@YOUBJ*HVtNPJ2ba#Uq3sFrR-ujJD_=dRc^We1vpq*1mOG zhhOkbv4u!sM)s|X!WgbPQGv|Eu0*xfKDyp7lXA=Svm1OJSS;xOVu zDX@^!Z`~%Z{U;d`UP;yvKjGQ1^qyU@CuPo5Vdn*3Aw?q3+l3MpUE{Km`}Y7tx{o!s z-Bm{jc6|^uhyLOGK10en*kY4}MAU_rvUo;U$_725+}%s{s=j$wsj!Q?)wlfp zV8X>%oGJpjU-N`vB}f<8VlyPEm&ZAfh)c!-{43UOrcNdkr?!ZX`nlR~zp6S%EfzPb zio}%>aK_I#DW8Ufm!?Xs!k!G8xTX0eO}N4(#Lo?@5!+t!Id;@vG!bqaBV7aiR`_{2 zZ-x!Hy-i(raXWSymxO=NwEHv|53OaVop+=N4-}zV&xjl>JmR@Rcgm0jvXejU7ZR73 z4ZSz`cuRhId7)IK(4m)$2T1F|P>-3SG264L5CWJ$^_!eY3n}$qr4LA{HX=G}f8Jr| zb`3+QJ7{Ke6_Tnid|Rk1$&q|ay5V;EEvVG?!7$lJKa%ifR~q_B`f1wPm>UJJ!c03a zs9zFCW9D=n@Je8fezOks?X*%CM3$hJ@D)|A^q^7gL6RZ5WhsQo!{2{ngSN{q`wxUD zL_3)0Nk+am=c~*21~F1Bzuq|HmG{DQ|2fXdyR-c;H8A$rpoVmFWa=rH9cV_Dvn;%M zQ~&7#7#Tci6gy$3a)C*J*VooK+`{ja5Yvlq`hR_U_{D3*k(-i?|MkFO^)l$9P!Z?xCDR#%J0JO) z$J?MlCPzsNZJOI(o;_;%#K>i%=k~@`g-8iF4{EVsz|tTs_>_{HBi_OA+c=?y=5z4E zYhtXG{tPq&c*(xe`r;l(k0W>}jiOhm!!ynREqvpwg0sCyTvpt}=23F{7kFB1oA`bL zy;X1DoPDj6D);}z)LX|z^+jFdA`+5Vm zG}7JOE!`8p`99C*{k`wMGxyHD_sl)#?7i07Yh%n+rQ~o~%ut zJ4f*s5q%PEp$*UmW^u;7tcuYH&rXtynPhR^B^{U-E@&6FJsPiQ!h`%m^o;xYgRdrj zNm3H0Q#l9y@3;Fk88i^Dqwuc({#tY@=z$;%IyBvSM_BFYj-&LO!B{k^2!~jE7FiQ0 zjKGT6^F8XXDDY-;Eq^7}CBA0G%QVP=?5uS8O&VjT6jT(|lT)g^G|oep=i9~Gk>k~a z!az0oo!OY1KmCbrX%~R}8tq7X^=;DPvZJI%5GuKmgzoV*RwWu0n(;LA!LiD%cytn? z@ayj7#OZyYNK6^ZWPQ9CA;KS(B%uq0DQ}KjQa8fpVz!#`zT+LH|kCDSjhg7=Jtgd#aySa|h19)%YWRYC;wsjDd zBlbgMeOJ!eWBVCugxI=Uer9Wx*%hfuJX??4vfC@|BmJU1{e96Wg6v&v<{!yzqXMggMaI3yR{m1ix4#R(Rpq0qtv`I;J>BvDY6+W&l!r;%!g7q$bb3q_tN>8Ifc`Jc}x}x zRwUem)m?9!QI-n;cH4m%TP0-TE-YIrgsp91D2#O!yQ2^}skFNz_!Zb(% zIlfHaHql~(5mHsH-3*+4s0#QL9(l0cQw?@` zUD;GuIwLXliAvKU+>s_Mfl>c@T*91m9e|EofbTG~$=szZy=14E;wkpk2T4Tv)5xqf z6BNLqY!GO`JqgK~o(DU=xmqwA=G!t>5fK9F#P)xzJQR|gU}|m3IY|%Zw7262JLcmh zn76l zT4!nEUlLF)9}{WC(aL^#N68gAg-x}GE5jUm7G?!~Mr!SjwT?57B~BUV4+EU9qzc`W)B-etzS zku0~U2f?e*uPlF?Wd~{p8(t+kNgJ^7&l|n7_@CV?=Z&s8;-J_B4Q@XBA8^xAC%W-R z0_XDV90>uGZj!d4_*gCfG5nugi|LtpI_6aiVKFuaAD&}r#04IkevMbqEdaVq6aMR? zDcDE-ulzsot0}+7n=d18=XjA`C;^@bddQO+jnCdVyn#t^@(O$vK%7rm(bwHz6aZ+ad`T3`5EbLZ1l!ii38JnLIr5DZOY? zg$KvQ5L`KCZd2JX{SA=DC^+g5p!@QXCMQfgLx!fCuP9p>Z7fy(QTzX(#Q0aCJ>Qn{ zVC{#d88;`L1&1sv=C3~hVdG2Srj_-`H`ORJAx*#MFw5C`)P63>0UP75)hxo{Ya%LeWvDfVLA?9_e zeEc)k7i44}K+gTEkxg5}jkMkC&0Ose9-KA*?ZN+>z3^V~-Twyuw;8%^_txek-AuE1scXdi2+{f7Y=~nZh#6NyQ#K9j2Z4Ft>1pU!`@|8Y6!hi~Ayd+ZI>9 z7Dd{_n^eypLwY~=0fi^VWk+M_o9Eln<=<@x4#PdG6uP_JRjAz#o0lZ8GZc(W&bmDzzUkZt_Qa(EN2;c0$cPdErcGyvxSR`^>dGZC@iet z-4x(_nf+V}yYtsqJg7)?wop4!4n`s^pkap?pQ~HGBE$U6)&p|Y!MNPPiF@Hw5V9g` z_jBawo2Abg_{hpG`5A`qo|7^CCzUAphWyLev2g&X^z&`HIe#|z&>nTPP*$MS{ljje zjo#uBUu9MqjS0U0l3AHG9q-g}@31qdT>5mY!kb@_H*j)x21)z@`7n!&m?5vRRZ73w zpT@PZlU&V)HCo@rQtPEgvtNGb*m)@;rqRBf<_lod#_Mf(>Z=C>p_gNtF`#3IjztUR@TYB8=tisQd}MOHZ;N8_KZy3mSybi-+Y0+`s7oSC zOXPlbH$q`3BP;k(T}eqPP&0TqT#%IYcT!!;V(cx~9MdJy9yk6X*YRU)Ba$}I5Vicp z4@u{+yGEK8EesZB6XnwHzb{VtYdZ!s5Fq)9`|srZ)e=$+z?Bf`OwIbuXhQwrbjlGz1m3kH*`{9B3D>XO}wU-0HLpLr;${)1>QLkah)*+sH74_Z>N8M zg#0MyG}V7c3BSQiznH;0Sz`EJpV*3W=4RulOo-2dWIH54lP~QNH zwOJvQbM&J;_IO&0oVT_Xe#W`%^*-*$8nplf3(tDuX4P+F?I=0j;1jQ@FH<1DO7*D`GcR4hkBCu(eQ|vk>ss2rY+p{4B_)Q z|F=vn*N|~>I(>TWnj!0J0!9NSEFZ}o_6gC%QO<)JxHu|}i#zk9 zeDVsnJH~ovp?^us&Dzb$Vs{Ei=nr`neGVz}+w~J5K4rY-b<}L0(y#7@PDO8>MPBPr!yS*r0z-R&!I`~{<{MhH8pGqlNr;dvItW-YoGTBmo?|tfy zEyJj#hn&*z0!8tH$jdEJl0U{Zz6#epALJsqj`rk|c-tKo!v^i<(2OoR@ZlZ&^tz@} z^=)q(2^|*Pts^X#w0lxE_`30A0%)U}g>U71IR+u7ol6ocouDIEazA|F7ik9Z3L(AX zw5`d^9f@#$%O{?Q)xn(L_~^8Ql8gGWkZjg87icJk09hQyl^6gJrgOInLJt0a9Of#F z7+bWt4C*wp!8al+&hJAE;}hckLcFg7NtsJx8WB(k)}huZ^1*Ao(ihvKi=Dg6a2CMO-8;uB&PoQ zIw%Ib?_se68A}~}6XY{s2mDv$%Q6+emHS>_ilNEv{HL8Lp!Ccp{Q}BPtK#QZVL&-G zoM|iCiu}Y^@vk)ppW&3VF~Q&J6i_8GLQy z*E_-PPS^D3-dh##@|R$mYUx|LhM8*f=>gv!6VGUR4uv+)!QDvfbUOoP^bZ5h#vov8 z{ia^?*)X*4*?;l?1tqR=3$!p|cNTU|ROpd&*RTeVtFoCPZ1~-ByU(()AcD?`#^l9R z+fZLOdPWNGyY97bPdozN22wY=q>>=_+sqqp-wr>WK%OR>|A0OcZ2)OVK{$b$g)8BU zd!MUmuf)b&=zV0yfWM{6q(owBvG;NuWvghS?})~Llq*;5QHTOrx)wX&L8BXf13goA z2E#XmTTPvVKJ%DVGIyi@p5T-p=wtLUB6gt0ID>KFTVn&e-1VwWKZkIL*Q8p2nj6GUY8U=cPrv>&m+kYW{0DhGC^%q$= z?RPR;)(n66ZNk3LV5#41^t0ua;9&9*xVmilW?hz=xU_VZD`JO|_4cQ%so2TZK`M+( zyNFwFc^~h32;u3#m72Yx(w<#wpw@Es@nE7lUi^Mfra=)t`G;`E%EU zw#Ez6>e_;WcM%CR&RwO|b~6l&<3KB&jalH~)seH~lUHp@Hd6YOvedDc;hm=KnkLoh zbX+}nC%QImxKqs$@f2vJr134unL4Ec{Oiy&UL%RpcmHuS4b~50_q_8ZqDR`b;3w&@ zk%!y4VEuRclfU(~^&1@Z4_#eai8i~DrfV>myj1?-`XA9lqoWB-V#G4&ci0}R;xcqI zLFz5BbHdx+?Pz`QS`oq`q>Tk%MS15BYbWSK_t&|ru6?ns#pwDU zF<{Ds#U5L?EzvX~{-s+%TfV^(;12R{@TYm+8pf&u!h(tN$KJz3gUh>4^4h~IOaLr~R> zKc`4C%{ElZ7e1Or6teOrh)@-bTHm|a9^x;2f?$<#W_VElHW{C_b9m_)FBhq@qc}|5 zzt&`)4K+?lnN!r4OSasz9JoX~vay&|Ux}ejn%Xl^n76h};C3JG9oRAWP(=%))$9~` z^l4y7VA9D^MpGRyJNB2Xe|sbvoXN8koizKgZ4GG%7*4>j5s&$ix#Lbb_p%cB)Oc&F z$Aet;qYBqf@P|q^E2hcKm!+kIwoNgNiYgz^yRwBQqz!&B&OFn~_8^n0m?q;s_I}A# z(95c&ZD3+*U~gqIf5~F66scYia>Fl~OBBaoV;@0z)Ak&<7<~+XUG}PSCR;t<|9{pN z^n)p_TpW`?FaGycS$wQs}&;;tS1GeZI4<)ZpSR*YbvBN~B*DHP9pWII5m=VEel|7)TSNair zt^Nt?;r7cuDkzs*avQ9m{N1%CF7f56=0)b$7DR z=LO6xFr0*G&)p_axH^=qEv}E*0}$2i^X&q*s!*8Uy$#)D3N` zIX*+&7Vj>N!=mkSpg(X3e&`qauTuHRx_gPz^mS57`|Kxl{^|I15WwzWxw^^ceLo`N za=mYaqsU6@Ylh=}&&A{Q`wQ!02|HJ1$`VRYGaKwnQIOl9%>puUN{I^YnJk2%UO>Uk z7n`QU-C_!O9X~aH)a?Od(DQ}>5|O&Q?7L%9^KEU{b#2RZFwDm0E&oX`jP4!bE6KtA z?6GZhLbtQ(aGRpbg}(zprN0A*oRprpOsyn>MP=Ll8NTsBaZy3Hwj6uXze->G9xc?D z8sRGOEpE_w9um0@@)~!x4JPXG5G|G*;=KY{>U_k49KD}E4eVrXK8g5H2xKlT8THy* zV^z}Qsh!7;?jxo`H&x%i-4E?735;g%FBz0Vod#OYuC_KLJSzAx#7Y2V(zUpe9#0-} znC60>-;ft%|7&#u*v;fiBF~dffNyd&ZlCf%W2i4$8o=<4EPBw4UJ567>dSXtGP5b5 zff3juA*tQcKn*$hBzU|`6nxw5^eN{gqZG<=jwZ5@to(cB@o1_LO`F;M-Y?AZxKgtr z6ZwF4(M3-uUcN7%9xZif%|R$5{g`;f@V3z}Uz;Cq2AiKoT_M6%?J!cOT>Fh$B0bIZ zAkpe7@)E$&TLqBiRa0i3FT$gz^KU?JFs=KS9|n9E_b%-~C?lkQhv1C(>~{M4wSla# z1ye%h+hjUe*r~duGJaDg2CAJ9Dc6X!@`s@~lxXH5#yDqsqdM&H_yE(|n_eBlri0JH zKEef|@duYMfkvRWZE4a-S1ymdUz-%ZT+M|Xo|xs3=iZJ|cb3cN3Wcpowy}f+8;-(} zfo9Rvo^U0bRF(Tongdr*zbm*10LJ*I~5;9`PaxC6g8|e zZpY$msO}V(-kC^@Xe3paH9aH%6PB^jGrd&JW-Jq&gyXU`2X`!pxg6_j zK#4g05j%?bR=`R{rS2b}M>GQfuO7ucV^22CZV$>tOl2=3o5m=+Up#z&O^Y0V8RY^f zNm~IU+T&!q%E9dr!P8xID*Y|qJy7l8*d3kW#3QQ zgcessQ11=oDJmMG$FvDJ<<&WWn7Ka)KY@lg?AY=^g;A)dTM-0J2C5g-sehOf zi?|Yp=nDm3XgU85)&f1du=wVh8BLfcHE>yhF89l<`sDP-@f&p&`1_ZsEU@uo3B6~g zNz*ANO0WUZnEN2)4+S^GRut2ia}4R&v<0d@KMiMol5{ll?da_bt0@`dXPhwg3Vg3J z%5)tLKA|?JcjD=GRs^pqOKAvR7j%wV{c!*fzTgqrUBCN<@3m_l zmF%xlNDEw_+-kg^^irp~{*AMR?nlp|&CQ+qYo@;Ds5Wl28@R}x@xDNn8f08Km}rfo zk3CDlgL1H*{!0ntwBatit`|3arlEF$?3;RYw{n~^Q$^E_7pdI_NI9EI63L6q};yiE(yd*Z$`9laI;?#wI z;<8*Hx1!uYcZuwM-6$rezW6$)RcdRl%di8UNH!w}X5XFpTQ|f}Xb+0M@+HEQ1DBAgEY{H<1Ewf?-GAY2oAp3W$SYbN3ZonQK63l>x~}9%fHLH7O&S{y zMD|a2zWrc?TL)lv+vcUXB6m5t={?!!wC+nh$r zq~4Z1*;P0L_zdEIHeJ3fQ5#LpkSpRX#;#5>^kr}CpEa`=4ViV_{rTr17BDUT(4DLenxF2gPo29 zRe{(l9(?jRlP)%x`_e~#OMSEKgwbS;71?{&Vtx`!eM|VC#9P7tY)f~|WdUt!r1>() zvBRF0mr)BZeOA3B zCb#FEjz%sMD!-&63DER4WR!3?eUQ|(G4qO_fc5hvVATt<-M2}6DNDe~mCH+a*lUhs zS}t)9f_O~Mw`3n2YCfvvLlI^_{^n$clFTZzrP1;G88VQY9oGpnDu|l?GUe`r`AA3q zxX<9@;i<8lvpI9ABpPnUqsO11C%(j&sWlvgC*EJojF2bHF{*e{>*FquMuD}*I1(qF z?F+l9?85H8@-;%00dZbl3hjutuVi<=jz@0bowKj<1vd}w zmhXNQU5d)JFvHw6t#xF&8Vl`z*hlrmyY1{q<BC}R0cgm-b<=n^FtU* z8H8ttj93bh*%mgnD8ex7}EtqSdOm>L$;+i#0KM6dCn6gjRr3+0-9YZVu3@ znO8Tu$<1X*T%`g}jr5>Hz{)8gjb2?k|FGCh$Jo~o5Y1#^i%TWj8@#}G6K;`sH1-OW z{Ed1B=J#j3GUHZGA2SXzN?Yz(@-I-7z7XPf5h-N$9cqA`GcFU;S?+mB`8zq%iMqI< z+~f(w29Fu4*6JQ54PFMvBpS_o@Qs%x=fx2{dUa_vdyT8P?y7ejOTC0X;JgCW)yvHQ zp_?oGKWdKgFi(h4PGDNhfUEn|A@d_>9vS(LOg>a6Cif7q3%*(_KLqGdng+?vRQxd< z>=rr=C3OUCE1rPU;TwY=EERYX)nrja>}5O0FDJkyile4Yy6@V&GaYe~2T>AV(-w)u zd~grt_g1~G6iaMf>Besz*0k-aRIpDti&0HwqlU0VdQB|rl`t{lB$E#vC6k%@X7qlX zm2Lcbe&5fXT$dUC?E1q~mwc^wh@{Y!NfLM^`=Df-N3o&DYER^xHb zbjnjuSkgDvr(o;uzkJ_OD1H84mi#b^wUph-%yR&X%mG$o`l?NO$xWs^3 zxmtSs&Sgn(LB@}_1If+c%A`O~{Yk_(ET5umght`-XBGw6lb;AZ|0cxj?Wp(}`V*1s za+V}lI$?BUk7{+m& z$@PU^ZrWBad%4!~;1#H5ztr9iJqdNVN|OsU?(G}EF^=Cfvy;XG*{8uAnhnbADbgq9 zwTk>D7xfP$6t);`BcL# zuA%6mGi7jQnf$v`m_ymVuq1T;;p1auHgvK&iCgj;!-4Mf8$$!SNF*JhwKg77omTgq zgY~RpDF0>QiJf9`5(BmpJnO4#^J3$olWlgL#6*~(i-a|*P)k?6BEC(YG1_w|o=ApX zKrgI%1I7oX*91)~Sr)_M^Kh)`-Vg3d=wR*Yku#^%6m+UBOuA6*HhqYAVv?kzPYGYS z(`(b?x&%}vTrAWj{`BsEH+VAWF*oTe0Er5zoqMOav{%pYw@aT8IOGCm&(}*b~X`S+u{H1D7E6R7;U)}IVvGaL-BG%cRe_TV;{yHf7 zWDgTl+STHwtkX<~er1d(9~l1DiKx~jD_SKUox2HnH zV(=81gdt_FiAnA5y+!OJBVAtRT8rS?r-=Xf@O>JO2 zJNbUG${I-m_CJ0Kk`?m%hw|uL8~Itz?BhFk*I0dWISYeylxVrT{J9W4@-~LH3#`5% z%INK(kC%a#Q4Luu%E-03Cd53J8kUB$LtMjVp3%LFn;}=Uob{hgMgEQZ4{Jmh4yyEW zv0{^|u>S^1_Dl+5spbMbCf3mPIf*P;(PU9egk;TEQtRpEd?BojT-)1V=DAIc9)~Du zJxELGRIp|Juo1QQYn6EOS-AWg?JK=Hx&O)cOVW;t7dLQ2NHt;dgS z$8UZystBv#BtH;Wvxdi(kxnJE8m^=Ijtt_XI%JW zrAwLGLVFLvK3QzKG`3?Vm#3MyT}4C5_mfxjO!e>WcyzEkb=YikxRN8!%}t|fh6w3A zoAV_Nt`vadays!Hu)%tLzLQB;#R`%+f44iUl>2!hC_wN7kNPgWUYep485ava86C!& z>L@{yOl4-c()E3)#Z#5!fvWX}QwnGXyY^EwJmsO7fLRIfx!49z`;$ns zs0pOe*MsyYUqltt{tMhTB1!{0`;)jjh@^4q*GvUfWd%t55($xDpeZ`x;M2PMcdf@G zYaoe5*&sNJg(||a9$Mtq7_01*4P;o}tXLR?vm=W7)(3-1im7*h$Pw;Bw4i!SCN6}8 z`LTqa!|}BL`nWr=b$)oqFks$-*fr(01E-hKbube>6bW;xWg#?HSYNAjp*$v16ns+O zd~zkN*G%6;ns$sRXn?H%gOt_n237=~ZE=%7JJvd@ECgZLZiIbDpQC7-j?XHGcB;P2 z0##=H1Fo?8`tLapvzh7(n>6hxbl&H=Hcy#$OglUm*O$GM$$A+DgX`jAnhNXbEFBY4 zk=1o8ve#H$co%9Bh0BkEok(V-*e=M-$|cEb3511Kl%uKXEdwUfFqcPyqoG=~-*ft_ zP0naF{}||8*q;zU&-cd_x2fBA;W5XBx=7y@@ zJtPk3qxRSO#!&-IHbaqUWn93A9Bk7~9*87&mD7G0n8KaKhRl<$ZRXVt*#D!88b%S% z1kRKF)t|P|p}2dCxq{y#J}Qm1ZEjVk4q zo_wp&7bQ;f9{a-%*xh;XYA4RmM;$a#l?P2Cb#CGaB5`g|-`a=0Zh~Zbd=^4?{U9!y z=${NuP)ymlZpD$nf!G%^q4zS3)lBDAQq!L;5Ea?S{cO)Ai(Kn(WQ z?eUaypI;YpPCB}(eA#!#ghv;q8$hXbP>clKU66@_dPZBc<9eCOmC9!J9Z_-G~S#g zy&fuI*PDO8ilfC?EEVw#umn%blDdBXWB%V)=lJcw&MU$+rlHl+ctKzxv#P`~aAweQ zJ|N$rMz6xXomuaVSdlj4a{%ItUnU3b=vbnaGiWG(4_cs^<7fwbtNw-Xqj)(%6olr$ zlTZSh*P{EG8gz{NC~23w%!0e#vM)jmI)dLe#WSAh^C4RJ^zY51>*NthZ}XXlqF%A* zy#sOhBA-LH&8Fj|cgaAoo|Z2h>Dr$HFQK_cL?1gp5! z!BCxfHR2$Qz;iVk^gCoZf8r%{7$iHX!^5r&D+yqZptfOwXIvNK>0h`eZ_CtITvlEd zzBn018WzsxL_U0n_$~g*pC0+$%7FFr=35)Fz2iQ|miD=Ggh0_KCJ?-_Erd_)K!h?h zxc=A$9`%h=44S5<)?RTQ)O+5<4aQ;_mR8(&;uL*58oyJg87xx3d%dcGFuYMC*LlI= zF)X%X__n#p_bZDIW-3gZ>x){T?8FPj+L7P-tZ*?Tqxvq;fbCL2R|b#GaAVL#!!_1x z`gOvW-Ve1_vj~60C1^5Nui+~l+sXTDJu9thjXLnh3E1>G|M4tJSyAU>C@r7g`)l8Z zCsFLR$hof7xoP~r3?m6Fk56G8XJztLUO08ngRXV5j$KsRx1~p1H(<~@Q#musc#{5W zXDZMq*0iJSGzTb|p9`;Jkd#)X$odkw7vHI7()Ttk1L^#VsY;hH97Osp&zo_2Z>#=B zN7d*gann-a)fnNJYe5q1@iH@^@+E=$$)CbR*gKgx^ygT@FR`&~6DOmFa`6@qZPzcb zI;<4wv<5j|MK!H<>=>=PlBa3CRO0|WG+tWBp+hKqcxl3$%BQKFW=s|2lG3h3%=Nk}cFz_hs$ z7z|k>30A}zNYYKRl=vw?4A;!uvso^x1NS964>2opAdX@~2XA<0)*Dd^(}fq)9JOZq z->W%4=_qS)o)}Wf@D-;Mh%^^N|5hXP>>zlgAmguwtNa=WCWJr~y9Fd7ioNj#I)r=t zuNq$&H3nBAZpMXv`v>3aJJms{QH?)8Ng4RQMQNAqYwn*Zv?AaT<%@lS+&Vb8=ut6M zc}^v&6Zsz&HIPND{(V8`e)d`z2D)akTXX*z#%abyTgsNVr;;SLn1q68&Z z0Wb~ZX@xq|4A9!RuF1&BZ=K)!bc?jp4$Iz~FiGEYwNz|>#ODpqwjXnJX?H2Fha%Xx zf)sQaj4;JLsQc!!#Ly1|FptlpiuQqf#~Z~qC7m~<%O&$o<^gc~aU$1#nZ(Z5zok*c z@GvUtE-ljGr0%Ml_~xG*1A983 zoA*t5FVOypVUHGPaX94X5q---1We}{kALdZ=$ld zsxX(xc+N8f^;3D!)H^w!vyD_QK_R)xVopW3Ckwc+>nSi}$?o*;m`q-lmvGQxu*d?o z>D!JVJzsk;DRWv$P2pB-XLsizj&GwwZdVGXUD`oXTEKgPKG>A6#;g1uTz|etZp$A! zN{JuLh7Lc6sdSdZ3*^zwVo61eUFlswPr|u)pdBxmUVLBHDzVpav>*MDT(d97^U?Ef zJS|E##NS0n&Oof30{Y3!2!VqQ(Ti|zsgpFIizg&6w@<$`6Cntad2=5A^u+KGo_J7) zO%N%kVV=*f=f*=MYMR1bMsmC3eC85M?6%15dZ{iC!WwkPfIz9KK<*; zNtM&U%8ja`uRJa{MqC2QQB`tZiZ4S=JLT*2{A*M zJV(VksyICCixEypE*N#<3`PGAZx} zg&oc`%4@b@slH6_#Y@~PP;+QeGHD(Y+4A{c$MDA4@-uY!*_(Ex560emUQwkY_?5+w zMuxDGBu#7aTTkMFyi$XwhJ|CmeII+OcQ?cN6+3l|#<_S-=uyiY5F}r0{5*uc4>rW# zJNT0UJ{Nc|dQEAW5=i1^8qn1<0(=~W;g$R?&(?uJi#a6x4Vcp^eCghFvn}zwVL0!< zF+_w}AJ-;r)SdzT@zYdRDo0X#xpmEdybzGJ>dmSxn8+5estZKcLIABbU4?M`>n}Xgpbo zx4@4^Am3P(00Ug{sH$#^IxE+@F;2Kc zeXb+$>@Y#y*U>qB(+bg9+%`GWv_h;ksKNxC()zx*B;_pd3D9h*0*grGrwr}M(ndiv zU?ExtrH3w-Cg_`A>Yx(C;eYtk?0SEa^S2(h&%{c&|NBa$-j{3GGkz^P#d(T^(qbyD z|AzOl*pBvI2#AF3ER+mROJLi6@758fCDY43fQ4UT(pdD{Baj?YQ^o?}i$+e|q$ZfE zN9GiB++Ke&E57y#vxMAWwBUMDxTZhZml+Qm_mguYhXi_S%LS zT6ND($g4PJx~M1`hJv3>dHB17n%8eL71Un@ZsEC_Uf?qPae9E%JFu09%2~t;>H-#X z3L23!id%kFL$xX~%39mfpi*4bi2Q7Ll|c6_u`fDT4Dro*myn4q9@cp??NJ56TvGL6 zA~BQo61}U@<8K41&chJ0D!SoxHhQ`0~I^DhB>2!zZQeQ_)mM6CbY_F3puow z6sRdz&ofjajhQ%#)g4X>(l~Nx(~F4$Vra2ZDUAUsq<09&Nn*!im24Q-7V0y2O7YfjVVADW+H-AA5QtCgSyG5ij?H+q;lVLDKfv5J+)0lX*R+~Uu(qN1ws`_ZH z{CO76la&e7sRQDR;^WMxRaW>Wc#_653$31n*^2ko+8u#q7RO}474#5$PAU+q6E|gc zHD*ho-x+Wn%2O0ND&sV#OI9g2ocWb3$pqQH4#tWq<$#>@{M!d}*Al_{Z^++KU6FtL z!JMO}UnE#nVsPghy;gs^yWJXy7Ajz>ftTr}7vZeqQWKI(!DDU4ii!E3C?l90+oz9z z@mds=cBv2U-!kbl3mh{#{xERu<10FuW`;R#$BH+o+6&haclhUjYAOg|CI3qi^>1fy z41F;FtQ9}AX@$?FT6wq1bt2yb;_tZM`!QZzF8_o|VG*X`O-n!BoEdYsm4ro@4mc@EiXhU#ksR*VUf6VtZ2{O&HV^A?DNB* zWkF|6SUlbr!*`{-jn5K*(GR!b*wKnxRdcc?*^-s%x}I?jMm1;3U#rMleEbAYRu^;7%D9v6- zEfxBv@zFCI3O?>8U4Ay-#2w|?O_xSda}?{g{EVQ0FaWr;cc=HUw{qaL ztLavup8cRlqAr;CjHvr!+wCegL8?4vEE#(rKXmA(33-vXsbmdZYge)+?0Gw%A1FJM z+CjYuaQ0+o3LWKv(#!n>`v$=36y(4nR6&_2&aE~Y+>~)r$_Ojk(Q5|m z>DMiI7l)WkeuOJO#a z!$_rkk~&awh>dm;yz3{XzyZhPoH%n`#eUdZ3mHeTG3|E9C&!m;Qt6Mkzc@4MQ%wBF zYIXG(&zV5uNg^o0C1OE6%Wm}bOf72XopIlvq8IS#iW8!=Vk{J z`p)iOMM~VYSDin&dMnm? zoo$u&g-f0VQJx!!terbaoBBF{@tmR{Qb#vI_+O6z>D1}{rxI5p$Q9E(9enyA6h2)) zms6blfCE;mdUxKh@V{1OM&;R`f-)X*AKWD=oQ#5K-%@cFzn448={OT{dRE{vL_L=p zq_2tDs-dCTTBAW&kvdlR3&5O$-GQx(HGM*FC0oy$ESPt=HYLDE2?Y~AcKm(J+7Hb_ zIU|jTTGeMJ;a}%Nq`h0vMC4!uF?-%aDu;2dXp;}4#6Rw!p63LG|87kEmNV{iaFg3F zn)TyY2Br+37DG%q@*ZZI0BKrgl9mB$I!~|r7H$JF0$zQ85P!;a&J$IxB^cLpNJI`} zp<;EhTm9OBnILHSzM8W?GXl(CVF81xB7_1lu!>9vzz%gtPR00ZzXC~HukQ?Ozm z^QVToe^5>j8P8Eg*~HeX!|Xf)7oCn9^X8-!Kf(smmLlY4(q8dAH7CnzXf861uJ(;u zS~lDNgCAvCJLZOZ9(0tvFi8+nAITtB%pTep7%(3X1qbu3Ejs20Jg&xesl9g0;rw3P zH_S_wG(!Kef#J-QuSNL_hrn?b<~83Y%`_(x#N~$4WawRS%S%X&MN0jDoV{gKTV2=p z8=z>B;_mKJyg(?f#f!GMyA>xm#i6*n6f4D{lpw`jinc&;DH<#gk~i0NKleEAbH1E0 z&eyp!*4}GmE}3)v=Whj`Sg(9NPLZ%iq&oAtnCfhQeBwSq}2t>!OO!aOEK81c1iGeWc z_-d9451PH)3>NUJ5nc7!G&}kr-^de!*MSlt@w3S=O9$Qd9ild@m5f5~cL`J6rKTi# zqFg=ZHV5l7P9!w-$il2K43F~{-70GPl>Qz*SG3~0W(!%m4yTCKs@v}#`4*PhW;F}@ zpOG_K(~x470hl~qV#gvBS-$w$$iBorq=+NR^4_IBTu5aQCA+kC4KH!Q1^4T2fIv|A zgt5iaO~A7cdnR7Nq+EhZaUw!=s)&7gq15^CR#oLVfdOt}IA?(3V@wv2=oxn!+y^EG z#u7*|2AMv85*c1(|FN@B+Fcl7&3LFclH$1*j6=SelBYrGuTj<7VNUHm1T7G2b+>5s z9YmCTe>HLVr~0_U?erjp>!ZQk^kVYwe6_n|l6OP6UA}33h;#d=>^_IbwYK}xN}WdG zauko{?1m`#?Cj&3ZUK1-+iI&I$f7O?p&ZJ`~XHKBHCfKO}Lg+gp5i?zIVvB{f2z$s65ElRBTa}w7sJ1oI( zG_6)dU=2T0Hg9F+vM87{M$nIn(j2BMQlV7R=%+yU_ga4TGx_BUOPKK!$M<_}Teln&=tTlW&4HSbz=+s(z}h6t(2ISdk3WfR)`=NPLd z0<|nw`VB>9Xfdj}i(4Ohr6>xf-Jf&ja?6X(k!@cm6u{>dQY!Q~ve7l|c7>aK?!Zmq+QH&(IV($OBm03(FS&J`IAYBv)II*nt z{yE>cu!al;ZX;K-?A+q!=F%h{XI91jJ6V0nbjpw%y zr9`HCaX*>tK`b+#4gxv@gbZ^X7QVbL{zG+Mlt7KX3g(*Re!w))s>PH%7@lc@AOm%7 zhFlDl^V&qNiY>6tJ9KNz@Zaw-%EucKTojOE|0R>mjB-34Awl)`5#fG`nH@~?S(KOV z^9&mg*{`=hIu%g>b7kuqLU=Z&mti$hV`zMQPv)6xV$Kk673D&-xLTm0%2-05rwZPu z&)wV7TlY39y`}c+cvI2421RNamsuLM4*PO#%{A;SHGN@q(YKXr@{xF)+gB|0@8rto z8k;&I@;Mv{)Lr#06JG(7O%Z)HCeql$d;J9!{SQ(qMx?E;-~F&nEGDw~L5Zr8+X(qv ziEbf9WS2pakIV*A6rVSCCe|0plere_^cI&ssDKnSXFEXxEU!D8 zE{7})i_UFK3fOORCcv8lNAQ zWL)(#r?*c-yDaoyyK209xL3E|x)o8Wc=7(*t2mP9HbP~+T@7+Ibfaj#uQAi!DsPul z(;w7-mTJ~PcjVkizRmXf{6pFQy?okfsH*QPwXwz8!W!e$YojO1v%%NWHUgxrL%c3C zZ`E3!AQkIvU8yw@&!!`_MSiiWw}T_W$!mP_+jeYjqo(lpNo(ZWr!KrHW0}UF{-h{P z26S|T8lDxjJPeFQCjn=N&JY2OuITf4)#F{nKL{{8Rg$sr4z`mmEj--BzU7eDsn=@U;~SosVC=XA%Jsje=2~d zrhS=;%R{Le?UUoU0CIHecfsFqGH~$P^nt$L5OCS`C^nvcj=9{r0PVlqYxWUVdcJ|? z{+IhOkCl5fdYsj5x$eEoG4oE-?>?Geqbi*2LZh|FEfZ^Pi5F5-vJHaP^ZdFtWOKFy zp#7!kkm532gH3KvVhj|E;qzfa>~6AaFg-|BQriG})jI-PVSf-~UNz{`ys2{@N zU*o!{uwqu;hndG*w#>LaeThh_b+pj;gnbJeQ*dN?_}u_1NRjSyV12&OfPiZ0Pgq?i zh-rTkT>L|$B4T+~#~9YOV2)GqLLk4MNcpFeeh=lMR2*~bra~N-P;H=WbTY*JYSYQ~ zP3E>}A64E>#G)>DqWh~Fkx$rfF{JXn=_}Uy{L6Sdh97q$baIpO;S9No)RqF{jrW*# z^J1VV!F6{)2yP=I%UB*=25SQ-K5*s5T5)KS4xxhV8eEvXGxxa?Y3`T+3!+o7YWlJf zy>X}$H-^-s0gs~0Rf}aBwW`Mb%0h)yDN%f0l3TEf$iM<;Q#P)5@;){S3y!f?LG(8o zTE5vyfe5)rMgac-xLVY}jqjBse{B8oFXYGn_7&o4^)4^yn?KOLdvkvYIXEQrPT~hc zHQAObyZju0F;N5!{~0xivn_M@US_*$BTc*IFF#-SRTMseZ}4z!m_ZFPB=8S}7+5wTfLy^kTXc9M2NLNzt^p${7$O34EOJWHJA@-I zSf~_(uorT&9W{jc#`gz4YLk-D9Az-}OI{dM`hQe|Vw0`S;DV@18e@2AYxAHN{Q2+D ztdH-JxmdrTv=75hl{mK_uGUg7E$l`k%&V&cN#z6t3ZKW36!s>Cf$(}4I6o^K5%Sg% zObfyP!VI%4-1-R^^sJDj(GRs*I~dX`SE-g4?`A+EEbllnvo^=CvumIsf9OY8x4L#k z71oy;zC1YzP&ixeaCESqnx?HrG;chtzqt4Q^f}Kc?iM0&<}z_&g=7)bWuuX)lxO_1 zGY0__(LI}4*UDOdvNeL#Y;PUQ311-X>>y8%6%Tg=!&EK~k>E-4ckM9`o z-Yfr{+@^6T<^JLWMt%j*Q-siVVjs|1Ks1!r*p;k0i^;}-cUp9EeC>li%Teu)k3FZsEBF?mznrjTG zfx2@ha*tu-!vkPcB7@c``TGS?{kQM`3s*r=1<7EKDtr~j-4)rRH1fLQjx|IcNYI5TIw8#%O_%?b7>z>X12c|ko(F<%( zItQQdt(iCWUN97h%+Juj>4{a&#QP1xYjj(I#=cm3M|)8G52@uC>gPNH?iil>v?-T& ze0paez_P;2ChxA3Ij7s-tYi_K1JVzGZHTO|ASK z8>vJ6f%gGt1pq>e#Zo53y|>SP_b&lE06BqLdyCEH1d4-F$EizEcM|SQSfU_cx!BZ; zLd28zY4qcS2szygb`Ze<0bDe8!XMNG(Lxqsg1nJACTKazjb;`ad($5(cf$4r;_$jUi_ zdwVj4aV|)fzFNE~@O^T34`oZYN)LGE{~>GYwTD=%#v552f}eiBkZ-1!Z0m9Qy-un9 zW+qtWZK#2;zXAuZwa!8qb*=hb2RHrNG874Q&iNPiqMIuV!sTsDx%MM+dkRA8>kxlq zE<(;gbE12qtltn(kQ9`ULK(XzK1sxun2a=tQ3g2z+?yB%;a~hAgFBnN zcRdX&PfM7oW$}a?rM`vdiN=JKBg!&J9AVWPJhtua;52`-+MTi_GbRuTwZY-Iqe6yQ zqgX>N2Z8zzsF`%KM-Ij|kIu?nNhf#poX&60@1;)^7C4z$N{K0dc9B3g`U_w^;z1q} z^X4SQ6k+jky`Z!ptB4iH3~_s{a7HZT`83!Zri(GPyYT#=W5~&Ji;)_)0n6M>QXMiI zV@|c&*ge~8Nv0&gq|d`}!)}@W;$PkxvU*$vZxMPu0EJ?#ZkQaN+X&RYr@7A6ef4dM z1vBb(D_XBim8o}Rr;@PP;B4c8A3^7{=S|8`uW>ySnumriBK0h-^u@_L46#rTvFQu_L zWj7?w{<<=lWJ=kMc<1$zK|K!Ziz-@fHjbxQ^Bp7Bg0;>vmp~-VxRhXEJxte9BZnvy z1^%Nv3}mJZL*6`igbC;2(FpUvM&65222Q8T$5hH})3H@~r-7h&tIRZd^QETv{x$0x z&o~{v{9MaGT09X;;t>;KmZcbRa)Xu!I>9h)2{^%!$1PPVS0yMDRgt; zvwN4Gb9Ndj@z#m_B7aR}gZsd|REV-%ZzLj7EVGX^{rD=URimdf(Pz?NFP;^!bBtsj z%7sqwrPOg0BH1}w1Ea6!f~svi`WHL6Ew`WS3y8LgA53NYfU(N>>hl|%lx6}qr{lT) z2+Hbbuyv_>r1nk!hM;6Aq+lC+j?V&o#Zeme#lA(1;inRHrOdvV%|?dsiQLYMe#xIH zv13TUVbZFBhGg+g=~Et8+7Q3K>Phh~Rn?&6FakO=UilNdYyN{pBdVo$5(xV0=ci>! zb*k%%-L<9Xh$FGLYOab6KHx4{%rs=0Z_|h|LQ2|=(}*8-!VF)n{0ynr_~N@|P671G zTybr@86krO2>LXK&I3UO)bSwfpWut9(v|I7-N-__%7@PJdmFm+mzNr2TmQfyhkrcI zh_e=eMQ5NB#d`EtZpo9lQBZ>Wj)pCI0U0^C%GU=x*v9Dafr6jTdN6 zD5#c(JhqW@CsS?i03f>Y?8wz#$mI5?0!cL z__-Bob3h@)Mq7wQ#{HTHti320dnESLv-yv$2JazQ2h+!O?(7BZrsV0<0k`d$yg~B` zM3Kg^aOaDeHZ$=ISNf^@boOx2u3P)%7k{vl-7jsvS1BByBC=wpT^cSBu-3Nu?F%!c z)Q`YJWL9$sJTt?QNfz5BF3}3{vP9qY?FVYfNFoE9TEL4K(`Vo=@3ZxJPzS9? z+*Lm3y4$3kymFLXQx^$*$(&%#{2F<)!4{u= zzKfdYoffyexj#{+eD2P=<2Se{s2uqwc~gL+%ou+M^Sz7nb!@s@_Tbx>h;-%Yn55dv zEG;X6ciF6Te_;9T+us$>14vykKJXAeZgrrj3nGfYp8%TbYSs=i8&p3mJf2ky4k3n%H8R6Hh?NkJ9y)MyFp9yq@gOKQPec8) z?mPB!@kku)3P?L6#bwYF)=UV`Q_kBE=j0$=`3c*_ea+ojg?fdC{oa&iTW897q?By_ zZa<1ghc6n2$zI>NKZfUqw!Pm2s1x5ql(=w!##OnE`C>;6)J!|!$X7ieOH^m0^~s#H zGH{>h-2)cAthP|t)F8meXzOtNL+8;OdJNx@V94kfrS=Dybio%&dn zU&|*a!Xp7uu6N1F>W+Sg6D6mUSu}mctuBH5yhm(#O^OxEL#(=U1QyQ@zdWg%ES0+% zE*jsesO6E{RQ6~oIDy}Ckvg4`rM0#RHKrXmGhxc)C?D*fsalmV zzSY*vJJ@5{U}P%nrAR-ko=-#;16FYwI|lRd=2zQSHiHx-X~@!(%@ZfqfOa+#!)a!P z>Eq#qM*((m`lqonT=o$==5P;_x8*&Ke~`=l8*a#sq|m}J#Bs2x_QTxPA*)oplL6R0ds~IWd8gTw#l&o z<(RYvf1G^O(Y^JrH&go-S06}rvmD{hY~4)aZL-A7_4I{5)9%9J=R^tOy^_^lM7QTr zpspEE&hf~bZy6@R%=^3rnOXfC25neFv!R9B!`Hx725)MC&`xz8!Y| z(Vq^=T0Yt>IFGm?pC^EVx%c=j9>|M8Q*M3OV?k~tG=9&Cj7G3mmHH~qpPa#1xKyt(^xOHcn?Q{S-iU4e>jKMzNxLok2_ zi^P-4bKZZX#J=n8+Dq08>UqN=Zt4gZALAdROG^*m- zEO0dz0}If?Dw&wLi#63ra8x5h-`7?}w=}*{nbpggMBWSb4l#q{|b2R`OOl9ixx6`5;OtE@KOR=V*LugJa7y4=-18*c1zJo`gLKe&x0<_R)V0IGlqxY<16gXYwTRK1ZWO=#aWr) znHsH%`D7;UB8`b|kbT8%e&zg!l$wm2U8CnCz`MLCmx7G65ApyWT0JJ}O-(e92^Fw& zso=9FPR#b{-fl%*ZiW6*qgQE}TGf@6jO>H-eBP~1WkPqcyj%7P-2=-8&jHhLRXiPR>xKaOvIfhVt>l!J5YmyCI1l7$;(evb=A3E9n@%VK6lrcX z%BPjckyTmoZ8UYgG%lKxMO<-1A3qVbAVKZh9AJ)aOr@1p=q2HvGAp2!^{xWhthKH; z_Ps6ofEfG-QyS%_LmEEjNEATJNy7g&w$(?WaAOBIWf}FEsgJ#Gw{@?&;3l`g8OJ^^ zdXw9a1=*|@OK{F4A;(b#jqRVQl#^lyqCa!erHd6QFWjf^h;xEE>rHaecqb)x%T8x= zCShdz{zm$eArf41=oH+$4aoXoryVu{7t6s z{JiP&(-MxstlX3I{jho3Y|zt=MVexJ%aXYYeFW82aTz_xgbVH>Hk5wcyc3S9KHx`eCf;L>bw@As+Ia3E zWl-|_{Z73l{B6;41UU6eR=OD=W5q{0sEpH{+1uOX)Jz5ZV#p7Q)kujV7To&l`rdiP zY2kOEiU4(7KJgWp6hG>Ue7qP%Js5SHhx)re@IwIfw&S<=(;U+Es|EnN6yVUc-**|8 z=fGgER7ENZ6p9z6UMVuVi7uDR+mv_Zv)+p(cE%0C;NX1T1l~ zTZ$3Qom0=l3a*tdbbny0i|rBa>owa~3$8(@5}r+k>TrgYwF>_#&I(=524pa*k)SAo@u$^kVlM0t)N!ntiro!2>pp4_cFn~HiKcd2n$_TfX+>=_|ge#KgvSk+> z?g#gdQwspZZN(UyaYEDg2Tv@V5@8}0n^+5A+gUi3;sS7XHjRuDv8zX1JN5E!sTcYf z){3UYb8FPpc?2eF^TSPRgv?;css7TshcrrGC0%F(R;`h&<1r=gJYwV!Av60h0OBrE zK@}bw>&qW|^*Vn_2q0Cv0gTyDusKU12B0qpZDo0Vrb2mNdW0^9hE-6U-tSk+zh{@V zBx~(3N2^NtP$%@60su$RF!2JZ1qrY=J|=;Cn;W zF=6}4Gbg}D8-Y-&P_&XOb7M+;&6+G$rkCIim#}i{oo+aCa_9C2rKWzEy`u8h%Vhy9 zO?Bc1cQz?>)5Us5f~kR{V>Gjkbi`>WVw3{TS7X{U@`kaS&n*bnJU=CmUQgtex+=XO zvGzUW??m5;#rQq@h&`@Y@rTY~acX+J6+Jf-Ent5Z?mo-e8=9n&pLA!}m3E`ch=xP!uBjJL3I zY?-BfWqEi$L_3T>S@vk?@$2^9&X>=7Bm{e#S9r_672&_SeC_GI-#0n*=;nq~z6njNs9|40RiCQF!x-I(!>I(Zr}rnCZ`| zcBq$WJE>Q8$%^(jF*sSKuvKx&x&ZT_5}>>UE=>Ca7TH2ONrQWZy{@yQ6W#tSBywr; zV4hh@QTDhd=q}0VZaO1WT6AJ(JmB=rT2ol zJ{svhQOswJvmVoQq-1-)rHNct^vA=iRvr>tJ$*$S6wA3 z0*0unv~d!%CfQZ~WbQ5;*>wr*&);elBt!dAM74bw0qH-490Y$GH$FL`B~^EGOU)+s z6nF}@<|#4IQkmKqK1ob{ij1?Ef$TVis^nFqEAA`h$WMQh`3(QOJ&SAgAPg|fj0D6y zy)Yjd1PSNo5BHiG<0$V{@w+g#@p0?*;()XehHSL>Nn-=1juAPTY2dn4vtN^ldTwGT zHu2qTnmWqk))wOV%ha0dP5^@*_s-1g_d?F4N3D#{XR+=4wB3MVjK2U%8M8Eh9t^}c7Vm}#j5$#%I!N9gZYpkGir7o#o6?l*;r z0f!x?J{qpEubuG_UzdgRE5`O~$T_SDjUj2RK$U+%ZYLV@}PR==|;B31zfA?I)4E}~iyeyH)32`SYX z+WRO=d648?=Xe_%Fyu7=Ng3?DfbFP$BxL56?4B|yt)&hQ8=qUT{vs=b<7BKx!#X)m ze-?oChZoJw0KSD9E~vMbG51uAUG=Qpi%gVM(>X6%RD)M5dFuQ8#a>#@cz{YVk4QMr z5U48^!KI<(bul3_1HmN5jg=9FnhG7zN`rWEq3t|HH|@FPxHe7Z^&=3nGw;?Cq?k4#Oi_Oo7zDf96xrR?sofky44bis|~`cTNV6#s$W}v!p%Vr{V09 zKai7*#DFf;sxV3iL6oRKLR*>#$DA-t32qeEaw3sO6R3;YTdBOPH2$~U*PlIwZ#2S; zIrKL8nVuQXn&Lrs&I1U;XmS8=q}x;ikPKN zuQlrWdzHTAKKaRy3Fp030t@(wyhJeH5@}9 zjuZsvu>!~<&aIg_(&vRjz~;wSz-S>ol=>SqfbzmL9%6JYF;;e_pXTfn;IAp!YlbrZ-vGgS% zL+B3Wom9qlW!WweO+nL@49oYuFmGeb@v9g{DMSSS%1wqujQlt`^^mXMHfU<=DSAu) zboNP512-9RE(M|#`v&y#nSF*7H_|UzV5ifia<+yK8>OwvKwmm1Rl$yxUgu7DC2p}- z&|e|+ctD82%Y&;F@=!M$bKCWgH?gar-?rrmktbsbD^((6;)q4mH`u0`n8JMW>GoW? zBpsXwOU|?ATwm%<#|)_y%uk39nGpP^ytj_$vPcxEw2Wu-?Fyb;R2L9`3BcyTQ-BiVmHLI!`GJUT$$c?Pc z+v{);g9B>rV2K1xGfiQQUZm|zbxCG9rlLGEns*&VSmKZ$JIcVW%}R(ZPTE)eBYsS* zmVLaO-9OGBlCFV@Nfcr7qO;I@{k-o_6&kg7NrTFy!X0#&IXA(qfv$&orcTGJ0)>%B zChOAHLVHnUKQ)fMq*}vgQ+p33A@t~tgO_?O)%f^7UeO;pyu0K#ZW53u6K>n;dknZn zH-Do3Tm@3Y&ZQB1zC}OWc};j<9>|P`Fn+e=l7f;~_$iFp=f3wr&dknio(IjnA&l8$ zNn~d8S!;pAvDk%Dn6foiMmVCgDItHWqz8p9e$3#aQW!<1WA?h|1m!`t&J{4;@^?5+ zz_$ludiYOzUF-MK^?RX7HXZkC?wUwMJ?snSY|EBC1*Y(j-!aF%8bCF^|sxtyv5WsBPjMyjk zHvw6;JS-gJwa82$@Xl>*Wi*6irE!Y2e_QnWSthh@0`V7s4r&rt$|HXv7ROy9eRl7VPwpiOK zx|!}poH=>wmtB|Tf-=fHW|i)UZn$xd9H4sTo@#So9UuTB+rkE5%(KgCgX~%s-@nJ< zEi4f3t9RGRiOBR};;NV$r*UwZoBTqr@kmk=Q8hi9jk_}RK@Tuig{*K`(>(>~iwum+ zH;-(+!eI+o6Pq9r z=W9TLOzSOyEI1o0wPlewiHT)h>F>5{#xT1>b?2SpAlC#J7=J-1S`F7x$<(M*@E^BJ zemx&GgrT0=rUT1ZrG!f6ra@Bg`KB&7MaZWIV&PS0w1X|$sCL1^ zoPQr9b;Y?;YGaH>ed;TK$UQJ_eB5ZqDQwR}7HL>)JCpi2P=KYZAG4MuHFobhDAJGNW=vNS` zHgU^>*8(fH%z4mTfV1>O2IktfZ5N)tZGsIfev5u9a^l>enElcVOLY4~pP0>qZ?m)I zqYSRo2H1`!&lVK2Ugtaq8F-GWZ*r@fK}|1Tg=P|l#I*QIp4vO)Y0C0p^9tO{Mh;WZ zHW4$Nf|8U$jKQ9B0f?qYZv8W?rnC{<3UCheqD^%7^?kk9eQn`5HAoP;jN+*7fVG1x ze*J-Ta`pvEIrupj^riVzzDw2XYNlWW)+TrovP>M0EU6g|QC|t!w2_SXP9O9ua{#pe zL{92c+)mn7;TXH#_u&kzwpOYoXLRqf(|AjUu!fVA7tCs`CO6 zT4i{l@lZjxZnAHi2yDz)Em?}f7zuU?52GMwqqcZWO44CloxC9TTE5@q;7vYKZkO2( z<)QmGNI*u}O@>jAGkmKc(wYH7#GxL_iyyHYh|*QJhnYH=0)gtpL+daC67MkYY4=Wh zSrZ)m0e-c<)waG(0*woRED!qOk1sWNK}}}O0u8l5up-xkQpJp)8tW3iOvHPQodj=A z-xW>vKhH|3=%U}IItfxXtLEJly1wR+M8gdGA+*?SRs3S{Iz^T=SpSkc)S1RxE<(OA zC0X5$xYgqVx&E|LJ)2^bVWTz|VT=8(bzrz{b*vxshnMpx?#nMH*Xk`aQW_v3Vh zS^VK2C{c()`}x|)f{~z(&>KT^^e-Zd$*6}fY2Ng!cPm-uEwe~ZC#q*#Lv4FFH2zqa ze2hExD?~9~VRu6RX`ZS-)gT$XnhIkT=)|WokPpSit7_a5>uv5#+@gN^NLk4wE~_;b zbGP*>ae7NoavC8g{#~mfR`1sI2!ZoC00PD}XE96aqDED|W-W9?&CQJN82m*f(|g;u zOgXW2QP4Xq4n_;bfLs1TCbEtVN!R6^onO#=PES{-4hLj1pv!Cw^iz~Qde$&cm)U|R?N zuc$KPjp`h-%LG+1!n9^jR9AxFQ>8o@bd(=0Yy^2rFu!Q%t+YAZ_)|n%-G9P?#w_p= z@mBfquQ)r?_Vvm}mV;Po-0Cqim;}{~me?Ki^Lr6~_F%+4PY-AjA6`&!`Fr!EMV?;u z1>kH5m+Sc%-1!bQ-9A)vt$o*Bc^Zh6;9TSR$;0KzJ`f`XShd(4g@6ApNVdSEcZa_h z3_NuJfFGP0w+*hVg^G%IzTGKm^0JpQNT)ixU4@!{j?jfl^ahy=%l>1^R}L@@fF?oD zLgr+-(T~D^rG^sXw+;wpOwL^Xek?=5C$GTtO3>!7*d`r!pY%IVz~CT3TE16>e0^J6 zq7a&VzCn(s&7nfD`%n`&hcwClU#38X|KGpL`uo7pJHd za|2d>G=GXp_i(yn$=X{qOOz#vqy-W6wm2Lsy-4m`sQPSt-}vIl=NXN+InES2Zd?zm zN;{x8M^tOf!6bl|rj!0$+?+jM+m1PmDKyF5Te>I7{!cw!XjWi9fsyjPgH;J7-PEOc zXtF0)FU1P&?7g^xkZ_zJ!8q^gdmmmLfYZ!I6v-mj>j82as@}cP;v8Ege4_{55d1h9{hDwJ8>$ z-)~OZFA=Kf`8;gg!BL^R=ta6_dJ7KDO%${5ynQZ|qb0XTUY9&$6*oHZ1G8e=i0-{4 z)049fbv<71{iy6i2G|!gqcZqiAnjR+lIJ;=xpiAMN`-EvoPS9Kr9GN#SJJs1%Xd28 zt@TyS~xJw^aj>b`~xiz~NRfAc%P6OK4G(vQu|P2aa>a&e^o>;GsZIP+*-bUNns zNK@MXWs<4=|NfQYbmxQdXX<9q7VHnRd(GdihdV#KZ!&Jsf^g4vZ}>&WOy`H^rio-b zKgl&Vl23t*Ap*01tdYx2GAs#vO2TN7NgvOn-tlqDyHSzf%~HuF8s=Z3-JjI3S7I%? z$+jM}9@s?f#>Wijg8yshrJP>|CmX?y+E;=m-m!mYpx%Qy!aLU$=05ULUIBN3^ptO! ztSrwPd?b$0S2+%}AS1uo;+0&+wBa&|urBi_?g0?O9Q(P^d9g#t%b5cp&PCFCmw=)B zU!Sk9rD=o)6wsz^@)X+q@288jfGw1EQGi&7BJvllDIa^+MXqzFe^{3g-~7UNq(3D9 zD`Y=oAabXVmiG~27KcyTg>m>~OgCn)P+tkQEdrc3ogj9}=m7G2#y3ZMEtq zqyVDO<+&P`zdOClS#Qw4LvmWZnF=6o1T9q41MTko1ptX;#&{UbSDtt zm%9gIyU(gKPBLBf{U=W<4}HFD?h%B2SNvAYC0mF7Cp>7ZXRzX(Yvp;D9ItT+Z13{?}@ytW$2#uP*IHwdK z;DEj;`<~axJH}H>$gF2w91(Rb4?lOi>Y$LRW&8EvlQCZ4C;`n`+8Kcz{PdAO{v4lyF|wBnoCMtO>7 zp=CV8~yxzwlmVtaAU2 zsDsV7Z`dDXF;f1bF{k)$G(cwUBKVJgpYN(LH5+bZ3=F^Gaa?2Vg72UtY)v@G(6v`^7;Hdk#(BT zl<@b_6tYEcVpJA1F}Jh^?Vjgr@zH^EC!?CyWX$`BT&vgHW;);ZjFLZwPr+OY%y*jtRw|MZTzrL9fcA*(aeHS7A@3NE@-Vko2vgv zWLDm@%%+XeC(kzmWEY|Z*VLb0C~@YSZv?#N-dW1(|5-{pj|uKe{-1F5FY6yTnv6xz zUMSRY4OE?C&h+J80}=5E#vjf8A(+>C0YhsS|2xNC5u$-nl+6QKl}02BF-PmAgmPnr8(v1>x&y5CW$f?J_$5#@^2~t=tG0@jSbGr1Ps?#2F)q*iBlIZ04cE z7$`Zl-hm)di)wlHWVKD^#muprC13V3ulJ@?~b*lvOt}T><$%-+!Gr zE$?aYVqCQTr~$J1Dyjt4%_#dSKBs-_lP@!4h!^`VaE~Da{Et`7oOL7Kj3DEh^7zNX zJBIm@2=9bgIe)kq!H-}JN>N4;DFoRo1f4%k7}x#ht2a~@6mIPYu-8j@JEQHzK&PVd zm!Cx4YoN(O$b513uHz`;w<)|vr_Fz9ecEJ}lK=kl3!dGTOimTIK0WpuGX73OmK8qX zimy})l)*!%kO9}lq?|G+7=4v7xzgneY73Cb`b-K7A^F%*|RX`|!#d2eJAaUxy{D) zLOf{4-Ud-9h(cv>@MeiU`mRUTg;c|6n^!-y`T{ zw?J~SKwWi$FxeQzR-Es%92GjCN-F7(fDp{Qfz5DMcd~KQh9t8=$E|z zA42^3!3GRfV-Bq&nZ#g`E|2;<4a>)g?&Nrw=pDWH>}+0%vG)(+^+Gh2@1BKW*NEQ+o-5aiECL*+5i-1iSA$ zJQRFf?hS`j5H}IKg~^{At8&o0hvB}Tai|+ZS)$7klJDDrbq>FZN1dQ|qW!A;qkJap z748yS2ZnQKmbROUQv8V0{o z+<_~Yo088&DjB%4?h>Nk%l@G*TgTHB7<)qt$p)r0CS9I0?oWj6pG((|fzG<7mCa3k z&kBJK?P_4h_iyZir5Oj$_|oJ1lQFVbkH5jcTvHd%jLyfV3mvnDeK;&RD!Og`dC7ih zCH+_%#bRh%Ny6~+f_*~gyqp#oWEB|R?-gIrt0~oO9B6LF^e#Dpo4j2FZZK1AyE@28 zdBfCtu(J5!3M}#zAv*S8E7|dzaTPGhxWkHJiP$pXYRV( z-a-e*6)bOw{w9qU87Wi4Gt;hm2{}*VM9!OL_z_u+-`&*V9mAmJV8g$lu8h&z?1lML z|N1{#hwywL;sfGqaK|zt8u7BoAuNTfT*vlcY?aOhvTq{%Rbaw=GU*#(^%(3?Y5;w; z{;jZJMez(3F#lI4wIGaZw^EP6-xH_f?a0Kf*m(;5Gv#BR z>}v|$j`Hfq@N!VGyp<tWw7*n!0} zh$Q-5o8Q0%-Ma?eba$se*`>bl4keKCJ^0}#Nmy-bVrY_V(NX#7(TFCvl96eF-w8w8 zfY0@o;igc1GmvsU52hv6ts3~wjO|@YIjjWqcl*QW=ClzA3IRVDL?kPa z+V^IF@FaR0n?c}9T?p@Z<7l&Tdh>Q}J#KfG!g#kL>+feCfo5_sFe2wrfw2qL;mQ2B z0=N&e*PQ3@C1i+W{|LV{eW-h{GBF>EMVDQ!aQVbvjQF;2KSqkNqY;8*^(OvJ^1IJ} zpoZDT;jn`SiCFur*ed)kXI5$dHa{NA2!6%#Z!arr z+uHWm&gmS|=vLWt?YcpRw8=f(8l&^Y!2F6AhHS=3^Q>}B)w$~rtNzukcyGXk>%pGh zi7$P@tu2ok_86c7zXw+8ActGqW5K8+ogW3>`C_5fCGS|;i=0x7)MDPtOz}dRg-(Qe zTeCQ|Z#?JtXT`m`t-m?BMedjf+pD!tj*ZU-jZX^RTT_6Xud&^(d$Fht7Kdf;JMTBC zLJCdI_m>X8gbo1=YNH1w+c!Q;f_ZBrVK1(h=Tp7IYukfRvDU_}rywJgiriPlUuX~L zTY%HkAhRp?d*`lS4-f9ayl6>Ws0Mo*Qe|sP`M(9ub7&U79nDj z3^NF6B-YkS)5!=z=L+=mIj4g}l|jp7a;hPs;Bluo3X0$uac}iQVHwN~y!--(c5SDa zzP_6Om2m;HeWqfJcH~L9b2*;m$~(iW&!cNJrwNU^GzUNUC8E^Uw|DB44|K{bLSlaw z09Bx5_LomHs77yIS7LTcv8P%hcaI5DgpjWyP2_n`{JRMDcktoOV4*NBC;ihE_|6$) zz}40-$<@Hi5zThP)gL`UAm@ImFNx%kZ2aLuA*5OUVK;2#H8JGu$qaWtz_up`>?3fN zF_!>zQw!kD$?-dPXU#dtytIPP_jl?k@x%R9ifJyy9jrFK7bpDhmNYrPp#RfO!!t;a z(ECYqNeaL5LnQI+C>@OsQ*-j$owwlsv;@EJ?26r~1KlUc;OFcwjQ7VT_+{bDU(mCy zsQ1X#o{=Qm_0{^v3e$|{>_l7e>fuyLAJy}ONb%-xOsQ6Ja-R~!t7ez)=q@ocO?kHn z?NDPM-3&CF4SBFet?N{h8DOTRu&ce1( z%#2(4D{wOMl@w+}>OB_RdzRcg z#ds@!GtD=Pv!85gsxR-TS3Wv!y(WZzi5dIV4YaSIw5_{MMxIJr&Ho>ozA~%{_xpRa zw1|M@C_zBFb08(%BHby{NHan}q@+{nE~SweAs~%}bV>K<4HnP7zyI~TzOQS0v9tR= z=X{FHnppK3E4-TS9bXI?=Yoyf9jC*rCe%|lV2+LBYf^&7LJ4W|U!*8oh#(V!IDy>e zcAoHbAqKo_Kd{0T*OIKBJgZT9@1tkpt)nm2m6ag|Ap99I^v0g!nk z8->z(MISni-nJD&50%>8t1d@hJ6Wug1ahY&5l~*^`0IUiOg+?M_1k!vvR5W)5}=`e zAJT?_G;kbeMSklH=lg=nFeJVdM07si=;*%{${8G=#+`k_xPhn5Q+H#fwKczU#f4^I zwx*_;eff199I}(2qNd8HC_EFFy}ET9j=fZ*`C9lmNg>)Jj?+b}%_}QV34EreyL|LK zc>FhA_EyVFOs0)cvEz@Htn}AiJf^?yHR`EMysb>dbjA+?xF1wY#V^NLro`Ov8?t0^ z;kgBU0jx8J#Ls7th6%CC`3_A?-m{N*tM{T02=*FD_ZqRfXi0^&lhgWcHiS6Yc)m^i z9*UFXI%iRD+lolPmJ#PWRT=#C+tw5xS!_tX8ZM`;rNP0akG1ZL2r+yEN%FEmrY|V@ zYX2;l2oz*%+jhG98%a>Z$fVR8^&yIF<_hBgcs_KdYCqyJqyKlw&_S|(J}Gv%Y(MaM z<3Fz72gh7oF0p=o>_cJpah>QE>z=G)h*|meHhy;M2fJQyGyS`FK|k)bpr|P>THkmR z4NWa;50g)_MdBjVE3dA6NO$~@(k2$*G3JH|;>OKT+)GoUz{F9y>(C`TwG&};AnO{2 zPks9kcCp8Z?*al44LO!ZvU>BpY>s_YKFNPkp2G zJ15A3m58o`%ga;GR z86B0VFAyxO{>2`)z763V>bEqEINucR%Q{YFx3PlaQN+>ZGuE*r=Q3-3?$k z3*S#*kQDEMsEv9}B)}opf_L1`1aWl=GR+^%FYIB|-C)?&&78*sSMznTVNG*zc2CBs zHM7QKnFBa?DQH8Sszk6Va|2D{djvipp2!n+c{bn$G&!hfU%8NFFGWH|ty04kukwAR z#mJ_gW6O^=3+@<;=sn4%j2rL3_89o_(sD?Hy_C zlh-7)Kbo$j?kxnR?ka3mu(}$8pf&(X-!#-41qn8b43|mbx5_AQQ2Z>6WN~T)07Kl8 zH-*52g|G_439LQDcV$!R9d>-;uFqJ2AQc>4Y(T~oy2S$<2Ezoy8~oFke9YeikQURK z7=>UG za%-%_Q84#X@49GWGu!Z#K4rcz3t+7$`S@l3Oq-2R_{pYGgviG(v})7LGGs^p%8o zqM8o#HKjo;&y6C3-{KI`}y-fXini}C+r*yyTA1L^ClDfsSAMC zC~GRdy!h43$8@a62O*l~riF=ZmnPUxS#dlRrGrzaqOS?>DPFKvD!0d9LZBP~Bl=#@ zv`2219%;eMnI4prd;Z~<{i)f(#!mB}Yn-Xvy*>LqaWjA>mdL9dlJN!nRb70~$31-j zcO#r%CjqY+?6Bo8ZSi~GRW)w_yYP7s*RxuBu(|%#Uu*zDJE?`3VG3IBWGt0hxJ6r9 z@t4jQz135~;93mE z2HJD9SlSP6s~sYCpB%zPahBccr+(+3d-Jidl?Y~m31HZ1-3;Fw1To13)FCtAo|^*v z-x4@J^19{3e{IM5^J{;tmbLAaqFWp`6_pOi-DyJ&Wv#HjJncR6;Zoa-!tKT&i-8{D z-2$ZMSWU}JPB__v_s-G`nxkgm8mp0BT#DoE()MOrx+q7s0DwSsqleOd?%=*vK{^K@ z3%5)f>v~ncAgu+grAF1;NFx7R+se_DS|~SD_FJW{E>8>AJ3=9C%3tn))5eJ}7o4fw z{)%86Nt~p%e}~Pr*pJ2k(O%M}3!pN~1Z<+>4y~aO(%u~-aCn#YYmKMM%XVjDL3XR) z-v{eLwy&buGqK)&`x41tUpp7lskBUztfs8f>bRqWcK)7rYc(2-LNy5=E)3*Ig&Nvq zj%aauCNq1ShN48@N}&;EmX>_Hyu5)KT~hZi6jvS;|BKLHMi_O1&>YG_gmXfxGs`zU&?8yasmZS?29~{04s-bLR$cdkh+* z8GuIXMAmM>ccApETT8PM%P6g7>51KB(w@P$&E;u}rk1a*?u0#Oy?IH;ZC&wVdTh<()502&)D{otzgRr<9te7zj5A4t3E z80ctT9CH=D2qkV4?Y&NRRFASL{*`c8Xgov9Kl)4qH)Qi|B~{C_$%3-rn!~52 zUrW{ECY>+2E8SZe7jJXcnHbAIxT*Y=*xZvB&4%y8s+2|1<)tL;OmrY5V4WG%{pT98 zu=IR}l0bQyZ@b?@@>9xf9KHx-kJ(W@B<3NtdQj}1N--G59Qz z%e2}2^?x!W!p2qtF!VxQEud4aI2}ms!*L$er2wS;N><%&`xlm>f~vj(W6%UOg^C z;!nSm7#i>!5rF@49KnV>yYR&WI496M%B1PwqKEqusICA0vnq2yZs_gnITOCI=4VG2 z*@!YC8nD7uq3@sHQn)502I1#craOtO&3wVr%@FX$uRtaOHZtWEzoT!;s%2G|=~)`g z(NSlGU6JH~pINezA1n)#xy9`4|6b3<2}dQgV%>c}a}9w{p=2kJ!P|nbS{ty+Tzl1L z?T!4uuvQDV#mC-Wt&%|TJRmK8E&9d=obMLuGhJ?GLpwedWACTEoTraH7E?~U3j6S} z=Z&9K#)fzv%}m>BD?{Ug%#d{3f7d~)5Zd&Y%Veu-IQP5zEOE31*i8dP#j}2PLr~4m z@D{AHEE2U8249K3_F1YG@i1p8%V2zNxqOc@a6|Csz1bpv|Gu=jHn9`k!EJLzkGBQn_5xVAEs z-dMl&MJ}8Aaw83IRQJF2aZ_i)novIJ&7MTg z8o2Zq6seY)yX-Bh;BhEjLU*XqPJcGpVLN~3z>Fpd{z}8mE-~oKR2iqJ1sp@aNLTom z0cdv~``9KOI`ZnaItyw`mexrD+1KD1lQx3kKjN)(bRN`IEZIm_FCD=0$_hhvOw3@F zn|AXjjGdgnYQn#E1>i3_(d4ECg4DMLCAdYcV&nekP#)-L-=m%}{;o+=KD3&|RNAegW#K zoO))9ef(UFkRR^Y0m_uJuDjPVZBI7=@*Ds!Hp|GMXG0(={u9O?j7;T(4e7?sLz(QN zH(f^4%RA}%#FX#GsqHlcxa|-O3U}M|N!{}_eq5{2tAqP~0A`+Aqe;s5Y*zA3gu}Dqz++O%ZkjT6j`4xFbcS^`b>kSnC>rnnG$9z z3HW%GR|XQv!jM--G(#eOba7g~sp=j=ZM6mJsW_Trdv3PsI~%5e72s^h5!II04e{3Q zK{E0RjFin@07O}lgHm`r^ZK|4KmtkF+$cZX{8H$qmio~5*-)rWl}O3BFQ6J(#AOs( zn1h}WApMH805E)kh$*%QB_KQk2()2XuTSA3;cuNEV24u?Vy2EI;jw`1kYkVao9Q`e z0lw}>e_0P;(6opVPOX>5ko?pZH10DPW-ns+6~|HphvYa!Q&VennFKHNC0P=PfV7n> zn{$*aLYoK7l}$YP;H7_$E;OtL;A=~fZ9e;JNC4>mfNb~}^K9RNKdetLkjfm5E5_E_ zgTJQqeO5piPck=%dhc-gNtM*^@m->9@+90sCCqTmO1jBc*ZZ_am(u;dj8|yK7*K7^ zu|EnDia!O-;lDF^#EfBG(W9_731mJ+5?lccpTDu@-5BP7>Wz+UrD^8wm>|J=i~B>B zC>(nAL_btsspZHqjHk%dq-CS%Wx&Hm?fEm_nxE%c*id|C{JJTMDeT8lh^Ad!`ww&? zKWbHsO0a8iw*k4YR+7_Gr#OWDj6n??);1z=gb@(+t*UkdF+-o!RXPFter{k-zW+(yF1f2 zHscZX^V5G4TO}Y=p`F8egIk@>@&VyI=Az4wP=LJzq5bbJl4Y67!NcZpHn}$iyL3_E zi&w+3S>U;yd*8p1v$`)s?;9W%8ekh_USq&0Ph*u=kG-|W#6?@(5f}1SO6@*DYRCdi zD!iUbZrN$F>{pwjI2HPO;m`eU)6N=AeVWp2kcIyMIWqSe=o2aO-jp|ycs(mOMfGg% z0)pat!6%!{*Dd;GV5LxJBKZ9%CsAGb&NIf z20P@TB+j*_yA?*Lr`mQ~LrD+m$?oB2`&FPbFX0^!yJ$M-k&+i2%I;wH12ZDJAA79k z50w5S?Pz|CmH?ZD=-=Gh zg`m0+}=l>~g%N0HooD-IH9=DtIT;^59<5q|DD_ifu8q7|AuvDp2p&HtDE;&&F zU%igcv+vc~6?m|NT##>DkzdsZia)Nzjx6$9rI5U%I7NSU+RS?tVt;kLtq75udvp{i z*Gt+3eo(KYtlpl`lBKiVO<3KP62=-wyRVKEA)Df{rw~GQLhaAaG_v@b%e^27Fc2J{mi(d2qYx6wGQRe z909my_yWZ6dgHHT@2Q-x`rHKY3f{-N>l`k#c1w)gbQWOO)lu5I)~jprlb$h{CiUTx zU+R-KDdh%|0XCH=wGG5r=~0OtT|e;3!T8W|D|DKUyME5G4N~3a1)P@ zztH|hA7t^&lVr;qk%d*^uafAhn-FOUIb%eB7C`3`7kL#~ks{}qB}yP?b`ViB_0~e& za7SOu)J?V}4yls!Id7~=MlMSBH2nBkk!yD!;=}am^BHRI)+2JybkwKq7i&3a%v<`x z>B(Es;}Pe~=Mz~fk}?Q`Kb~ym@n;Pl2-BIb(r@JDd)B~ff3xR5BXXo(6b84O4bc2~ zvOYDe1it@RwsNSsCJpvInAUTB=UQ5?19X{R{<(I4}xXMFy^E1hWgo76)y1?;rFk;|05m< z6SI0`z%vaklPo|zPwJH8saxXO&&F@WwL=ZJ2FZL+h2yUiIkAvt-DhYOkKV&l%gXmV z!9t7om19@^D&drB672ix{hvyUJ?3D!SS%G(6DBBUB9!0e`7Rg0=*4K*moRS}%igV~ zPo^xwn!LwK{Pxr+LN{&IN4#`4agO zAy_4bF_YqaMO-AP;(K@dWZg_9kEo&OOSPXoQG(o?ol3*ZVP z^dZen0~lfyTaJF5^rW~S{zWwaDkJf=oB&4oXp!C|7bp2VQhD9^9=(uIK|;>0g9krc zhNvr@4Ov=eA1$m2xrJV(Q|n1890WF!Fsc0f^=P&+VJhB!LFiIAYRV2>)S*ZK7m5Ge zd*Vto4m>2T8HNkA^~a+xRTE=A+n5?^$ydnNs6{j*ZCzQHsmpD zD>zlk2VhU%rt6;oW-`r(TEs+83|#<#!y46rCs+LY6yWC=Q1fxAzZj zB6n`(j9VkNsi#!EzW|@}E7G4hH(wk%vje5}t=SG!!bmlzD%V7afn+bRD(47*KeHrbwCYx%l?9g zq?~sgJ98hskBp0Q?ra5&P^H(2g{d63ds6r)zFEnJFeTzrzc59?|!}f+i zSe;Q^sJySV6=yFcoUgCL)!FD4yYg%weR7Vqd4x>>H}0d57O8gDmb#ZLp%`jy>)l@% z9}`>`g(yK4#n1@vbdO*Jpp6n$HtT=FTD2M z1jg;EC;lAsm0Be?pt^(PG|~BFEw_l8+S>HxWjaJnhW6K=PcuM&%XGEA$(WSuObH_u zsiPP%emP;7KXu(7@^n=m_++b+bbTsx8bqYPX;E@?61{1*Oh zZ)0cKg)0Qr*_mRddu&F_Avxjoch7DlM^Qf9yBEB}+>%Qv}1wfCs1^ z{qtr+=T`Cz|Esj)+aAePBkhp6ZS)i|D0TO09beb4l|*XOZ5F|qjvfuSkU&ePp+2sd zUgP;i{X@Fqmcxgyb+^sLjGf(h1&D&kIIzg1~E2Z=d+iu*P#*c26{oXWXG0wC} zGX(s*7`YVO0dEFuHvUd&-+cZb;|WW2OYu!qXIsGWsH32j!J3f!XUCKJ|GKLw3|=_r z+b1CSAySh`Cm;&)1uoQ%-h5Qj#Tt7;P4!87-Ww2C3=sKzSwQ~2>+!7Meg8@-G}y4- z3eFbl+NdepX>!EJpLHqcsgF!7C5aBSz>~+;01plF-aqeJhtfAeGfQiuta2zs%K8@| zixqBZzp*7;&PgC@^V9#{;+}H)sgN;`CJ{%=jtLFTs1k)7Z@#k(=wnKtal3RAY8I5jcGj~pwWc555W$P>sIeJRI?d@D zQl)}qE&$6D7(mA^(2Ig)o4F@7oy82B)WdcMO**(TuGX0%gq!#+;XeV+h2$@#I`&{K zvQKsTU%GRPgazfBf2M(k0F4AN9tKKibzhYU`Ls?oRY}L-xyo0CT#IwUxd|?e&4JYY z;xj=KbL-pwh+I}lfSjU&+g6<#qd1a$z92a;f|?!)UxZsBcwjn_CV#URsuTuH8OT{D zVKf_wD8+a;_Ir=rDQNiQP6;4Vz3k$SwhM+yks!{fM_i007}(@47L>cfXMHl1>96Q{J+o!E`%8Ug2h)GNi_U$M$5Ac_0VwvO;_@}ZEpQX5 zt$B5&wH-Q0Y18qN+4z#Hs3hPu*__#c8IQd8J`~~dVQNXH>K*pl)JO&(QTVOl{5RZU zD9}E4*(-f&efm|YBRNux6zg|2*6bgW4c)O#V0;KO%!pjLrMml~?C01cP4Av90wTHm zH$DHdQ9p{+{&GCCdZZ;12C!N55Xgdt4&6ZRlU;1ka}hGImd}%Ogt;@C6uy3p5n^x+ zp_5^fY!qov6E;U$X@pX&+=3PM=86cw%G~Lic2Mk@Ig>RhWo7OIWj0HB$rmdE5k=vq zE&jTvNiz@Tr*)7ZfD!I_`?oz?(CdER4=*%*GWcLq$&WN~n3s_?UWZ{q&6F26nvu&T zgw1+_#Mkg2IA?30jK=)=eFirCgxvfB?VBo6t z=iD&)o9vgyjQ!-?_~pFb|0o@t&*Xp%vf)ksSNcjfB#3!;*`)yZUT zr5T!~-4bEnK)J@u=vBjU)L67lACEV#hK6M24Fb{VRq-VhMYW68E=R9lfzmUG*E7CF zk)?De{iF`Y9~$1;nrXI)9uG#-x@?4g@dXBir>D214Mn3zL6P^bJ=On<4TB0=(BaJAR&1{n2lG-ZGF^SKaW zTBFpUfnv1V{~Pif`9lwm#=`O ztn7W6MnSg&tZ&sghR{UpiXXup?Q&S1u#e@}38qBoAK>F+D zO(cj_^+5`GQDQIjzU9FP zOE)-kzKF3g$*~mSQh!d$a<=Q??x{3eNQ4RfkL%u!io`&l*(jr%KL3Sy8A0E}?-Fch z>+hRovWJ?;$UW~POLhYWe3?!jE0lLQb2Ku8D@$G6QnC2wXZh6of05F$dNNp&RjmDI zA-3ltK!6)wnp9ilAcVX861RF$r&V!($S8Pg_et&x-uTVgy>|i|5wosRtx0Xkqu$wT zwFEGcYXylick*d#!CuZxNnEQdDavpqV$CD~)bMXVaN211XkbKC6`MAUG{N+(?B;mh zdv9x%4_z1h_jn=-C&Xegubt+{Ha)v;FNJP6)87&?lQ5eyywQ(xk8YsLwx1|E1m@BM z61nkjycAZ#Wl;R#K3=yGsGRC8erJrc+zeD+pAnLE6Nz(XN7CL$bK?iYUc(Mo#&M4< zAF>nxn?`2cnr$A0x~ohqx$-~P#bYMhvt=vVQb6f=iB$hAz)hr@-luWqz!(N4m4mIY zbfYgytDfV__hxhVb-ia1iSJQ4rR@41#W{y4YPuvn2Qd5ulKmBo^<{$Wtc!&B^%YQ# zqv@=+X;xGBYQWR|BL(0j@Prv`bp1Va4TtkuM7SiGH!}J9K`BiS`$^3s!y-o4N>3CV zOk`!g6AzkrL6{`ET@&3T;N<&i1DUQb(GZi#AhNB`Q&fjD@d9~d^$n4NIytBBO-X8y zF6eL*x^bXOo#2YVZE-N4RQV`d8xyBkykXL zBzfffmZ7JuQ3$Of;W*r-R}yy(lHiCCgW(Og3$oz7P}wXc2&c$B@sh0t({GO8oB%_( z`+n6ni!(GUcE$>|kXZ$ohmg-f1YFoQH>LmbabMMIRVjwLX8rM42nw-qzhLA#B(CFd zMbzQHZp8Hq$|vG&wNr0-*~c4JmNeNz`?qTp7C`=Ffxma;s7-t?M4 zu~e*6OqB$s&0;c4Z+uW4_VsmBDIWrOWf zU#pwB`609=!HTBCGYcO=Th@Fz|EW&YdYJu4*oK8R*UJ0`UmquTkn%rTZy zr}ZW1q3(*;)q!azq2tM=^t~@WKgYR)*dBuq6Cl5p0GjWm=6)+UA@nUf_myfXYh}|b z_*w4B8NZ+B2<@M8Vn3k!oYvTkEC>$uo3{%t+8!L3!i%wjzj7;*_q=WGje9U7$9ny$ zk{;zid$C)?zSL#8-hOBJB1Cz2%nGd12>6A%{~i5$us227_C`PwyR?`nA1&3jc>~hqu>6#+prR=vv>(co<;+9olTSY zRXNQ(>m&Zsa!BJFj1EkKUyrW%>E9PL!#NxLGcnq;-KVh1AcCiTU5tz9{Nna6!RGRV zk?*H1O)wD1(Nm5MqOYqo!t+vQ=S(O&W@`{m zfh{|2tDuYNe35L)&l)9Cw4|^(K2KjBB9sT3Fb(m`Hi{6A7pWhYsD}SIJ_`pmEBNpa z(1$QSwz6>x5#-Gwm5j6Flg5FW%E__Wt$T{}EIy881ZkZ}p!3$FZ;1k)5kRN68A2u= zBRQQ1JB%^kQ%0AF%3H$GRZhe}X|aJE$Quuw>0kktxH4E2w^9i~z+Zrm0JhP4)xwW; zCnY*{5>h%kfbpjZRXELI>Yd7SEZrNb8GkB^V+skY^&GU&m>mkWNHzWj&UA#8rP8KH zkdJm~L0vF$kie#3-=lYQs_z*xx6E(pXpDtbM?n*ggh|aq+kOIC7AOfsAlB1=R)Z@F z1__SwSIlO}gSSk}QsxF@fSLEdXgJ^*oo@q`Am0{|hQb>RxL6%jI_2yu31No)Q;W{w z!kfl;4qq7uKw-NnJ~>0?`ZzUXS$2&iLUJ*abE4l1w?4&fy-TCy?z#w@0-^`QN{5e@`hH$&ALi`|!o>*|vZ5Le=0h3H%{> z<~CO>8fuokQrK#=k`h&oqtc57UD zdsg;lABcl|Ro8a%y9Mj(3hO0THyrfaSgfGDIytngY36Wwk{W;MRA$aT5cH{YyX_Qy z=!38~lSh%#B3t~%pM}zX!oPak4+YW!?g_@6=b0}LR+iz{pjG(rcHAK*J?EU4Vgu$c zhUCRqO+J&df`g$skj$fcoMz%0`ts4AWd@?|yA5`yuMg)!10s^EeH+zKaws7e(>6nu zkVB&Ran?$aI#ZG z@xRn5dOokV*K?OX4%;7?Y4rh0p5#CHAv_R!Pu1L)m@^oIM&(p32xN+#-{8nD}xIdtSm+=&7wVJL+MZu{h($B^318Bn*9h|3r7cfF>aL+Dp zfjo34;k#gYR14PWw+93E5s~C49LbQ*Ow>m+osY@Y{;Od*lOe?e7+%^L z`o{ZYptl_Ax^hv0_b(9d&mA=oS1SU?%LwmyuUBY@6%W+hy5lj*HNs@;txJi4uxBk7kL>R*X?gq%rGr~zJc zGg<_XwJ>IbH9&EaP98osm7F z$m7)?l;Paj@cDUlWl4FBvH7lx6?^Yc)o-9T9w%T%@av67e<~u-$4^cju2U9{(nEc( zl9i)Fg(Si}KuyP(2I8Fiej<-)Y>KN5Kd!DWh0JnQPqUlj(>w*1z;58n6pf8K& zp|*kWPjpWZWq#GdsLj4y?Zbu{z(s5TexJ>TBH!~XSh$#qRG~r|`kl5loDj%YEuvI6 zuWy2NGJVIW;WGB?{fYH}?s$=`wJ+#OO69J~?2J{iG zDBdc$i^aR)1K45%yK|k1lvbuTIxUyv%^Sb00sbKKtBtO6!<~jK)WcUk#bL|BE>o$8 z27#MSHSx=m9%Qiy7W)Hn1h>d7CK8Ne?LMI|fK7;s&WxA?!p``UJoAUsYMtNG0jC41 zg&($La(P!eb*+OJ$tW-I;J!7#6LjdVz$fIhESiJZRmx5KS(gcJv5!3b(DAcsFy5s# zj|$@y)8JuNgz(b(pJMd`Mz|e^d8)@Ztf6lP99-<5n5C<8G=%64BsMv6{U8~yNQ!_H zkube{M>l)eFE0gN1&A1>J1*DtC~>?X1x;sNOCZeK22>HTPGclPGES5D=tV05T}o zOvw>;l3)$$1ks1+r53kVS~21Ahu8^)+(w`CwEgyW)=HE+qPq#ra9?M}@Bj#{m+S;oyR^$U-+heZO}vB? zGewhEFTO79CsR@zv)QDK4(ASuxm_X4Z z9%HqM@BAZ2gFyMHBfX{Xw&k~y__N)b#e}G~pCdF+D?k4}#;xux=uYa<4kBZy(Gta| z%vY$qN@7r^`%m#tE04aaAyH@mRU|7iGg!fl!wNZwfbBN6AC z@I1gQWUy&n>?IVL%CqySbNbn?Y*>cD7s1hVu2R|_;FtmRf>61n)=+Y&xL{T5xARGr z8&?laf@TA^1+~_@R;q5HDMFUe$rPK+Mm!J;I??l4eS2!;CpIlH#fDpsbWk!SW*)c$ zHkp4u#b~hgNn|7nexYMT3dm3z(KdDE1qOWeznA+`CrRtH2DMeg) zFgVI0My-J1Z!9|fN&qa-qQ3h_V%5ez1NmG%4XEfTuz*saM$9f=<2d0U3~lob?KY_$ zKlGK}X^6pfa@VdLyy;~;+Ba;ml~5oHQ0SKMD)ac~N?X<6DErWWV=8GUj3XxQrqyEn zn8mROz_J|!l@ zcyIxbm|Q*Z$k0a9qYp&+wK!Swk`7=L`-1;aGn887D{LMTn%qg@;+PKKu9)I+b@r=T zp-);y$6r2FQ(l8nXWpfWf*c^J@htlASgY> zaynY5aWuROBj{y-2046?>QF|y^c`}DbcGRJ^_XTKTNKJQ+@A+mUo+h+`!Qj*n+xg= zemc&EveltsS3R@r9f7j>6$PZ<&t4{ovx?*(t`zrKtad()p$fIP(U%7pdU@|0^v$8U zu>PRSMf!sMWkDEL#SzkmHK1YA8wJa0=h+84%>c<0tMM@)C11?xIyljA*>%+HjsLTX z_lL@p?&jsM!XnKK?+DM_EGsxk)$DH83urBo_10-f8^qc-Stm zO2`Y$8}HrtC7CR0eCY7vWjY9YEZmC1?C&4rL)UiIo`I!1Es3&}|LJlaR_Izw?&g=^D!>_pmBO*lWqCUjmWUZ%Xlpg}BHcP4* zk~SvdQ=0HT9v6_)o#fzWvKY&aJrsx{g>8!LX?^3iO)!bGX=XZLHvP)V<%Jh;H(94Qs^KPkGj3o#&c@M_CXHU$=v{Wo0T5 zSUpOto>hu?4oh%dsA^-thhi|L4W@2+u{sxkE?#1FU#tysi>DgRl>9UK^}gK0Zxm<0 z=44FQMTM!@7`^A)Z)1+WM&!}>hF00IZY<7I7iVojlGS|?+7PHRcg{HiMQ75o37P(M z-<2TuuTvd-3jx_2z?5Err) zIeZ--0qhEDGTc0lRtY9Tk)t1K$6+ft`hV-=LoRIX?wz&J)j?z_KPuLWtZ?#?XXo~R zA)CzITB`8==Q@3$1=essm6Gc7%59r4m|qC5B=H1anBGO`At|r$rHbM@OshDpg?JBB zR|^fOiLi%(Zt#P2wUYL)F4diyJj$a9y z#u&w)Tmoxdj4~NmyxXZp3v86yG2Z-d9ELbwzG!N>5qE45Y@AvTZesl&VclH^tPhI^^dDeDI*w1t zgi6tZ6X4%q3$68g;{UTwNke~HGI{Voe#8&lHP1#-5!QVLclsWZ@YeL`8?2a(j#}$~ zE?l82Pnp_K0|F}bXCbVK%l$9Lq|BuGTU0iht6MCv)xq?qcto++pbx0zXfaG(H5j%U ze7m`Jz{67&7u_P!ELkHU`O?;MMMKJubOg69)qO>Oc#c#yuu9tt=S{k@ zs;b`0@Mpa-9I;eI0^|x*`mV`QIfYn8^Hp!iWbat&uCi1M^^}1|uJ`^g0%)TLuJ#>{ z%58)-l2sIQrsqmPQn=c@BZvnFyX+LF?XD-_2V*jD220 zr@llLE|-ADagvdkWIyrI0wx*y#^9p>yOZp<)ZxU1yIXVm=$i`&mprrb+0Z*k7) zE;Psg)?OF@7=DNA4^$|Y6vz$zb;hxdvUOeZZDV>ej@sG7&Ar<=IY9Ybw0rd+wF=7A z->k4pGWmMGXuY0@>J1iX%3qgMV+y@X>C;-macl14a^SwdTS!h0n_ttg=+$hg44HZa zLgTQl)L-Nw$-w3_UhY1K9lVd>EpCqv(>P=3Sk9nKP%MUif(YF-K4kMX$?(=D9XAelnm6PCe@X^eg%eT6=CgCP&4<{$bJ4l-CE|v zyES2*&`z_U{jx>b7KY@R!z78bmfmjCpd(Km4Br5>Yjae21?R_f4OiTAeRvI97H1t! z=#0ELMx(GZ_2Y{ycW^V8X!EAE{xQ7TeYci(^z;qz4R-tX1%z)9WHvkQ`#lM*7EQHwl7v#W!f``QtQl5p&x2$# zAv+Cn($Z-8__qR?%B1V4@2~Jaoo19^0vkc0>6Ck*;^nu);VI{yrI# zda`-v=&$dn7SwT zoqjTTh3C%ERcwpL==@9dG1u^`L)_>j-zn-GlgGx~lu+ejp&e1UE=`P_p2oD+bW!rh za&Qyq3W7rcrXIIq4ufYX$H%&1e#qV>_x^mn#rkpPslLDOaw$C`6Eser`64&kCDJ$Z zxe1})&Xzp0)X0dwGozhMuxmf=z;a7AVHLk0?>s}BKt^IyHPMb>D2@3ZSQp#w(Z7#_ z1x1YDbNI6UT}hi)5qAR3KR^#!Qu|~Q;ekE*-L%uayMf*Cm@=b?AqgZP!Y?)bDVcd@ zEyaov-7oOz*G{~h0cqFm57h2F#27++MP5%2A1r$bBv*jDpeQhqjvQ>7&l^!>A|SV2 z|5NY2c^5G}<)?}2{fpj>-w2Pc_B&(GZxX%vzD@rC#`$1q5oO_Ua&C;681zoc5XV`j zIK@W0UTs7*p!pGVaCa_CB#$kl5gVO;QdHM1Soc*WsmzZ@@R{f4zKYy3-oJ`T_D=A1 zC}YCo)YN4K*Fq)1Q!*?C?Et_o`GzRmP-DjIQMR1N{S*hK+Y9!kRw30Q)n)gc33*5S ziIXV=Xh5{FRlNWuO^BdHHUorT zo9K-B>yT-t7|Z+~PW?rgJ8}+2&?el27#mPuM}@0Dc%xVZm22bcNc)tjXJO@Lv#_Wo z663nm_kr=3`L%sh{+ew7#j$RVd3h<`36{x#`pMY z15~do(rOvPP(I0M)ZS%=yZ=b-7m;EYm62ylGFcvxQoTBnoQXqyA$`+NJ|e}Nf2F^+ z)dNQWE|(Y!Psd;C+~Sx51pOk6W22g_bZFtl(!PiZFz4c@W%g%5K@+$w<7xJd(YQq( z54tFnGX#9&A!4eu_7NAgkN$i>fAlBiAW#NRSvNt-(d6uNszRQU!o3%J$O&zGC0NM7 ztLtrc)`&QgKv>{G7;SJ-KoJSL^G%Rf;fn`N6B$K;qeM~n4X8DWpr>&Y=;;cAFqC4` z^46e@j1ac=Rh>Xrg$$4SHiTO-#&?%4Anat5^-+3?) zJvvlq1Y)c?y7VPu3iNmM76{hG@=*3~5R{jXtvxm8aZAY+v%a=B+G@ABu*WFDX_XQ7 zp}cyQN>j<~(zI)c@_ZpFuh2`(r`BwcjQj!n2&mQaF``-2#DsiXxbC}a4-FBFNbb(W zSGF$ueysZ|T$V|e;ux0Ve%-fH)nn#skFmViGS$#?z}O?ALj4lESDFR7>Ga*(MiL ze}?%f`+W;{DqoCJU0x9SE1g18a<|5dVcS;Gb1UMQo#4xUw0JwkE4@+a6m%&wY^~FL z(?E;AG!e^yi@Qq3ocq4hRoF|apPcL>`aHS;IMn3e|CtpAT5+tuOLg?jLL=VNx8-q{ z(Ya{fxu+jH$WxuD)kQPOt0&7B`=(G;``=HL7ui)Sk_qa8ZMMtF5t(b%Y2ke5#Cp%I zxIty4T>6KwJUO!iJlR+4b7>0}A--6!?1&uIWC7mea>`Ug3zqyyfl^hcyT+8akz z2zc2hk8#8Z^+6%rZkwa!t4AcuDNFwKoW738Yylqaf1i8d@aAfFMhu zna_|R)EqDs*8VvBD8@O)1X=M_mAEu1YPv@H(8)A}o+dWO@Nf0Dzjm>WCFjp4g~R?V z0C`2GC;R=%NY3=n24fsFoFB7%dfvB~upA~*?qnE_R&x)pQH_nJUpAb_;_IIN_TQe3 z=^cV&QSqO#c$w7l;N^E=uwUA0;7D9HqkbLlt~k!>vnTY(kZnS)Wu;taHX%*U4VPd& zYORgYKJc4~SzPzg_D&&9(*a_en>D$q!aq~+*&)8pu*3&^Me!d&0M*kgTstK?D0j!#e>Q0+5*KVvBS=qlOhJS-{I^EjNjngZ! zs)=o7Gu-A^@qG;Z#?s@ab3S%-$T|zmf|SWmE&HyM5VXrg^5*nSgsPCIK<@fG6`o00 z`E#W2tn59bEON)5#jL;MZo94@!k8Vjf1JYxX$Rt=?K@8 z5meM`r3P1|IH<+q~kwqYhLBNCNsc>4y}&uL!%u z*Zek4*6!j`14@G}rK`9M5*4bLzyX5eggAp1tnH{fC?;~zVA7xKK~w!ppcS#l^g;ZW zxp*-$B&p7vJu8y%i}YrNgHn3VHJIXtqHpOtKpuSwp(%gfWe8+$Lb83T(SewbIYK`r zBoqI(*9-M>%{R4xXIr;B%Z-G3=76C8fd$4I)a>%(7=G0HUQHoE6=vYdRQ)iHmi_?x z6&h+9!sXAwm5qG;BR5}GwccpQ%F@jLBSwH-FO+w!jsqSMsVIvYFS#hU(a*xP@(*Kb zHALkGcPNz&PN9)in^$!f9l@NXBYYi(Kx8?<*Ifa#-tt9C=;N)Af1>r74e5mdGhb{3 zJ2OILRBta^$rRXb1W#7wp@@;)gXB^!rkk%i6Qd~pJ+5_EBHz}IKAD?u^1mK(Wx4j= z*P^+Lmj%qDV18TXC9U+5Fxsleb!k!%xD63 zGq#?EA-Q|ge4OH5+Hy^k9cgJADzOKH1teQ(-4DnT5Zu`K!uo62ykjC}O*JF&gBFf~ zYMBd5Z9ix6bRKA(vd~yArgI#2dnx zcn>tIFg34R_w7X$F!a$I>;;J%f~yN-DrpcsDeKSUEJI~4C1cN2{s?-e1U?PV_2p5h zTmfb4;q^!nP|ieW054EZmkyE{Ml*x+vvgPrzC=wvOHt3qQoje{ceIRfft!_xce9s?s;bL zFIXn5i@7_b%jD&~fZy{F`1K{N8G2!AWo1GE(s1WqJh6vY3r9(uRBUAI)sCJS>S@X+ z^Q{NB%idfCgntvDCe2>dl2w0UeeRT(5&R22m-|@t)k8aiG*xMwO44D#_aWx0Yck05 z85MQ;s#y2xSQze@@7mV;A0ZlIJpRxNoR0n*}*npPo6kDejD>a z&yg$l)|US>sx$*?D$w%Cm&YTVJ+8r_7iTs{t9?;@ldu-zi0>+oN+lhRp(P;!PgT{@ z#tn0Kg?a9>?DtpmqEj>1QoA|Y*L5X}Ve_GLxyW45QKyF;^%??TyKAP*cVsQX92-afkgCTkQQ1H#*&gP;I6X(Kej~V( zO$y0t?g$;*e*zQe^r$Cg|f-IU_$dCi-*E#a?DW-Gt8AQ$gJ-4&*&{fyTykAUW}k!@2yyi zc`3}j!>gdNh*|CPP06DCfEK*?rLv2ZGUVVnP7@mQ<|$Wr!OPV*MDjz|^z_%cH}7;8 zvzCD+7eh3m}j(6_%-2-8{HqmJSp%229)d`>N=p&XWGIvWg7=iyLx)$X`NBR@i zoq>9c(H1C%m0J9qTYxn@X|fjQUh%kU1iSbTzx`&R^{rr(vo`4k%kAq9(OZ?8 z_yw{hKQT3Nn-Ys=5v#jv0i<_97 z4@IW2vv<<}S#*EDe>f**IouEkIiu#+OHF$x$wxR9#tsrZS`DW6=2N>9DIBvX{bf48G;F3|v&B{&+*Y-b)o*6yRXqz*iVjc#5Q)Pczw~>Zl z<94t11SskA4NjzaIQl&5q<_Je=d5*7al4h2)%HZ=ZzDy?P=IB>G*g70=oU84^@|Wv zcDw{)Ta-Dbb`cLD5Q-Uk!&vb6{AB8Lz^7z^?~%b*;l=+b>%VGL0&nf;sd>;ndp#tR zzUA*26-Kk*^4`ScTXpzrM2Pt6X9gMR37@gdQ%&peOd1_Apo}kmWF|zvsY+rPT95jP z0&jUVO+`D%M(DtsGSGAl-oUWOjbk{csPkX~8qT5r2adk9jcCi-gh<){%B_gGZvVYU z`aEN(e`V{9OAc@)kzigv--=8CMIynuX+Dg~^_@Zg7FiXE$Z{^>#ao8$c!sijU5jqA z8o$yQAQYm0yT+1BEH`#9U%8a)1ENkNvFKg~c5CvpO1+Xjbw%~InIzEB977$+bVI<1 zuj^zenO!Z?1r;Y*4sNbFHOE2X$RH%Yt!Ng!>gKp-W{Kyo!b)OoknaCh_v2&YQh3(q z@%BEL&ecTPKpH}4(iwDI)?5ZrW2+?Aj_el zQFDPEZ-tPam0{ExKq^_;w@MpP_Q1ZzzgKS#v8WfJMXhIL?L z1kWc)Z=o97sZS;Zy-(P)9y=N+yoh84D{7_Jt2k=wTfB3M+pxKm`LMpBZ~M$ZQw&)Q zxflCq59XcYQ(GeRoD^<+NB3_4oa{1Dt;nm7@$=PW~;dpnOy~KGi=fnWzcf{5IS!$H{LHKY*T#(NEMTE zJ5C9+yNl5@u#Z=7RZORzHZdo}e@pM(n#lHf?4ed*nW9Og=aX^zGKHDJQE2M(MrHXW z?BV40(BT{^ye2)lg)-yv{#{F8DkKvC^&rq*1J6YtiyU4v;iHCTA&#Sr#X~BCV&%lR#OfX?Qb!(fF1B9i<5-jbxGoQ%dF;i)KZM^z zzKZT$Y4%8eGFG~pcz?t;#r9qF0gb|jffva%!mwVhYdXZi8Zr#me0|=$xKkCFAWjp^ z)iVemW)=O@;YJ1NXakFPk)BZqnm$1El>v!@5O9JG3m#_$%%DKi0;*3%&&e+7?pOu=N26~8j6OM zoPaiAf;Xi7P1o{TF`5}}bA`i#BD_@9Hil+;(S-KYklb)v<;UW-x7MK(L zky1HQ>Dl1$ct00oOdKyl7^zYppGnwn@GUeC&^1RhpV?)B2@c?{3IHZJjKP|ka0f94 zvu<;DSGoHy7FM1Q!_=iwQ)iIEggaH!r*O1A4BmQqH{&CQvALAF6`(;P9RTiUc364k zXf-xs9MKnAO{|?Z?XiMUKDpzgY(7e=1X?*lHHO{#rK=fcr2|TkOiUe17CInJ1Yk%+ zD4C(AjUZu9qabG&>%oWp(Do^CPedw=c78RiitxoaC`(V=2zh)klJLfDf8 zJWqVwW%d5Pz-oYVmujlkE!-cX%y%Lw&urdobd%cJ1V#%p`pi259FW}txia0|o`1qZ zT))I~mpG`rIL7S8@3N6W8hJ~Jk_yl<=#7?9tu7&G{@wkYRrs?|dSLk?wslxX(EUDh z>GA<+H5|Idj4qfyC3)YIT_idJi;g@G80$viKHKPXTMbZrYm{|-F=#*z)IY>f+f1QH zVW38Xy_s8?xH;+kQ19Y?6g+%VJ`df0N}2dp+(ZboK|&gRGg)!EFX>G}QDWtQm;AXQ z()+b%mSM%F%_x&B$BMHNFU{ZtmyiARvo(5EVqNq}D6^=V)ySudb8YKIXv#Cix0DuG4H_RSu!sX{ufKCCJluS7x55AO z6RCMw$Z-c#K9q@z22$n$b7okdsJ!2VhsEmG^${Oi%@KQ2laH{M&Qs^V7q zuqW}#MIrjL54JPgtZP@F>g9Kz=>Lcee&DRYDu#S@w<ppg;8cxinGPPMe2VP*$We)7VyOtT55 z@9wn^G~Mp6HA@t|3-+1rqiy`HE;wFa$08Ubj{MUxMn;6+0XD;u;d`VCtu9K-@>KJE zLWs?~H33oGM(z)f6AcwRqXzCP9@D}>+uLuwT2JEGDJfjE%{N7mW=B+)%H{XCc_~T-b~W%+ z>R(h91C_$#suN_07n<4$#Xxu;K*MW<$FS`am&U6SB1(A!_z48(2W=un&{p~*m>PLi zgCwcYgFf-=Zjo+pQP|sz0wV~qkwagY0lfh0r_YTJ>_>nKUpAeS&}}+yVdT#Q!<>I~ z0_d9*hMGw8e(=D{3TMG!)?59Wv!It*iuSuj}vMp^`P6^63brq?X{E@xiQ8?3u= zC&M2*@uV#p>=`Ki-yr3^B<|QzE~N?S-HR+hgmUTw@8if$)+ak#*6H^QH_15dhbHhL zZ$5}4i-FjbEHuuF_H#M+ist9fo+(plTX1LHQWU*e5W6vsHUt`SYW?v^bjM;TIqj(w z>u@5&+-KG+3Yx40G|8w+nMEw9YV-k33E!5WA-)p%XAQ5kiEj4wzmB<2EGSb+NXwirlK*4 zx8J{J;D3sFmc2^m^_%5ID7S7^(bSbY93UX#VEQ6QyBMdU@@0(K6rS{VIJ^mQcbyV z-b(dbB##S=v0%W338(z}vr%vwX+BW>aX+-6rdu>!ojFtr&S5B&^HD;WlAFQi!Vp?m zKEUqHgX?{x>3<~Ux7n9~h*L(Smo18}Of}4C)BTzana?8iNYR`vD)0WLygG%ukO-f@ zmGnL%$t#EX$Vac&zcd*fdYBOY;xHx_++-E`H^f0R!Rp<2JOT7>)?%Sy)mi@2$b)q9 z3d^ynH-qY+%<{4y8EsAzB6}a@l^=ZB{DL;ao(AjyTEydRG1GBZD^+HqDB*t^&rIli zQ-AfV3X`(Qs-=<2J)V$5A0YL`k?&g##9F_`2w_n(>O@cIIFR(vK+il*4Egze0k!^1 z%jh{LdNu!+Hv8C}72v73(_6>M!d@zm2o}2vN8UBWbq-fCfUW|Nj|*d4Tl|GU#cxyj z-VZclIPbn@|u&Mu(ZDP2va1dKJT-K8dzF;d`O^EM}9NBPJ8Y>7Tk5uZ*tGBfz0~J25zl6lzR>8jZr>tz#+tg z&r`lqAg&T`Bc3HrOqbT1HW-IbzNuBHy8~{CLg^3*A+1K&MKBqdl&N&|ct==@4T&&N zcjXNl$=-+cjX`ag^yZsRTelvjJ|n?T6VG5MA-8?3w&=1M*mu{wNj z);ZJ)xMDO<@JB!0l|wm(n-6;BLFl>L4wVRipB6vCC_9ej%>Js8Y=|Q*0WL3>iJ-&c zvQZD2%vCMR@<4hH@~Hi6$iTFEwHPE9-@4-*dq>5ZBa2-v9Ub740gTgg(`ay*=mW;p zg4y6PCaNH)5eXlHTQHGRT=FHcqeNC{qs)Dc zU^?CBdIO4;S0f@5u~#&)S8^QC9f4g%YR;CA8o;ve#b= zEMJ|ZI&fnK&gW`zcP|#E^oyC+kgSC!JLBw{4#~+LC1OJ#)R!KhKb@XPLH=fddK@e2 z9=g^y164%+3uiVzrp&X@==c#_lP+{Kl=+5Vt`{Xhr**e9%Y*3*gR2`F zZzFws(nXP1{B6}cdo6vkl;K6Nd41ROgcpvBnwz7D5p+$Pm#vx#~wNYS;4Og z=nI{9zp@bXqZ4Q)CRz{0s(g%_>l*-M?onAUw&=~u+LbfL9t5)<0?*1L7U<<7?#Dr? zVXI@xz|a#q+(H8D3N&W4Z9^=~K|Z&3Wrby*`3)k9N!#QP9UE6}i4FFbDfd6~3alUQ z!N4P)%52r!Xv23PPJ$puJb#n@yeBE_vmT>&%k{64t@fvssYR6>HKg0_{2#dS*&{Q9 zbF`<3ad=;LS7F3VKd(l)`r^Waa$qtjYcL-a_I$uAfuSr>A@cQ>ad3gV@^JvstGJdVb0LmaP+x z8H6suMLn-082)>at`+L6l@+0io1( z9p(SSUu9X__9CsI*;g$Nc!Xj4um&)!T-~I9`PS_I`X=jZ8qeKFKn>D7yLk>JK5}VW zt#w@*Ur3cX0&~T2M2PV>g_k{_v3jU#bXb?s$y80kmH1|Ad zJn3+bRfKR=)fTHwSue7MV?}dcflpRkHcI#uckm37{WI$$AX_xd$^1t7`#|a|13{b= z{l~&t;HN@FMWicM6V2narQY zHvd0rs`#U0*lb=lrJhqClfZl-e>j z6nYF{z8{hX2LzZ?j?OKw1@1jt(5wA2EXz5Uv^f%)p3&g|Vn!uvWB&_#VHhBY8ke@k z^xdxYeSshXJ^dCgVdjM!CaL`omOQT`cdku5Agk`E4q3W*e5i6_a zirCZuAI1={AhXAbD7!a-95Z7A@<<_aYlIPecc+RTAAh%G2$Ema;Kl#x6H^;5xazsH zB(oEtWZGMo>i2Kc#ZxHf{k$)^l@SJ}tgCwBPAg#Fqh_N{_%PGoOqJ3xYuo&%xuVND z0u4H5!ZIi4qF+S*lrOrVmUa-AVpXr>8N|Fk++Z%-jvl!$WuLoV(-aEd3>`Y2n*Y@i z;50?h$jif0jI&_-XQ;wz_O~;l%fy{XTu7r}+&esXoK8Vnna{4wy!K!7Wt3Ivz4Tkg z3~L&ViqnJVx~%?z?-)G(3(u3wdM^&vywjpOI@NdKPvN2l!-+p6a?}8>D+)GMVYbox z%BK-x@+xVe!7}`DBNEzW``%09B!E+w7xUtuVS|u$Y{IeKFj=dy7Hg zMyUEL^IjP9cb%^Ww#{>8ToLw$-#M%ErjBv+RYol0SS|jGl-uPKIBDNu{0~yD$1WBQ zqQm+BL5DLVxJwnuJpPN6r%vAc!HE_5A3WKKx;zg=%C-N4l>c85@6xcBl(&`sgOvZ@ z3(?K@y8;%S8K9K9s`vkdu>bFZ`AL5Bm>~$neHS154fLcnobSy{#odu8FG}9;_&1t9 zsRJ?#GF@0-Qaa{wKF7IM#V!DO0n)mS^_*B=|2sa4C+{7m20?0qA|J>j5JM8tJLC&{ z{G~Ir%XNWQTocXGk~7Lv%l;?RK%eJ-&xrs3{_I9WHp>!Ro^%+y}zIB)XE9fb@w?%SpcT{yaY z6cU$h=vHjWa-$%#(sF!UtCazPA03ZksIvzyVPSJOX!mP($5*i)9t$f&W+%epmJ@gU z=4{iNzdIXjLGM2M&ZdF$e`sw4xmMM)l36Eye;9B@m6ZHlA<)@1*m(Gp>5c}3 z&Vz(6KMi}<#ke~DxZ(`-Y3;-aMd``tF>9B-y7TX7NuW2JR`%uH%I*f}YC^Vl#PN3< z74*AuGz(Ph$8AAmdQPNg1*4f2aoL+knAs~rT!J4uO%pj|(9x$yCgMIPlzzxm!zO(m z!-Bv%_*K_9D!~_YLmCx!f>(JS0pF4CjD3Xxvqxj0LO?uv{KGuz*Jkdx``Wv{1(jhI zDvzx`=*L@r>192EVdqE}=wHa(gOPfZs{A6OxS70M#_PIrz&+nmI}t-~ns53GZWuLZ zZb^Oq&g%(I@)#=NPlW`A*GLdT;N-1#JOw?kkF7L2g;o)s!d)oh6aU^cg{t}v#Bk^5 zg-T&Qy}p=po1b(%EUyUJ&j~&$>s?N0Wn3uSQkw?Cn}N@oe3a4vm@=WA!) zTkh%_mvwPu&5$}UNNc?Ct{@%V;d^$gJo|a5sx?)$U?Z!prOPNW4q6}^-hN&XphmqW zc+U7Plfk5eIO1Z91Cot)Kd49aMg5$KKJ2zt0BWfi6@d7a=!SWKHu&Cs5cul_c>(OS_ZGxC;^DfLPZP_C% zCh#8byI<9BoWIrIrRR1c)XdX#5GYso!Q#17nZa@pheKdDAgbyf{OBL+Ljj99>{kDy zvkCjD9PL_=z66q11<%dEc@k0X{{mHWWsOj3=~zwhF3I(6$`W(_c!L}Z*=06vTa03g zgI6a!O@KcFoYNWpikuJ+eS{J0EI+n5g?&jVr7glbTt=<*=9VgXio+J7)-=Pv1=6q; z-+8-LAYWboD>sejUOo|GgHB`0!$M6Z_2UWtaiw%z^T4GyTonI#Ic59Vk$KMKX5k+l zV>>{9sVEq07zB0oB`2#(XSMaUwFG%jLFQc>bNLtfE^3%6m?2LAn?Om&-P~dVG@qX9 ziQA7d`k}wiG%J0Swn8Vkoi_j6wXXc}MpfLtRUZ$#6|m0Y#TbK2%6%=D*qr{oCu_0( z%fW~3-q*Z`*soAS2SR{2up$D0RCFFI-|DIi3+YCU|QM8BFFusAx3Y?ttR`tZW>KZLT~CjeUJ(shnM+V);?tfd9i^h@}p? zVTjufxLs{x&HQQ|Xto{c2(PkB(>UCF{rJwC?Vsv?q%a+vRe+^8Fa2%AYfc!Z6Gt_5=*MQP-0hGkwsw@)(7gV=xKDVg}) zJ6BGszUuTMrI)xeX>A|y&a+A(u}ue4b796EPdnLju#B=Db8l9ta-WX4E?mE&JlyEb zYgfvH^vTHZpSJ|-q_U@Gi)H_oRTkp&5)e!XJx6Nq`3v;F?@sT)bJJRhy-V$}W`Zj@;wtUxcYrGU{etggC)2R!ly5)$>tK&O^aTFaB3>9R0VJ^sGm&nZ|7{jmF>Y zzVGcj^ueFcOfMhK%dS+rwKnhNH1Az6D3TZ?ua4N*Ek(LY1sY zScGJ-jCZNz5&WRS_4#E~fzv;4g?D@m3ma5$q_xnGiY-?GLE%gc!z(&UJr32bzmt6S z7VPGc$$TrlWxNg2NtzX_?U@^I3Pj;lypw*;$k2i_g*UH8onvqJpT;XFO>AjY;+27W ze^GQBLgc>y;Ffe%6&A0ZaNqH*UiIGh<$flV1~IGxzFGsxRbRO}jViG;%>Jkuzgd0G zHAW%P8m#(94OW^`p}i|>NbeHO&} zA#qr0g?dqIgTJeDc2ybbZa#2H?l|NUH$d}L%^t^8dE!>Mz55xwY7R^YY%TtYg8X^@ zWJiIDhx?SoH7=T72xAtE`0R$h_W7oavX(h<9F8EMFgwZTAG5x&zW_svUMQ0g7USyM zZYm;?%=_??Q;0whIENvBUHV|r`>$6E!qC=8ZnH?CsS~dn!?!IWR_}} zl;5;lrg{CslrVM6JzewkF8qYaJlc$hkb0Z}<^XAh07o~XtiODTmC#E#&zfAS*8-)g zjb6f?>&F&PJbz6=zQjQP?BY<^2@IOwC)D>p7dR}PA3I5Dpig|6#fe`>vyjVObz9|S z0o%I)!wcz#1E`N1k#g%NPJ9uCn_NQ8Dj0gtWb61(`j5BM&`*Au^%LLv!0^HjVJ|oaP4=7tYevT;3)+DR9>+E?qQxYTChfCC z5Rw$-X?Gk68VjTg27%g zH1E6K$K)lQe7%}mWD(VFlt}^k$|6W@vCkZTsYo|t06$=IN~b^m$a)^&rh0%|)y@|a zN$9jXwg^pWnxE{M{Qme)6Q#StTYFF5eM{e+$ZUR#UC%~;VKUVOO0`;(M6C-FU-Q4~ z|08V{=Kq~!XIi7qd>{WmbT^Un@ZMl2jhzXdZfA0eKI>K!$B3tW8|Wc}JCq4OCzrDA z7py;Eu`6HRuSA!lg?&ZPVG>(U#K)iac;5C_+9Ez)4na-5F-^j8+ z{C1-Ac2(umls1_ zYhB;{?RfhGi;w7N=}8raB|Jv*Qq{9jMOvmWrbSOy?uv~`R&+ujtEl{~Ks{3gtr4wI z`%VSIHX8A`|5kp&RBs$egaM7v(HqbRf zOX+CEPl`l6qEC!62vX}kK6zhAfDSj;Il|D2mV;YQ5VQQlZiL%!Zo~gT)4a6r3~qlt zQ}exM3#*oD1cXYWqE=(6$#oA(>8QEg5w(bV*a(i#BPS~5zmD7~^lr*Fi%|USV)ckY zi$Lg zl*y0mpr*FHyN8z-G!4{0*Ii43UwpHYRldD{`hjy_=P%XhSFis#zkde$00uN;RbgCL zcH!4sPZut6UpKbM@PQ{mGZH9wGJIv~$u)B4+$D?%>hAe=e?s*_rmf{Vihw3Uq&(9` z!9@MCIC%Q=-jv4&3QwVU|6HtQ+yi^2CNm->2{M{r(U)A+98kK}ZB9<^j!6V@?+Ugp zu-|puF!70=`fY*uc+nZ@9?+HWxbu_$YD@vmZXPWx?~Wt?u^;Ao=5SQAC$xReA$Z%RIoPosig2>+q>6q*v{66!_?%*(mhyZEU;ST1RQdE<)0PkCOGWWk9a znQw$TFHFBuf0glDS=Ka(4L*Zi*6!G*o{$>wFR0rEL~)0zj4IJrB*$XJK68~XWp@O9 z9=Et;yi?P5Qu^@0R>q-%*U-}D&%B<1?qC9;jyrq&(**vb0@=FNz16=J=(m8cfkbSUAdGv7QtPf1l z?|e>c`0k8$hS|Z)^uM4)0%zXqp2EYIfJ*ecM~^TYMg^-?@jw8tPRC>~gaP(ge?YqM zopoCKYe|fg=EuHrmS_-k##DtdcPKH$imNL zR=G$6Q}r0z=n`n+U^-+E zh)v~5`Kncb=6-Kr0Yc@6Z_%e(=Yq^mX$O~ zj{|Y!_&UbweGNn9qKPvy(rFw^T2aFf({RM9%t1*6bzIq_t$4gzi4I+Exb!IF(UToo(QyHU;zdibD^f3}5KXC2rQ%|rE~ zNa(At>eg0Zq90x+YBZ_Qvl;6+bYB|+opMyv>GRbdY=o-c3{h&vgpE{K5$lA`HZsy| z`7b}n2Xx>^@(xEa8Q!Lm)LYlRdwY@ge!u%aTwISB>~)x72-OM0r;+=u61?LrtR?f9| zD20jw|Ga>XjzwP~w9EyI(zALF9(XqERFrQUTiQOke}{8b%L$m<%2_LZp200t{RC)S zPaax)5^zA$VIBQr1x4~+u)7ax+cdtngIO-3(heP5#x@{}N(QpfU8KWcn21ODDV(kj z27N3?HSpX8(<658bpVgHY;t$gj*ZP*Ju;l)T70eUP-d8S9a>UMPZ1qU6w4)nl|5QI z$f++azEZbEaK{Rc_a-a2Q-CI(&FcEtMuPo9D`hsw}9ZM9)y#*#kf-BZu{;mNtVy6)M4krO*moSYwaK4)}||G1kFfufYt1 zsqMkNaH;RfI&_DMI!Wt<4)(V_PLIRgms1zd4es<5YX9Kz3p3qZl;H|%A~B=Fct%^?SY8=sHBGOaTu`~ zvX2SY64a}$M6)(#n`XW{U1?^lpR%5Udt`&+;!*ibc-Bz~)X&5m!p5R=+;A((nV>ZIU?g3=809q|r{0 zEi=1buN=V4MJ-$0n)6(uHYip&)QKeW4-o;Luof)?=rqciAyZ6sXP@@m>ITB4BSzMB zAIiGdh?l{mh0$>#rNnj6Bgvai&dpjT&xqtN{!1a64Le9|AEfH;Qqio)Xdo* z4Z}&ql;jk43d@2if0z>C z&w@F+cFRao_CoGa^^A%Bh|%4#Vi)#>k?FTmH)#3X_0{`+dM-)#u6=lbu3q^ZOXfUa zhT^#8&8hif;ypLs-&LGYcmvh3#g5{qU|}SrcHJ}463qc~*o9Zw^R%(nFB3r|2F`t7 zy#z=+ZZsv!x3fLj;zyZu6MNqsCL7)~csuRtF-n=3NMo*yephQnFzJKm6SH8tt;9UV z6xJ1DW4$K}KLn!Yv{6|gq`#_ZKC2yZt)(%(NN;sCnD%UY>k-I~a_J?y>v)kST1|t3 z*`tmY>&85Fi=Tf)4lMaCZG@axm?M>DHBZ!{l)t1Yt^B&G7XhvLJc|aPf^7!`NdbaD zIN2QPVKe2V<>^=vaf6aROXl5L^Jlket&}={obEwtrZXGpS-k?2IG}+?{M+VbKg07Y z*=(QU@Z4CPbvGWW@0W55ym%rL*JV!{h}RfI44==0i}$SL>wot7gFGgMc4nn zLqq@Ak`WPGzSRx^W4IbdR~#(8f9~e}OB2&><_sH~_Ho-ug>f7{zR4D7ywIl564w*O zI|I%hfH;63K$BBH<1_MjK;!9Q)!ez)!4T$X$875nf9rHSbd{?1ajnn!>qEqz^r~GB zLeuSPcJ9Wc?bY=C@4z>$DZyLc)(CS>-#_VO^1LE*8(oz6`M_G{0@j&aI8=yUU3uf) zgy8UF05>!m!mLB9(#~&&)MQ)l2tP?4594DUu*Asw_JP-p7y!F z@GoP0y!ElBXoM+XUCOT$|KWuGB2}9Cp+S|IE5*09TR$V*(k9UGVb%PT`tuG+Z1^1wxbXG^GyBmyhg}0q#w(^ zufI$SpIUHy?$y=nDPSlB17GY%L^ThL1x0PcgGOGvb)D=j7TLo!s5LLYqdHuGlPM^; zgMGkaKleqQ-B87ArPcGcQIB>(4Xt@P`Yg0L-wWIu_{L_|(wBPcd~St+yw@)#UPzme z35*u5tKCl`PpZqYL&j2be_&fF3X~`$c-*Q*HJj2fi+QW1Z`fg)D&Q2}jy)BUl6xR| z@%bEnIfVWL3-7=@k(6BAGrJ6|x9sXYn>YWK>g0qu+IkRS7ACKf>^|NyaYa6q4rBmA z{0i7L2=P&pWP1g}vd`2oUW~`4sY!>6*Y@xGY*6)Ny%(mAOS3a;;CSF*9($ zmdFmz*MLhezlNqj<#Y-y1XgrbSo@wSlW$JeY zq%>Fqn{R-`rVQ`c;^WG%)?U8W)lY8oh$COqsBBu%maT)Mx!TdEzEim>uo3C4p|9TE zk5LVuYw!NRG>h|tY}gYwadZ($llHIoifKWn)d`ojz~#A%x0*muRMypEeM61+=m|A9 z>tzC}!wpD#jZyU1_YTjJvW=CrTK;q8SHvJ5;$ozQ$XSYOTX!4qkFn!goM(a{BmHS-GJ*YoOL2W}w?a(}bqS0R;q7GpOSQ|g14<8!XD>Rr(~^?$$_ ze(_$&ty2iL{!9}VsweLpbaDanvF@)6NHqo)cowg^Mt#;2g1;{ucMEJxefd&x=*eXI zYpL5F)y5!p-l&4P#tr#B_LN?H=1b7_&DWBkItJKPfE!A?N`qv%`E^~;^`DBxk5u(d zha(AvD9^9X(`9b!>(&=W(hI=ZL~e5lq;c@v#dN24Sb8Cz7M5=8`Kx5H5;TlYlr#~l z#hCnNq6G7}t(M{V98at(#LM{;XVaN8iY2!FE60U4oT@(4?MKi6NwcH{ZplOr=`Br@ zEzUz}FNcR_=q@Z;G3lEYf#&x~Yl=XY!ScrR@{Mb~>zdB*;zm#JQ4ebpn8Z~JW)9;+ zVz&Q7+9z#q`3i403tY#6ky-x3kOF}xFFq|aS(X{&&Kb{0?*|6`Xs|5gu=Lzw6u-cm z#D21IdGV@w%I`JNSd>WQ^^Zm}iUhBe1SG|bP~b~&gY`|j-%_tF++*QUrAJrauva0; z)7$7%)p`^S#D^jmdE@qt*ChY(oyw*SLO0rLPgGKsr?KJEj={<$coI$bWwV$cY{}Kk zGi$HAB5)rdqafBque5H8{{%Fbiu>HXTt9ts+qV?(q1bF)bPXdmT=8aE=lAJqvdiPE zF6jcx7c8EPZC`H5Km`=zviHn_psy}X>uu3pvn-+nzMhd;9+S=%G>f{kn~$p67QTeK zkx2YO>#P(%bo1%zW!~kG-qUaZT0Ygn#?7{YHeb%VF#(K@^iuS-?ahKEWK}JZp)G;y zsuWna50kl#8LPdsot8X_9;0YMAH<@D0@A_MyhiRLrZ~OR>Xcn&@xVz=pk49|_G1*P zYbqU{2hUs>BbTLd(5>Y7u1o47g>jz?nTDU9xVN2C`z?&rSHCrpt?ZAUx@wDIwD@%* zLNVSSL7#qX1z-<_JpZH`Y+=2-AZPPTsmVTWIOky+{uQe>U2Rrysq^s;yzceen;S=x z2BCwLrH^g#+e-7019~(=lhGUL?!d!9JFLulos*hV&%!@7mEF0@xQg$H0}{PamNB1B zp#sr9B(IT(s#mXFDt63=onRNh@sFCrWFLr^p*zZ+{(HYBB9{b9WH@Fpab`95(h;m= zLv&6qTl5GMjnv{%;UhbCiX9}UwiLc891SyzRj@7PKZQCt9*;l=zlzfC5arh6L|6U;CM`#%Em_j>kR zyEvG+TApU*dhxiUlUwA(oi;t)e$|?wb^Z_T9(cQ+n0B)#92nn_>jK+GF)!;e2}OV_xt?fFO|zXkECUaJZ6Bmq^54T*Y;cv^p_T3x-i8g!06(eAkz<)5i{4R=0bTqEuYP(3Jo80+>Cb2X;0Q#XbtfAwV9HE@@> zezg~t+_pn2O&n)_rOFWU?p^Msllbj8E*GF&5)h!C_}VTNL`z-UUWdQs{2N~5J?5*M zbK^S`F8$JXq?ysrg$N?@tI@Ks=FKTX|BmM`%`4-xq0^uLgSGb#YBK8Dew8932qL|U zASf*=T}lL0RJwEpLJ{d*dI`Pvsc6FPz~D zt(}ARUbBe#)yW&jtak>-q3hSz)d)F|7b8s*cFKv_IqJ(z^X1$-UaV8ZkG*%SCo+>_ zHo3e{?U!w@i4Q4HXPdU4)$EzF`Y1B*cd)pp%%aEAZSZM|$s}(^UC;LOSBY#+S4CuM zPEAxpy@0KCTNgFhrBYczq&E7q+o@@(t8>b3idW(6$=Ey&h#HG*mzgBE;QIZi5xB8w zWd{dgxeTR`MR`Bt|^*&k0|eEFrxgemDp?mlp44^kqk`}nU824vu%{D)c^S2 zeBK*Q?{IojANC*nAxW*knoxRP>?(QF<|nZnXgq82%o+68{$ab`p(BX(GL|_CS!wJx z@eZKOrX@o@8kfM{uu`H=-(5teGXsh^00%m?*wLhMkgd$LU47{kF4_4dY_(DkcKg}w zSVa{Y;N}wgPfWLk^F`;uto?GM8&R9dO< z)d#ZI5&Tzf#7%TbZtuo*NW7O?$zpj~A1c|k6Zswnewvj&Tel-WKf~jCdo}qkc5$=1 z#QOosbJmu}!}9k0L$LSOvl$&l24F9cez$v3>hnw88tQP(Ug(AN^tMA+_o19u`V{eL z?HBAR@^roQl(PqNv5Nf8{;gq1(d*(1Th^qcA0ajGP^Tk5sMy2`b(d)iG8~EmD^4=)G0NiwmUNQ^4`_~d09+=Kw(L95mZ|+C0q-bDO0K1%R3A%VQD3+ zOzz^ZI&dPFU1Uvq`|M!L;*f4#bK%%z44~6*ytzeF$XVw^jvgwmJ51F^|6KhB3~)35qtnoMf|^(1H13#pgOYOB_?nip<9>L z)sU>|2PX4z!1Y=s27*C|vF7TBf0Y8nofSH>KG)#}zw0jrAn56ID zp73^A-pcVewn|$;CtM5ltznD3gjw9v_4tM6vQVj1Lr=$B+NO`SdwHyOYS91>Do!_H zPz&b=lx@CYPD{Z4dbh^*`|L3TrOUF_mzxJP7ESB9=^^tnYOr8EQ3Mwh;}3S&Ej<$4 zO&c^eybB*v?QE1hs7Y>^Ruo;)&~9$QV`ODgW;sV5WQNbrAOKdHypHcURgZ95G zo#_y#-D8smRke&@X7K4-8de=Q?Un!_c^(E;f!9e$68omezx)e zlp$(fD&hPJ1U{&SLxKX?4!Bp7!y3^0S9l8>8kcqb(HI39-&gOH{_ciCnr-qr*GZo_ zYj=i(x+E#UY0h7~ zt#LYyx8bzP^1x&t*q`A_B-m?TkD10tgkJ{-R=b3Jkn-LK;$CsGB3_>%as9M>-e_Cj z3b{UXB|N3ozKecHvmxbASijvQdcc^x=%eQec?~n_WY916+~bz$6qV>CKFnmedYL29 zDJ<3bjMevz!A%)%hREHRzBn%95W`Pk7rY%~$nda-T!#VyTBjw^kS?($hjoC7)}t9k zG@Z4Xeeox_6j!+B{6DVv-xGSv|^(8hMrxcx}Uz*KWj{_$5+-r$j* z^wN)cy#EO}oExwY@8>4I)j0N_#;$aP@A2I$6c&t^c*2~^BJ}Q#M%SR8Z!>>Vld~x7 z;j__Hx10242{i-lG}|otJ&aq!jd{|SF>HZXC|oH-V)Ro9f_aUe#kbP zg5Wa$ZE#t|u6Nq}u&)+i_l=51rnbvzOAPR<_`$h4UOOL;d}zw8x-~|N&51U6Fwp*6 zu58zQhFF`UWm;{-Y=?pt7D=K}bcm|w_3pb$2PnI&4!O$WI{}}|H2pd&XlLmQn*q1* zt8!mqu2SVuccJOs-?Vr7+Kfxzx#$_}J#YYAlzi2Lm2G$+c9te^9O@s#` zRk!^4L{BXXQ!y)p*>6(6cr4b;&k&WRlAS$8;)k2ZL#{S$&Jv7|Jz)-vWfgZld;;Vy zp*MCCi*?~SKavKqn|=f3MZh~68aZW2nvLf$LGxbX#A)L>WC58~r z!uyoJ9d9mSldpL<%~U4ixgpWm&D_(y*Qw||5k%hcy{*F8roD}(J@C*ay97CR_{nNf zfW&GzV&1j51y4uBd8c1=pS9HWTCwK1`^(%PfinNTnn0kJ$`*UNCZ8Q(z<|%ZP&pww=k*&_?#Z#x^G`lbAUtIeiWwuwW z56%_NLe-qQWKPF@I z|L_x)bpzGQ<*63mJHHBHV<{UHv8)^)6xnEA7_`&LCNyO5@@V{FAFcF+2!fTxusEkB zpt%$oF5=mSS=+YLOgt&Ks=HUaFlQZ*XpIE+0RBE7Z*W-yU^Z#s5dN z`v1R`%AloL`_~!%e-2L8e(|>QUdRz0xQTGlY8W_B`eB&Rl7U zY?*96zUfE4j;O5JuX2>L<%kp16U4AURHpz|Iu1z~>kSax4T;pykt!srWwe; zPGOWfHWOJLBbnkx@t{7YWmnlxJ2^DpXfts@#sRvtnyN+*A?GYiV8Tyaa$SPMYg&2X z$+?pEz!yEnf!o>6zn{k~>$yHDa>UimT!@RUk8JkJY9=2;L{rfXPF1 zHf<^*qZfTDGQ8KTOB!gShx`evTGz+x5~upxPXD^z!iY++dg$@b5P0{0XLk5>rJArF zZ@#*UOwhVxYHV1HZ|aK6bi2rdyowqw#GD7FGcjBE607g0TBsU=csu674W_~V^aySSA_CwJQ za*1P9Fb=6C8wJ;^=HRu`x?ohgrfA5#NaKAt7I#kE%Rkw-ead1{z=hz4$rwG;gLRl| zpN=heZQt-pLG@lQ@x*7z?NNVBuHDC0TTi zOv+01(O%#cdy>UT=0G7p*q(~LEW%jdMHE(xr)ebm-7c1F>wZZg5>oRz?oSYVqgZ6x zIF_iUTZ@~AnzbsI&WN12Fto%?fJsadAZoozzLAuf0HlU~;I#MT7bx3d|KYzsTWVi) zuX$=fsN-GQWi$-V*0sxkaH~1ncus;e<{R)h9wGmR+wHymbMQ`G?Tgg}WUGuH=$wis zthxj(q>pGJQt?!I`4nsf$4xZaX<}Qj+T)wkMxv)LzJnwr&Bnv6N(#C{gPMjkF}9gZ9}+_aG3QEMOqNg(p@X1gKRy3Xr{p z9d`6d%92q)&Wqq(ZfbLpZSW^2&ryciT&qXdAQgF6ywm(3-@#FtVk{C7WDKdIo+2 z+lP37ocS}ED+W=1TQF05zSfm>wyoCTQWE|Zd;7g-drGNo^U9*VR?N=M#U4kGMK*Ip zBUqeDftsb~XzEG5B{EccboSxKO3dk@@8-?Wsn*(&`wq`|BU+#g3;-vzddnF{O120SsE&D`Vg0MDp%a?FE$ z;9j3jl3ZrdjeWiZnP2C$ers7R_rA3upome%w34c%!e8(ixpQbhbUjv}9^5b-z+BI( zn4sl(@sjAzgJ$)YuEKM{azP-tO@}}w3HFwl+r5CmwO6m zH6u#1lWnLzv+AnJz!|b;Um2!24g(zPADe2NQ$md(RqRoY=x*AcB-9 z3w`bfU-pd{oC+WOFzX}tt3MqO3)0WzVQ{LGX>SEeQsdGejzLVh8BdNk1=Dr;Ke!rO z*An!(DQyKLKUK)6DXE7v9ZW=lT90=f*pGS^HcY@SJWz~=$iC>_kCv5QOBqO$zcr!*2$s~vq3)bPYcLP&pW)>!o7cE`%E<4`%|f_1Cmnx!4t2NXGlN(h=J<{B1rn>e8>fKm zRg94xo;;TK-*45WB@0??awF8wZXkiQh~tqMvi_B6eU(;mrd1lDFS2ozTt~L|^h+>& z>fCzqF;UuJhh==@((*vf0-y3Ki7QvPWoT-dfK~5~$GjcWYw+n=^s570N^gA8fOe8| zXtVyx(=*a>hFCO#X;5n)S`BTFWbLeoY)-yj;KL=NXc_8MM7O7*yy9_Juh?kQTpywP z;z4$;T&s`Hzm)cph_5zyHz*b-R}AncXq~uDN#P8=ubf!zB^q~N_hQ)JYcV`Qwhz>i%<=Mmzu$^S2?_Q@2Su;$dT%0#PxU$B zsN(wbaMungm#%JTu<1d<=GI@wKG$I&Xuv+RVgelDzjTNSf|3P0cDLy_f(5IPGr&pe zCwEB=Vj6W)eDhsGDzE-{>1i(@8+-W%r(^7F9rHSEKn8DGD0RIL@5pIRvv#EHh<3D` zET&9ax#NuyO5j#J$=vbN{ED;sjB7W|l$U@Q3;nZ^A$fRzLV9(1{PjtItJb@`*Ppzc zH~0R{8#oZIEtLRm)(ZvKKYN8elD*#~T)?Dwz=i$cY1WL(=Iz-UAAS@ovJiLq)SH7N zr8rP~11K0=em+~)EKhZflsoet$Nbu;ngVVHm7=ta>7;#1QMM$921je-`J&1vF4W(t z-=_?IMw{bku_0_Za*DPC2d2X&kG>)#EL-8U|hVZ9F>z=ZfF8Ki}QQQD}UJ1 z*w$Htlt+Wg0df*)En`Is9_L2VWUWa~rt{BkAvT`vQE&%lKiQH=$?wE88V9i_#+!z! zJM^{>e}sSAg?i-tOX05R{<#6T?6d}^y4jC zwT3zj*+K?iIE+*rk=nKisK~0ad0OEZaDl>u>sK`Hr7BJ*i^kIAOlJHVwagG%&z&f! z2X@3g1P{&fk#Hk^e*yW^dgfEA&#hRYK5L8Ug>RrUxj zVHQ7673*p+wP>OYozlx0Ec{fG)x6RjPWrIvO7;f_rw zKVR3u!kJ%HG0YL zS>*lTG?x|n8M|90Hqba2N7%@xl0Qi%B5R6K3c%f|c59TX8dV zxZ5-|cEQ?xgSCx=??;=yJ3bd|n$fNT2MbiY*NYf#PHU@Eo;_F-pat>&a$X^Uy3+m1 za@tEn&s!st4q?`pGf2=naRQQro3sEe`t^c$m5bJ#boN z@NN=^&Wg;PEo>(2FGgQqy2B&D{%^2B8F_PZFbM{B$-%<%D`jx$aq?dud*2T}UUx!r zc}|{wZpS_e@YDToBfsIa&l^x0sEoujzqic=590scnRyTezF&O*Siq7aaDvqJF-des z6waBO3uO0=`$mV1YoIF}!>EY359rnz8{kE7+ zOJ-g?26+eJAiSK$(=^lGd8B3s3+jxE2>C#H-pBv9SgE1<(m-|HUapMY7n3qDC6^yEI#S`dW%{la#|doWT)XsVjoy*cPI ziWFwOPutL zkj3gg$!X_cZJ|!UV+NQlHbcy&*D=F&WyzVi>*oYTDlT1F&+eGtXjMu21QtxzPr4Wz z_Au`X*LKcFG6Ne?hdNswm;E32lba+%uA$2Nhar^8yzFhR%18KR$Y*Wubt3TuhP8@mNM zj}2~U>e7#g_Lq{(wOWInZTGQm-hP;;P)HS2jwS+V-Y%3EJ)?nMYdflOJ<)N53MyO%gV6 zjrT?Z9%FW+?1@8v$2}td!zQ?Xkk52_{^BN{*dMhh%?u6G*7@3y`gEP(O`HEuDV*+n z;0KffO-v7PO~k2M+#NMcpg^v+;lppbsUP}!)YKhBDjU2oFN8LRqo1pgQ7k}=2M{li z?>Wl!ws1Xdz4~%;SnQ4|zoJ)!=r{uIPx@$O}&EX$Fp zTHtXqF`pEqPorZo39A*2T)0so!ch5JuPxQihFcV^9{R=sqfybdi{JIv7wXSV-`*VV z)^)SL(tgler5y)lsh@#O|^R5|P|Bf%ss3I!98| zIN!f3$yES-JDYxxoDP#k5$P#=)TGWi{uVFTgwOXitxAxeU4Nf-a8c__o-^K`M8w*Z ziQ^Qw&?N4blpIX$sG%t6{dt0SdHRNSWa=tT&k z3Ez6VcHXIl^V@lb-=-&$ak-;xbgn8LW~b*hI$v6?dN6QdTN`PUle!(%c~C)Kr`m`$ z!;ISeolksQ+QmDzd?sHJ?p`k!;iS@IW)+N(1k`FhvKf`EaM(8S*~@we5_>i|IPgw z`>PD>y?tmhrPzM3YF*R0I0b~HGesAz!nN+2#Q3)SSS#~<)P?*uMR<@|T{Jgarm{}G z0z0jag4fT!!s7pQ7C{_xh-BF^(b!8ZVJ)xZ=eL@O52hQDo3HGoR=uog>pEw=xAhw_ zMK+p?#0OCqfP;v$_w@Z;#?bc6Q#+|K370RMPy^{5^UI`Su(Wln%AwZ0Vmicu%Lbaq zc(_qdGy`%Xuh!cbjBYvL;?M>V%s|~qkjt~>?DLEW++R9MOD4OKcjGI^pEA8n zi_UNysTPyus?%B`h12POp!Omh%R-PtWV8VmYsEEu*-yex%>RdxSZ<9{%6 z+5d)-jZd=gR5sxrS&ff(DNqH|X6HfzEr~XU!nEPt%@(h$8a+PtPaP}0%`(A~h zEy*WlDEyJ+)5ZXT5s$`8?{gsa=e(rHfJ;+qOJjFqH%r&_{Lkt13S7;(oBsKVPAs3Y zId9I%=93r5?>@qA)a{7s!lh{5C^Hdjd$uFmVIow8Uvoj3(h{qva$C^WnwP07w_kZ- zBT>_QgFusnv%1M)Zgfu(lmbfj2_p#=O4qHY5l@e5RhuxgKhUWcxFmd)b4JPVd6tv3zl6eQ3MflpCeKK2Oj@w` zh?v+RT^CI;(@g7J@aA$8DUC4R93{KUEt!g8mV_bbeTz~{M+=gNjszBlzduV?P5a1R zL^K><2V;MJ4*l+Jf9Jg9I9SEvY;ex@Ht@vjmuR}C$;QZG>Oig|uKdi=j(4Tt<-_@e z&LSTZ{zG|ks*)_NmjWsPnMF&1?p!kU&&jQhjmsg`91z=-6aW0e8NIu}Y5vez$+ABe z9e~_yik4E!QLYB_Icf7x6rm>i1}ju|K`PtrRqQCPeaPqCch@dAJMa-nOL&LC>8a)5 zDrQsP?LqhF4}?HoQ(t^^Vq&bC1Nv=Bb0BJRl7|PZXdU|O?Br40{p-Ak#22)C(O#jZ ztbc)K6OM_r4%53#+T-*WyqY%0V@W?`K;)07`3|8CT&3h1fEBUApL_@gXM^=1ir+~g z-g$xOU5m;eg{f>49 zaCHo(ztWf67@qcnLi&yv3vFGD{aupNktjPB9k1%9EPn#r7iL4S?apeU6u$?dbMw4| zk>(empubdUFSNJ@kzc|9FBH#K)t=Hf~u2dD89zcD4*iy(9jOccPrG#?_wzc zHU_wLzbhh(^5bH*_&rz$+n)S`x%%mI05!+Dwa_xTMQN?vb--g%A|dXGF}YdPJGW(q z-nJV)P`?-~G%^f9r>hIIsX>ONThNpntipG3eHdnFs6Rt7z+N;sq4hoH7gQSX!_vnS zUrffMqfZUb$)efr@P)#(EP`+s-|=?us6B4U8cv4Dw8?XM?<)(-+>{MmqN@pV}mzdJ^JBMjEJ2!yFs#n47BW%vKhB&bI|D;Kzu} zq_#mGjq>9By_zhQ@Cx%K)(1wVRLnY6|^eUXnMrGSl-wB7`9y1xUSKN&&~R~wHMZIlf7$KJr=!1 zc~^a00hlzQ8FuRL95HW)Jyvld^@EzYmmXO+3|w*%q|Q9}z4I2Kq10Lw2ubkKNaQ{v z@cRV%282yw7FsM_y-NKpwLbqqarx;1a;p!f>M0;+j2e~-Z6K8#FV7ZF8(FJ}sK7bz1>IJ!{GAxNWrz1?Zkih^R}f)O=X9!zWJ>lf8&Tg6No)6r&dTmY!pbz$iJ%BDYB2QQXD zh&IvdS%*D^V!~;`s+%l3?p-L%C+vS~f=m?U&kA*ra{BLR`GVyi#r@jIDhIXyU!H%Y zuKHDn8{UVVZv|Bc@}f5HM{;;e9hnlpc{rx4evw1>KhN(!jDFSgaf!LYiy(9}hoeYc zO2Las@mdsmPCjN6Xkdxg%%darrf~QT*~1|-CrmkPZU4YtLTs`x#e@?i{IiOwW8j&< zy5NzBgTYS%RMB&75kIW;hnrM;KBB^jLcMbClPA^BIttgv5aZJ!5`J$OiZy&+V7aQE zisAQEFoP5p{1Ndkw`q2wk-$DdOl@VLHQiy_vnI%av&kMlJ%fR)1Qzw zuaa`9aCRI~6H&LmlvE9;*2&quo6tLR@P4(gA?DAS3~yHAZ_p2}C?PA+d%wypXGAn6 z^^guhkNEXfPUHOUwehm2*cMuEy=XYD1Zwe90K(T}3h_h@^8 z#J%rKJ=iD2>g$$XM!WC~Q7mHxHhv%#TM;y6$%hNzI#%Y(5G8uA=jX9+k*#Rcy}_s~ z*ykIO=icMTMTy`{@P(0RZeE#rx*|binPy6|Gsb4{H%EJEBtt~ z$Exht8>N}`SEQMJPQOZ&rz^}A3Brc51lkHWpf3TR3d*)GJSYUP&npL zY?v~3i*ecL!uF3oi|B9!-$!xJisUKegjt*HHMx6C2T1)cx>)zmnH2+VA|G**?Zv$l z7k3!97`|1&EFGqI)v6F4;X3WPO}fvdy@+`2X03zfWzWf|~Fy*BN5RO^%>jDNhKU;9JTcys(F zyk^9fMD6H4a{f5+@8NCu3G~IOX?>m@z5e;l&ju-1TWrzQ%%bsk{cUGbax=UBfdx62 zHBcsb0yanuK4CaHPXAq)Oqn&Rbu_uV$j5Z)`8i{#i@N;-3nBdvo{-~cIstvw@zNSg zW<_hM3^IPbHfGe0Nd=^4gB5_?Uh4v;(%@ah+O^H4cb{ zvSW~5{gYezp0{J3u^YApJf;IUwVS5puZrl@EEx>g=Q^g4ChY~4ts)+TSfxnDZf&PF zH76c%^}8oE4rL=11=OD;sCgInsLw!KtlxdT%nCQ?4A^x`kp|E|;;|QRQvA{igMCQn z*6Z%kfEl<)u47-CJ9>S7kY9fUQc>`3R{)g^CQpnl#q9;)^>LStC3Pee@IDv);Y0Wm zGxdBT~#UGFa1AMKC*OEbkJIL&<_f)B?g&Yl-REvBy}c6|E$ zKj2yQVaGS7w{kMJ+k(*1){`e6?d-4}BX6&o!CkDM|5Dzsd~@(FRF~z)K`ylOd>w?* z^CeoXd!RfJ)=yvN%n?^%PF2}*DVMOY%=cQn@x>_!iI=>N(u%0`I7Wh@IV4i{(N`-{ zl7U)R8GQg~pu~Ob99W+dtmgqtQa)kno!ObCc?2rfg=*hU)0!bq>Rj(1_PX*Nx$lKs zvw4;8f2hGOfll-wqBu?zHgq-fW-n>w(bV9!-uhwp-z|9+z?tC3)$?=Xp5)<1RBxHb z?x8E@Kty!IlZvlPBJ?y%N^ZY0Oo>}h7BLo;w|@4@S)q{#fl$iyFNFR6WX(+W9vS!9 z0f;I`!UnE7)f-F`-p9@zTqriK2yCcQ5=&f58rK)8+dt7I}6A8Q#Dt~}w4 z{ltWZAow(apyqnKqlaF@WN#$JPm4xFEku9gwFV`QpP|=4_ZTU&0yRazZjt;E;p@G^ zLK=2R^Q%hVb5L(QsOoY5EFy4vtVM`Wun#IZ0QAKC^gZhwADp$XexCZ-l@6M8>-WPm z@D`N(3zYC?bG-c2puo-F+0n@K3b}=EP@>cOZS|AOk5^P=yV?@9I`@w6rQELO`4gkf z8|v>M_>_%X!{pNj$SL74F3G?t{UtGj8N6Zu5_K#INlbYInCQx5|KALrST)f!^8n`R0k5NUVs3 z-U&e!+?`~9@16f8>VX|Q`(JVTmEnlBEQL3mbxKLd>Tdj2W4bF`3>SGF)=YT#^4f*V zS^X^>Ykxn93F58KhDZ2gyn#Y0YfeQ;;%@D9?8#`ye)!-$+}vQ?+6=1XZ*ghFcH0y# z!&P8&531Tj#3Jqnwc(OCi~Y=5b9W$M-~uK^SQH`$zuB7J`Wr8?=iV|RlamASa;^c{i~mP zT4d`s8G{LH@SKC-t-po1H-1#|uED;hWMI@&FMZ+bhKxF`CYss|n%?Z_wt)gl3iJ+y zIn=PYn_kU!$*G;WFt{rjZDTPZQ26eVO8aEdwD|Vlxte?-ghG$!*7e%Tq=^VE`P6>k zph2WYyW^?vzC^Roef9O@9mux5XKbm+FU@Zw0SoR!S1v)=#io0ZTe_WyMd8gI_nX73 z0zBxr6?8!>q^EySE{^mR+#szDyk;9YXCFzpzwU=2yjlGzbOq~5@=QHBjpeic0~8nO z5iJSxJt%lbMcte`{cm%`Rf8m5HvDANu@ys1_g?3eu5zOKO#7LmWX02!3zS5ln2RTs zZz1zjwJkaP4#nR>wo(f1i6FJZzaIDgT!s)=-to<_s7rjOh^{^Y6@Ph8!crfR^5x=9 z`iHS5cm85`YX-d6o2p3r&fW^RyB9;T*Qu1n^eLuIxH`K9C^Y( zkacI@jbDm*Ea=fRbXh!OPG=IReLpOlukFF`iGEV{|-#-Fy zuC30@e8)|VjAt%Hdx5}&_-wFW?xLxx^{*@uM;%H|8p zU3R(LjhJUZq(s(!`oQ^Y3&Jhv;^C&l{&A4La)vKM5@U;Av4gs`rg z%{K&_b^n2lG^Z~r@_95WbN_KaSAIyq09^qUeC8YVBSI>Ka1U>>!&Sb$f98Mde|rI# zIc|>v{><_f=6!94cdZsMzz44&#b44l4a!$=$jk5~%xSXVPCn1GNx_(ndEo65`R^pJ zh3McugHFn$L2TSReAu(I+_%x*jN`- z*2*!Xdhbs0qliK=xuu@ZieWE)JbP5O&oP&6$vrTY(BSS1=2-g5*iAh!t%v6%NE)@} zhdv*CsaF6cOjC41b!i>ln|?qoxdsAV)P-iAZY)Ng1HNDxXK8G?(u$jdJRDpv1K2>k z2Ap^J1}DP(pW+=u(BlvF6?8brRVVQ^|mQm2b}>Pr z%knu{7Ye4olE8)0^sfaI_1Wu>}-97n+olFP0*Avpgk8{!5{+p+k*IpU|tcWFQp z#N%)ruxgS%gNO(wyImVuY;7*)@`jy@8eOyi(1x?MV?BnD{?sdD;bmNK#m6AWxbF6{w{fJH(sQhlJiPD z8A!Ha!u8~K{-R?p%tKMqcR7hkM!{q5Y4(ZT=eg1zX&>;NCEAbS%e;Sb2C;qPrxOMZ!lFNBC^#71m)ggm!P%vhdzNE@c3ceQ zhr#R9ZdXOWyeQ!>$!2gFkG5B_8w+l?$3N~q`H|}oaSe7oJbl0+{`UH>@*wRc1Z#os zBfcT8T86loAhOOt*Aa>f#*yO=Aen$wF5?JN9On>3P`DN*_{p)moXwcsCn|JACk8fS zA#9Qc6RAA^bvLW->-5Xp61Wjsj6e-qJjjc6)-fX()-B%~cKQXav!e8Jx+-!PPMlX| z6f$8n?}8z6mM`+-*8apR_aWzgz5O8756CIL2-Q7*6!ahh$HrU)@Bg%W5#Mt@kxpw^GfezY)QCY!*K2^8Rrd9k zv7iB(qk-nik-H>AHan^o&))`LP@y0?p&dom137GWA~9P(MP{FeXZ)s+^Q1Pl-rqh_ zP}N5~5HF(wKfGEHy|fsn)S^Uoi0t{06qpYU-2Hyu@^^=PwA>W8tlC#ovBpVV4v-W8 zQCveyk^>Gem+=>9rOq^#)wU!_5k*q6tz;M%xAq}Pn3qz+Mi)eDgyp#=XxMlm!{qb2 zX#$B~-x1sKOJSe)m$l9Wqb!W->WWtW;SrbXAVkHG-|B78C2}!BRCskh&EsAz8Q>fG z)<2UYjfi*8Rxb&B`8d_Sd|1Xxwv^^x*Z0uPM&%UBQxa7FP_UK^yt%wfi96Z4Alwb9o<)os^5g!9HuO zWB#2UF%{8@LTmbd#LcMSUd*5x1lz*O&xodXI)kbTI6psj)8K*BQ^W6Inc#OWlBz%Q zn2xUGm1Hi9UKaR(?hZ7bW(&H)PoKnaL@r%SNG2~OHV_Mbhn+q-8u$C&jJxsgSH7N* zgyn236AcYvq!etI>h2ucD_M1pW_7}ItDgYBkMqzBWArJ}j^!tf!7Do8JPcgJY?*!W zSM@q*v^E|pJ#AINLIEnbweG=UH;&iH$e9Nx|uR( ze4y5!KV?k$OMKy=ocB_V%O`Hm)+4=WI5RK)?XkP1?mI#0AYI!F(6Wd zVLi*viSMs3Ts=QbDg}!7p?J`U6U{T=Uyex{Fd#I#>m0b6XLG)Tzn*N*8<42P>BPkS z2a1@#P7c6@PH>45EbA`$z0E*m;9==R%zLp7m zKTJ*4gJ(3Qr%12UgIrkOLsPTuR8e3$*@UU^{uC{mtiQO-E^ zIQBk5xqTJ%M??@{xKXnWV)%1v#x4egvEgjuWl!08e5SMde6CT!1;1Z>QQo=Lv6f`G z1ZpW=F{mRzxhP{&>re0ni_Qn%0WYj-{QzS%O@EpipV_1{=zm`fKa38Kfff}y`e$m) zQN0XkoT7X753Y@Ty+3k0(bzJzQs+7vo%sVa{pz8kA+(+`VvEw^0J| zadgdljo81Wtzo=AwE!TOBV;?Ym5qG1F91~8O3L)YU>_5!HI`sGP1y^fr$tf`@bm5E-JB}d`NQ=u z`A*xsSsw{8-A0#VhOOq2Las08Nu~# z3?W(+Vx?8i%khHP09FgYQseXS;|!Mt{QTH#>?+sj3?cA~b8m}5cv)=(#tn-y^G z-bM~3Gx&Yudq}z~aPnYmxfg1$e5+igP$st;;I&kJd6uz0t8?;i=Ut4#)-h}RNpt2@ zrH(pyz1^Z_QcNa0tO*ED08{UFr^avdJ{kEJb>&fL+{sYs8`nEOY}Pj&A_|%tTE{}# zf1M(GWQyaXW9A;7DlZK_yn8aK5ov+{Wix36S=ZiKn!2N{qw&n8v4Zb+F_cen{<|7c zX~O$f+$|Q2MHnE!K_IMXn6@vf&gi70c(U&1)$1cb2`^O~sJmm;5#h^md|XNuccOh} zPOltan$7L~VT&N%t8zajb$JnAh}eK_5UIXSj>hn zrlPKo{BhFH7ce^XlLGq_fzt)9hI{osTQt4w3xMgE+sjZlZPYMre!U-Wpc(g} z>jg-b%Wz6kuV_H>2mPr<#4V=gCPkK>VyEyG{V?tEZi;vKV_9a*q6LlfzA>u_-&P zgNyiP_rRAy%H30+alKjtK_OlzPCc}&(w`{r>$pdvr2LakBY#)d3AuF-W?QaxuU1>3L=yOw7GuOpRGhq_P^eO-amy`f*g5oDz3(d(TrCW zi>prU6R`k1m2(7}=(xSq6X<$}S*&ig?A2#z;PK$leV&0l9cw5R^|zl+YoJy%KI)B{ z#P4;;V@VI?l;T?4wYVfCSvx%Me~)*c4`+-s_Q&%zV`j~jmAR(e_w~E( zfK(4rlv47jkloyN=kXQ9mk}6;JcAuD66@F)kS(yr2<@9ls;*VI0L0ei%4EyE9TD*l zetAxZnIaU|7`LF6`>Uvq--RSiri@?1O8`p}%ATG@JH5tUi8=SYpdzLjOd!4>>xZ1{8@LK?SH#R6SOO zspE?;@ja!v+J7yO_1;iW51d!~MTzwb@=J6{?hjugKc@_0-yN=8Q^meb4#`oM{Dd(8 z68E;~r-H&+CCVQp`1qxxJulX4$O6;Xk%4GK@RiU?yfoq1Hu;<%dd_|4b9H12q64eB zMNhYy#UYYC`9`4Ps|$ua#|xSArs`bNi?=l1w~!6Ko3mnvm_%uk4$IpG0^>SaEXd7d7r}9k253^;#y9b9VXgfLaaxzV%RSt)kb<$-JAX`Qlf) z_1>Bb!nbnSo=k_$C@&EwOB4l7V*F#Iltlbc|c%3E>?(Oc=fqf?#gA&C6Kg6=ULvH@qUyV&{k zILUzcTw_m5P8gkcMq&e-OI0J&u-G-oOyf^TMCaw&6_nQGDzu;3?PuC?dLU8Ux^Q#@ zctljJAS!6*&el}@c>(@kvg@!?ul^k%al5a!i-o_MnokY&k7GI?WV-U~A-0g2A7R+g zlg}?lyvpYMZ_`dw13m{kP&}mzet((F>r- z`q0%$l?>Godx@#M?P%MQ#pi1g`tMeA+s3aawnz38mq={AuUTl!q+*CG0`Qy|-^s_; zbKBudWdg+9zob)G<%}sHTvi zKt6Jq?!F8)wUXqKhd7G%4l6CyCm?A$vl)Za?*f9EAcbMfdx)(}EV7Whj^qO?90uvvT6BH0idpdb6~nCp-Ni z+F~cKo86l@;N{0N4gIPi($RIE_^NdDVw0m6>dw5EQ=3xx7Jb$iBLE{e>Gj5y{A1X* zYtMKTXrHMba`fR}Z4xHNjmQnuL#`e*y~$UfYwB|-U&C@*BUvxa%xYlDX96x^8mu2B z1dSqDJ`MlFJzGrhX59HR$}FnBykEE@1Xsb2zPU#1f^m*~bEyk4LfFUUJllU6>3Z@I zkv2*A>Ep%1^mpNeYhFm8;v8`iWG6tw#hNkih5~qvv@h7(KdRm<`^h^oKo?uqk(BWr zX=@4Nyi`NYUEUyW?B*6D8%$vDGSd8G-fssel_Xc?Wt9(1eL1@L^l_aID+1@)-lwVt zBwceB47a2C7Wd#Ab!3tH*J9xuEL2F%$UdE)c~PYKuQ!;0(*EV7`%9dl%F*qy91N5L zio8Kwkm_N%hK|^jV*GZ1yiWQNO%2U+bt*p^tLkX==+)M1X`WNF{!+H&Dg3<4HP$6&1 z5eZ>>H~*lV7AP*i7e{{b+Mjy)5I5U}2YpJt89#=p?)evi#>Z(EaR8B8!K3O>!o8aF zlD&ij*5Ftq=m8UQn`P%YY{!snZn`tRq z6cLhS^W?HA?;Lae?n^FEN4a2nccZ}mEdD{e4nBb$9bS*osbt!n!Rk}As&W%D!*7x4 zB*S5ws8K1Pa8biHL=bE;sp2-EKF|L|hzqiVu9^6OSs5kAF^w}2Q^?=b?!8HVNG&LF*5;=uX}l zD=`yL#7d|wt8i&4&%Md5T;Il`TRYg$QL~}cpZqdplD=Ia%A}5^fKuUnz0ElBO<=R# zkp?jKrq@4F7~ZO78$Flil^mwr;*B2@=@GmSn(1G<;6ULvzf0YGoQWpuNARcw4H&s# zIC_DqmhE+EGdM)K#0)+5PhDL!v2~SW46f_=iQP}12zPtG`ti=nd|{;DxGZF#CI}LR zMHBHT`9Cf2=en)t|M`1m$~Ez@W32FElI&EcANYTguM!`u5y)%&#wjXm;XjlnpyALBlG zA8R4u5|HKw$!ohvv#ZvILp;vj?_Z40YhC3{E_;Q3C_DtFysS_8ok^VP9nD8kvDv?o zUs89>W$%P&%>RU^TATNa8Qp8d(wv1M0Ya`s!PYj(&JjaE|IU=%+<7Efshd@ORvZup z2bJ7DL3-`Kvl4q!(Mw_HjoitP1_`*q07l71D>~h6Wf<>}?4*f}^?&>UmIvE3x(^lp+w;{A#RVKanS@?1 zYhKz-O>|ex#s7DgF*4~ZEK`<`&8+N_0Wo5i2af9n70ZRE*T4iT<-^U)UPZ`L^|2$Y zT_Xs7j_#HvdfXYP6n`)X233M(oOu1xGOpoV+wiy^np(L&g8xNE=Sz?>MOAmBGMn*uL1;g`=_Q5}J3!eN|dTk{1n=M=QAM3wO zEIe@76D_lD?Wh-6D1B*tt|mto`!#plaTp)yB;)m{;V=_K0*FknFwFe*h$&l?%Lc(A zeBz;JG(6Z%i^tXh3!iY~k6~pEmyYeNhGq*T=_yLm&)F=>Z!L{{Sw_L1uqe17dDcV|JXzCP`Alvsp9QpWw zIttDgMt1kPH)p@yl2z9}EWO=V|bp4uMM_{mNT!4GCQr%~sC<`i*>j>l1?QGvOpm_>-4q+YQ zNq|h1W54w2zp?9fP1AH8Bz{s*2|}6F0i77e$Uh9Qi@0(D4_zauMTvb%JonQSuIKM$ zJ0Gw>T~Q@fG!IamDrY-R_+{@f0VW9BBU=0A8RXSTAUb*h3%RP`0L~=NLG7kr>dR?< zfjl_gV-8uOc44fox0w=IkkGi%@MAVtcUIKMukVn76sWAP-fx+cMgZa{&DfT!I3Bru zvc`9DxEF~4Cb6C3hv6Y@^#r)dKo#sC@m$1X@qC2$R1Zx@<{f8;a{OfB@SLmu%=b@( z=12+sMd@Ybbq)1hEim0=fZTo?TC=R;!{STjUvc~3v~}KC^lU~v`Fsmo`OfyS{CwbL!q&@fBoc*9I%<)m?l`ZvF zHHYT=@R40*zWHb+dvZTq+2W{@`t~3Grm?pMsUU@-Ipm7tITKrxoYqW&g2$ya z{4FD}v@dAe1|xDLZ$}h8S~%3YNWZK4$qgv#dFIn%$KSnLX)mIMQs>;A+WQJhkkR|I z<|bHS{7C|NLYK?zz8qXBWQnDzoKm++z=TcO)_fz{-2| zZFa#Z%}}A{zx@z=$W`?|*MSZ#k8EDn2T?fm)Vg!v98@G2HD}R0jk;}Jt=@~I!_Z?n zDy`F^|Ky@LwQJ|R!!O=`Zns$JCcxeQw*pEbt$L^TyT}u*tYTT9+D}D@O-F}KCZ>!{ zyh*W|xK_U;Y1j68zc1p|=K}U&mx%p442djG4tQhr{iHDEtBCFU^=LOziRO`$ zQGLI}TZJGzR|ONIr$`Rtq^}x~F|*iea_Pt{g7Lm2}xJYTcDs}ks9tqO|TUj-COM@JBn=xAIEDcO|+3TdukeCTeta97msc z^z>2D9IA{(_IGZ>H}tQ*qI|X8kH71h-MrYl(<#0oo^BW!c;1yi;_N`fju5mi|J4?v z!kNP==lgZ%p_lsy4UQNwqOnwwF*V(6PzVQSc6UgVmh+y)x#Y~G_(9_?t2*#Kw}o&F zC!=ms^Ut%RR%703+*xBPZM*B(WJU?>ef4Da%aWhJ84J~_Dbd=NSAEUJI!;JGZ`9J- zD>e`TnClB?NI-|eb~EakUGaEY9nv%J=lqQ((L?c6i1p|<-Ryx|?@|&!(3+$s2O-j!D^*NqL1KYeYHgHoXon;0mnxU0U7!3i5lh*)^Od7k4snusp- zU|bNs9|=%_z971^<5*~DKSF?RH)A@{D()cA&h9`cef z#_>N#<-tJGgA}fPuYaZ#-7qhzV^Y2*El-X&Bnbd7kYLZPG4Rgj+=VFHrR84@-9ml) zJlD(L8@rc;kOcA^c9x)W53KS`g#C0Jc`m~*NVIu((6*kMp}*~uW5chnl?(tz3j5L9 z{8d6x;DBzC1dR0Mzf+=1Sy9Avu(HOT{XIio$W13K<4MJnWN=xYJE-G=)hQjCRP=sg z_=xtC$64{{&e%CP%RA{WhadjfIhP9cVu{-e?m_8SZTc%{+bB_KCJ!gbCgY*>R*(MA z!yJ)ChN)#;wY9HNX|V=Zs!RkI@y1bjykud#MPaZtKw=EQg$=~i=KY36+;6mx;shrM z$M$`Vz}6eE^x-}N*H)aOT*$X7hyV|VsGvMSP(%{pY~gf@IT-mWSLMAg@{nBTytOH8 zO%W&d;yib_tT*6E&^AU|3x2WeTABWozfP;|cvGW#*;aPgpC*IH)n_w{X<7l7%D*1T z=0KmWO>xNPA#MdpBQliwsH%#0I(QO6$@*#1Z&Fy|wJny6ue@SU^@d|JBba71v4+iMNRRl3FLB%j4z;05|@yK*naFs$nb9ybl;~{CC8JCjrHaYAL#`0VyX` zikUDzFjgtx{YlySpT3Bf$6<)H^D5S(Qt|prUoi)?B8>g2((>=F&GI1XVh%pLkB4QFvK12r#o>xu{Rx7l|uJ?=v=Np?%*WtBM~gnCKR>J7e4m z;!1uF4*j(d-vYC1-w}dxB{Ae->v&|cY={GkvzC)}_n)YF{40FA^v<}bu>f@swrxea zP#a8jcd16ug}ZlLu@o9f>Xe)pj)`&X%Ef~@b`a`Q zgG8DNujwmwUx<0I4i~_&Wn^|C9{j$fWEgTAg0{M>pyQU_=y_J6)+qNXr!{3ZMk3u< z=}2yrb7!iQdJe5s0KGcqwknD}gCOdTYK%WDK{uo0z5MvTcwrg86?)t0=W0JKM?gQk z%Jun2Hah;2*3_Jf9-;f_$@%!P?wh01pXU@-zf#F!TXJlS;09#7!#oAk#=T}ZITrXB zQ?~bs4erBLl>eI&65^knn?#5lQM38iHgNFu0=%S%=x()g=-pVGzHot{F@x@q^ zBs#-3;MhejX9$tQd4^{N%fPxLL7g1Kp|`&*F`nvoJa_+22!t1Z&6FK)ww6?HU8}Y% z@aXi2RSBa=6DYM~R{4sk9ST;HdyD>fu;Wlp1AQO0kyp*{kV8 znM{$CA$+ms6~2W^@fIy+7?jaVWM`1v za+uH2+QQ{@{f@dy<~YOkZD8u}fT%ay$YNj1}vZHAJc0=34|%jT0{=8Rx)gJS>U2{?_%di{QEY z5+#{OA{?CXGR$NbFwBkUuHUS=)<~YxUqQE9pcYCqQg~|WxmQ*sxwDCF7N(>}f{1VW zqb2;JYW~t5h7`E*6y}@2rL}SWW?q9IMzG_LbluxmAGjn?tXE<^bMFVydHnuDCubaB ztCs8$285Y8H68hod-yYF$!&Q}(Vdr#4EwwgOzzjaL;;{1vHHAkjQEuGqB3p`+I?&e7} zrv;!*PH|b?p@&tR4@(0?nJbIubAB)ilmmFJ6nvKjY9CHTs)*Klqi139Q;D@ zD&!vQ{9HhXS$t{U6g$nq{!Rdu+`!*K0G_ftl!lU*vf9LcP0|Qy5}I)O?y*$eN(|3Z zmqp7uVj$xXtLKiAKaM^>p3TXY;Qt-Ajox8MG;a#18A4|ALI8YJNe~dZuTt^$l7pz9 z?Yj=*V6~U9xH~(qcIUX`hl(5Fd$FjBd8umMv(_9_{RyqL2U>Oyp~RlyG!LdWDLQui zJ8cozI(rx`mj~6QQFDll8$_}U7qCGH`eG)BO^oL8i?4U9i;Fv?L*}+T3WwduOEXUC z^CfdwLc1t&%WDdvF!i(!WllfxLwdB3DXI2&OnN)ZZ?=W%&rB8a&3o8Gvh=^2htw1t zkhPoN;-%~?$#oE;cxc{AF9MU_ZXXGFcvE-)|LCP6&FqLRX|NVQ(|f!hMG9g#5}p#Q z^x*|Q)eJ>fDY}N!ZNr&vG4l+fN6?~HT7>Pn!V7BLWJln_s`xdy+`&fmu5ngD4PPwo zCuckmmcGhh7@e1ORm~ZIlzUHvcx_K}=X~_$kIwKA%7&A|-ut?G+VgrdxiXmvic!hn zOIn$J>Y_U;gdUWVH2xyQI-qMZd!^hc-W9Dzw;a#)%yKJDG7IMqh|#ee;_WeimuZN% z^ZUO%dGhS1RF7qJu@NhZoK0ik~=rM)6;w-HN)O zSRgfGI8x>@pV6YD_b$gjMKz?=1aK#9UOm&e z21c(3_7{ti9txAkD;rLAd=37$|HnIwGgs-!+M(MI6NxT(eRY}fD9y(~dQX?6)b~mI z2k(`%UR5(Awr?^pV8+(Jc;<5+V-b!G)%gC&A$D>LOtO}k$N5`u$E4}b<)Q0(q)chI z2XF0z2pc}ZYI$vKMHXSo#Ga${(yZZQ9CS&-fk6Ig-+FL;W8*k^CueVSYes%NE z`cW9y!7yV`dSUP8px2q9)oJu{>vMQvLdEReId zpgiZYC8~8>#JP9$B;|`l8FZ{<;LJ*1})1c6uB6>?0I7kL|6%=`2*HV*~f)ofH+t2i|BOgwA2(+nDFE z>_Zy;`Lnmh#M-{kHpOIILu2Yjxry#_WE0BA^3%$0OvbdKEgDk?XW13_QwKYTVwu{>+1|MX$igX>bEaG&K2*0*H&v$^_mi2 z05xJ=3ZzU*(cC&;F$;E@Cv_43Befv%SEL$}e)43v_CqexLMNClDs_$zam>TtR2H-+ zu|caw+G5I*xNuRVj~@LQEP5lU{FIh|vA0BH^sZ~V>5;5t?WjYBV^0sfbh@3yj}`$E zl=sw&%(O&!gFfJ*=FY<-rVu#<3`7UjYIa7i#KqG-y6?0sTtL=%4@Nl{wn+2@;H2u? z`4(CE5Rr;oCaI~Y`Z8T>qpke5jCBm2@95*igMV*klVc#`;;^-SBwc){&Z)cWa6AYy zoQ@4M!M}xn$+!tBYkh~e5$R+;^^TTdR;g&m|Ls~%{)nQ?S#J_woieqLA!7=FuOf5bz2;-)v6(;z;?<*N-Zj`M&EDj4i1D z?3^IyPjDZhIgzF7_WgIiCRh1knx4~f7zoXL*5G?Z#q+-=y9Qv%My+uZEUi#8X{-!PQ{d~1ZzrtXT;BJ#_5{8FE_%SYA$RMm>eNF@17B_ErMAB! z0K>jPSbw*R6IE+e4SbLA)S7y;yMEPf{xb`#!FB$(&J6Ud8tYv4L|r1s<&+wqG&LIt zT7&7y7)6ZjdswrLGq3s+@NQySp;Nr@ z*j*I|SUZ;&?boW~hHi_PAU`Zp`evu^rBHj}s;r?f+*glxz=z+xo?0GF7dG|&l)3U<4J zGN1yf6}2?01jdrMmz?`>STyU$g1dX-c;vfDv3d-UIL9G#G#Xvrrec0GC(c+040*-= z(6C)QMW$ogdGG$)&8N{ADQ77^2^O7JP6)8-;B!NeHPxGmE~>wIeJ7G662%^cJ1G~o z^F4DDa97+(flS#HaC1!m5{lcn@g}l?xJDal(QBi-A6H%=lpa{AktK{$q)ZHRv_J=5 zm`y%&8450-Y!+owx-R>zdVRh_N&k648eYT4dyKc6IAe3jDIS4p71leIC)Qe33IFlW zIiBunDcamZ@v)(?EQ8LIo+HsqKmx~=o?w^QiP5Oz_kDxzNy z>BbzJH+JaRiE(Sy?9%0+oMf`%s`VSkEu-OkCFx@3%qxmAJAVaq{ihu9cZntmkZ}+j zhDL&2nqbDucS<$zC}Ogsu_VtLX!bkEoA4>U)m)ad3zbpQfGZcW-=&sBeE(SbX6{B~ z8Xy*f96!q$QE~_F=g&54|5j>z*BnzuVe-J_#gf+@2S=wj=ge$pP?qedZrAq@MG7}M zlx^t*677F7wXUR&BwLfuMb$b!_e^unYt8tPdgu;W9C*=_NW^=wl7S$+U9en_fVjBZ zwB50UkEM9vxlMO}=lRE?r2c$*D;aM_y;7=E57ocgQ+F4vYGGF|&y=$a-_U9_?&Kx2 zS0yiNPqKEU?1*8dsU#malP^*S(;I!4`S{r5vjx>Op@GiBYSgxmRT^2giu`9#cnZ}@ z^vAmQ8@R6}J}(mD4xT86@|O&I8*vRS4ny$O-IwXcbGl_wzNvE*n=;Ut^#?MS!T=0OhmU2sJ&lALLc4w7M=~3C~mz!s`4Hn@9p= z_;7nA8iyaNMZYjBw9!5G6{uW7?(t9qY^h}`7JAH8%4Q{yAW&FVXq5`Pr?i^XaSVrq zuyCXM50A|eP1TLvM#X;}GfMxzIcD5DY)l95+;&1v1ozrg%g!BBqh7ssaX|H9q(Myy z9d0C!k=*PXydO!}sPn1DiqO#x=+VWW_A4+tNpFI7lCsgE<_@!06#HIwRhF07J7zLU z8U4YjsQG{QpKtz`((?b|*r6ZrIHhl4y82jW;3CYJ3{w{JSW8$XOT7267_{q#a_EEqe51_LQP6 zc6$t0a^|!TgsNkZ(~G@}f1p7GUKrVejf4`x$HJ4WsQ#gVJCi|Psx^8@VnU1(JR>6M zx_VtPa+iqtwvrjwa@E#(GQIWsWKWH-%3q2$TfnGht8!IVQBRDe38SrJdSf6>7y(|C z#P8Uv9Qwh;^Ol|Xs7d8Hoq(n;DCbdiBErUWB&fVmoJUg9FVcDNt)18vgHbq3JX4~g zgWlU1K-p)2++oMY3`InmKz3}8)1-<22U7n0k9Ul>uli+C%V<@)`N!uJk4v>j zSXxhi62_vwZ`bjQ)Is<^)v}DM6dF4zj=uH}YqC6#nYX<=q(Ny&BcDsbwvrAW{%{%G zzpyXI`zZ2SHL2Gr4%ikAY{R%u2KEHZ>s>uPDtEi6wtfC6ltK+dbN|9+31#?IS4S^r z>NtKER1%yIVZQ*c#cSc8uNuQkY;@E;ej7C|daI8E z$bqYJs&dj5DrS~xWAp9hqy}|Wxi>zz=*lmtY5#69U0JXPo+vGd~*Zgs8>{j;eC7 z)IJJT2@DSrGc?=efkaqW8SU@}F*rYPdg?N=y&$6P4dXguJK&ZGFBdH-ui0$5RapyS zTKR;k6djAI;ryNrgo?;94gZ&w9zz1isWx{I^r?%9z*~xq4e*hbmFf7akpo6nY zBOKLoS<`RC-BH#oLdVW2uoBkOlTiA}aL@~ljE)mqBU&Sgt%eoUT7j?!a*7u7+mjCbz{H};)&GiF$T{c|Cr(O8F+wce2!-F#+&}-_S!8;jR zVT3>8Ci%TWy zPdFZ;ISz#l`;HZZT8^aGoA?gNMn+y0|4_9mxA(g8;#?srfrpre9HdsOw>0I%8=SsE(x)n73 z9~5Wg(Z=Cd&vt)3K@Ks!Wn$T}diUh)ZQxN3A66+Y=|FPDh6+Vh{1d8y+%Jf)(RP&X zjy!0|5ea-?mT8W%0koo}XAd^80W34Fy~STMudY2dVw!w;cf+RMw1SfO2JB4~*bdw2 z*sdVFUubTF6y`2$z-en6QZg7;+q+sXhl{@$zZLlc*@HX*KBxL}WOW%Luh?j;b(Fb3 zkY7T}5=sQe#G{9|1(wglO+ML8MwH<;S4bw95hyR3A;92*ig*8&BncC$Z?Uo~woGDRbJ$q*f578uvENVpWA6U!fP5~WpmPwRJG_Q6&FXEV zFvi`nbTg`R&sdit6fWxh2Q<_kg>?5sj=ZnGT)F9>V&o{BR2NxJ{vdroTd_)3ctMe9 z-d*-XH8(D-`*D_&jVc^^zd}GN>S%C~(E*UpFwlNOCSkOVWXI#r{H&|hSO8U|TJPq& z-VZu5WJkR7Ik6DODU{NTG-U_{p_WdBQMe1^hSKE>h`dxTP~x?Z|C>_jgE1c9a1?iMB6mULR`cF^PiCDX_A$ zGLYZPUKs>W6Y*Rn91q*DID zC4K`H$~ILU{0OrE4xapkOzWSCSzW8BSxS84i4RZFO#f>C;%e6UK@LOl-%PAeY%?hN zsau?*_i)C!&rOy;6)4M1Tc#HfO7Y#)dUU03Xwx-@RL@?aVV0bM$?J9$ZO|g|YnrRy z!ORgmU##P+!eb$Op#C^k{F5lfISl5(Yf+RDxW215CYx(_WkyyoOqIMQn^4@FUGpKoSeM!Gi+Af-2Y3INjZ7Nq` zp7@|3vvvs`UAvZDasA(30O*%Sp{i%B+c2|ZUQM9!lHlefY9H;+sor@y){pnl%HrbC zYem%%qmHfeMO(nUFl?ju?>B8?$4NTND4trY6$UF&F}h$iYWeDEd_3`gXNl&NBbR;> zbOh2vx2#C<+9XYtbly^+@#>$ytIRP(iY9m^P4tYEBdmCi{9hNv3F7~vqm?suq6PLS z$#%FW?Fm~fxG76?nv><<1~lk9di>tu5_I5lIe>R3pSc)tTVp6K`!;%LdRFTPB%Uu1 zr~?lW$ZK;BJQ?SG{_mGK?!WY65M+k(OZOos)&qJfn}4!WR(8E?3>MZjQ7dlx!t1SS zMN4q5kp|f+sQ9PjC6D}WHP?J`Q&=j}_cQ)E$+^aXu{Jti`QzokT}^T>L6y?~Bk?ry z9iLv*qB}?-`xj~@`WI?Fa#3AieCLeI=3}5@;YY=6OL}%J_{2unjE{)BS3OkKsO*q9 zMNTJh*w@Y@K}>=5VGpslU0%N|W&6(oDiHZ<5%#oo&Cg{0oUahJvm*EB4k|&Qc(VlP zR7Ng@kK92vvFKAVa^K>hwV<5ma~_TZ^?-Kx#@kOnQGIo^w~S7`GjAHcrprwZ6~?`C zdJbrLUAYi+!bM!9G4#%7pg(|h#pZ3)02Vic=p~3Ji4XOs4V8n+o+>jqc@MwH0puzx zE5(UszD1Uf7Q=IXRJAPfpI-9-<3QCnz%q&w0qWIqnZNfX>;4(r$Rf^Jxmo5s z%A;(g>wKfUF_MMC$}q44@zbfBLjWQfb6Ap@&b(9~`2)ZuV2r?MZA^gQt-fIBygru+ zl1LJb1_>757|j1`WNHBD*RPi&jgd(YsHvXSY{kZLD2`9W{s(S!nlV-G_%fAF2=FPy zJ~Po~v(BK-NZIMBV(l485h6e!9|(2zouE0OXs1M}g@bJT8gl z&q8*t6r{V3(0pTA;6p83$4HBn5kKwdoVqAs*w7Z_^vi&3(4TuGFa%Y0Rp;->efLqK zd|tGYm5T7%Sw_K}br~gsW&-v9hY5VM2C|=ik|D6I>#3+m-zF}zdtQCs$(yWcv{iJ(X|20ovipf;i0WB*!K?vqHF%}sNQ96Yc< zZaybPK;ppwF3?PY$Pr}v#y`fSjPT|PEj)^bH^h`E&udXYpMUziIx^v4v-AiEtWthJ z=#47kfRu&V}t(D4mcH%I_X!DRc^yG3wm~H5F&8H1mr@@93ecKebD~5 zLD$-xxX+23_Pp$EpYI2D7Bp%u%Ugw!*ZCL9~*@DmEBmIX>WS~+a z-P)6S+tRAv!7(lCmpM)+qRQX-2SM zdArO^>ekp~%vRer`m}X_oq80@GU|=w85WJeJGRkGZz^uHR{2PpCEpBy@S5=mG!Gd- z*Jc=~d_-di`h*X#cqaY{jhl{hrli|}4EC;;t`$0>RsZ_ZZv*EAn}90~4_%AxXCbi$55(T(OB6mpOQA^&BSq)iYN)!4)Hiu1SdCC#h{g)} z$G^`+Z0+!1U5t}N=i%a5$Unx{o&$|anl1j7>4hCb!9oA8V4T6}uFQ;GNw(qzmApiG z({qT2{}AV?=OP8UxBLGk@8L?jJ$aBX6IeRTq~zRF?C;i|j>o0(obJ)#I9O{-yVc z*ACRIHoA7{ufdJ4guDgRKcv-&Fr-Kc1MyrZab!Q9d(8bqP)E_rXMrj;8F9lVlE(WV z!p)oMugcmO2JyK8Qd6i~YA@$8-n(wVGY`2u6khg+Uhk)#(nF&TKa^uHPGzLQTl*%+ zc&RikU5^uG*>z~p8?;Te34^ zUJxHdh!+6&x|ng$p=zdGq>&*Y=so$I1|Q_Q+Ho@(97;&1RRc2b?8{7M_vTC07r6$y z0SiAqQxgXi5qg0`ONNhlZyB>yuiQBOU1;1dD)J&7Unou=@2=XGD_>7~#OUNj<%g=2 z>)kaSv7u-1o-rb{JD;In1ox2q`$8tKPNVLF@5Z*_nD}HdmJBqR0%~UTs38ugjlUOj zeUHMMF(8zbBmIcF`>vY%j$L+yl-9pP+6xG-OT%c2D!#33AI+Dzr)+$NpM?(g_dOip z+V;gU8Q}XXhbmBv&znLU;dvAOG5{_YF7aElf!V*1wRrxOC^*&DDsmfg*=uEsdmD+% z=##MGbHRO>XQHbZ80Hu18FQ#q*~~S83*7E3C>#-hk}|UU=rUGkY#+NnZtsQ2i=655QfFYQtAdof<3>5k5Iwh^ zsi-@h$X{ZQ12JDC7KxZ5aQHJ_&M8wg4=PVc(IMh9X!)Butwo%|V9Kjd$)dSF>V(Wh zRn8%L5ewGS2&m(a4Th3akytDg>E{^r1n3)LSs;dDXr#fC@zI|BT{L!iIwPvq>5uBj zzj#q1(sK*K6>`rOW%WT`=4iRopoh1i%v6bbbNplX-mTUsDEct^9A@Z8R<-?nTKk3$ z*2XGqW;b2%+!TEYhf&&rzm<@`k?ICCS8VumZe$0>gvfBVX>bSf41_rCvD?k^$cKX9 zY#sc*O?YC1Ioq_CWA;YxyfdPoUtC|so5U<${Lzr3pei9ji0s_NQ+!}X%UIByQwX9G z>)8+%k`Ug!e*3BhWEdBwXo<#mj+LLHpW=KhYm-auOE)@xK7uIM@G_HF3xR4fUikdB zCK2zhb>fsBlg_>=QE~!jUI=?o-`VRAw709{v@uG&m9|2>-$&h+(Z@El4Vb~7)kgtW zW0_jkPV)=pHffK4Tlgo8ph*P7x#K}Snqz%0cqTGK(YUFDd=Hir-}Xi zzZA->&EYvw`GcJQGAHyJps8Gf*Z<{TD#m8FX>}h;N1hFv3-{-tVIuMDfMQvSgnPQ> z9f{PX=A!kS*?#0ePObsizo;|HVr%BoNVSun=l&b|v@ZkEw_-Bz?IBTl;afC!^F5YE z=Km+0&Ho*)<4BQI{DQ$7QR`^^ROSJDnuE46Xuj~ZZbRO)6Ylp5vqAbb*b$zN%1k4K zgerIKQW1ha(UGCuC?0N$zUD5Fv?f<0I^K!nU^osECTVFMM{%Thj9`};))l(KFt-@O zhKS50Ek3t7sy;fsh+`76Vo%y6*=QbuJonI5N1ws9aygD4w#Gq@&ZZ0rxlWstel``O zX8>A`j_`Q_ILNXWuOi4Txox9!X`kaTD;pqbJ@$nSj)}Ho*4pUWE^;6 zKvF_l(1fX+lQPox^sHs$9C}s|&PSjx!Hi7Ht9>hCj6O(}1i5v? z`9soDqskod)e+5$O#HxZSroo^9KuBsUfUppis?nUlzy-vNT6`fgR+u|U~DvRZdLsa z6uTPJCSoGTv9JaN1K}&rcMMDR(TM#ao`czPAL{txL+jKViO0|#8{VvDSP6dT;}FQT zQmo0*X*D^MbI+S!GYsq@qXLbgQcL@BYx#*$B!kv$CO0+0H6Z+HMkeiQc3I6ps;MVWCx?C1oDFElVuo?N;_AFO`0 z$yQcZZ>`TXBgP%sCIgsBG1m$eM^d>v`hzRZGYgg%|kHvdoSY~ z%OJT4k-jG-L>b=ZX<8=3q#7Bs1;mL^MQ`vO$M+l4C4VhR!$voeMPwV_IUz{7>w>e{NxgB=<@^ zuyWO9mAbg(YQMf|f2P%h>KWb$ z?|Tbb9zb=v4QYLX*~FbAc*C*$xcN3sw*T2=Z?lkns8l6kO=SK^1yAN(24v5MG6@-`7=Y{};DDdvcTSyIV^X;j}IV;JO-dz7!rMAhRA6FXhA``LgkqvJDi?zQDtLls1Mqx#11SLeeQ%XW4WD`nC zgMgGuNr%$02oV7(>5vW5-5|LMk!I7~-ALEod!6O)|2*&eyw~-f^XXiCn@kpS%{Atn zW8CAO_XvCw{;LsI#*X)j#-_!CF>X5h>iC2p^gt=?apSiUn+F%Ii+E3&7+FRb!7+sP zGvjZ<$jKtSo$MV!DdQo;{xIh98#g3mZ(^sQD=YJj0ODYuCmy@cECI}vG<|F(-SNh` z-q(v}QP0!AL_Ok0Xg#}p&+qyCt}VGi?yVLdF_W9dlR*K@Yw1woC;h{3o&*drLn0%T z6Too?b0(vFSv!hmW3l?GZhxIW^vmx+4bJjIOD}YM;f3&7B__|(R{|p*)3daDtmrve zJhuE=<017LU4NfK8u>qoUx?j#0A=6uvAnN9m9 z$YSn)=8n^t$GX&m?0WX7ajT3|+$Jm90esaOS1NWTHgLay|ItUnf1mgrS^|Sw91a49 zq$zBDQZSH+=kE_@*tQaiCA`$ptQBINm9K1DSAISGYtzr(Ay9Tyy<;t4O@OyK$`hsY zp5&|D5|UXo5bwXpC8|W452>vmea2I2CuH^q%3^Bo>46S+9tA>=z{LT{Q2b-8my7lv zF+EGjEvs~Ab_xRQUH0foZGp0{Ne+u{H;W&}cjA@FP-U?cD!pVOt)p+h;q9t-_u}^{ za_Q>R-=8kW+{1|W!>F!%a}-9_;gN&6q;RamtYwb4soE(MqF2RV?xO?w09o@=;d z(&&l7{c5W8+@astNaz5h>HDWXY318ib8lx+7v`yG0@@aXXB#YTxXvGJRG67?YjW`3 zZhc>qO(Ga$_tCLgz;%f?pT;6;f(qU!cyeg^8AH4}Z4Lus6w{;g!HVB_MKS%%)%=4H zId09SrxN>-2c3A0+L9yNQr}~UY^QBu{r}5aTLP^PC2pN@hoLvmS)*m~nee$-Gu>q$ zl;NITepcqt#$a`aUepKNyYE2JRdwx#^+}O3+XbxkKqH8@p;$9}7 zR!E1VKP+>?b7%zU+=Y!a=J{}>lHl0(YjWC_VV?_I$l^}cShx_ezl^q&)Vh| z#xMU^xUB1hR(mT}L61njLNKCJeg2wH`$o;H{ynfmbba)gU_tWvzIOO^BtL-voAm(ifzvIcHkX;nrN1K6$v`mjYeaN!5vf{CeC4ORohs%U2JDu3R9{(ZpQ?KjN{g6FQVARah-* zCi+dWY-=RK^uIKeV z35n>M|L~#vQ_oe_PcSnDm{aYN!gRQJpWxbV-rFZj*ghL& z`!VZ|Z}8vcOJ0X#<|CykE(&Ju-|+8zR{Aq|_ED>l;8*S2)-AegW`VKjW#=AOdry1= zUVTG>w}RkrtV&cBrp;^0^fg`EheE;0FGakM1kl}>U&+^8Q&~2*Ep;I2@dEw!Q5+`h zS1>QkUndc1kC|vPfvYPr?>wvKi!jlef(TtWouA&QJmDXC!I{I?9x2by zm3F0#r5Ok{b9er~+L!02DOv*C6m8fl9Y2s?SUOxTg*4UPrtr+=QYc9zf12WA{KVKW z1bH&q4^w82fBnEs*h^`d2T*2I9?D2k%hB%-7k;2z5MG`&tU^GeTigaU+H!5YOu@?; zdpR|{#TGm{2(dy=5D7Bc}Y z)4?8_7fgdcD(}sdaNMF+c*A{yJkCovg}@3EEuVn6I#>R|ZKE;)>t;D(}Dzp`th=vjUUhsH~vbGW1 zo036d@a1t=@AohQa$k3@17XzeoFyQmP^|vgJ`9wZUe5<%X9=T{-b6>GrT%Yg6 zzxCA{!FLaBxfqgRshoWX#O@*;p3V<{Y2C92C333xUr3*D5!un+c##6eD&wq23R<2P zN+HFGiC5kV8*FQ3Cas-C8^>!=JYdFL{P&ODUY^h%g_)LaxBZInx)VMbqYpt>cXSD3 zbAV|~C0gcXzFd6DYV_H0CAba4Y!1m0$0)_R3BA;a_z*|q*dUW2RaIT;uy%e3+c!o2 zDIhpIcDdO+Kit0zVtFvml8%bmdi|WP@7l_xkqcj^;F7U?3`2dtV8{Bew_;5D#SV_` zUxIx4@0W7xj>|Z_RAKjTeIXLQW!c7W`l>7$NPvw6rO4jfkGiHj&u=H2`MA?DQ;-b~ zFEqVK^U60HjistIqz^MPerKqeob|EEX!!HT{<7Xtqcfs}A}fVQZ^sg@tgc2&c5ion zg+%!IH^j!Dh`XOZ19;6VUrfL*@5Dx?|H#04Rd0C{az4JZm_Ph5KSh)zpm4Wz;2PH$ zViBtS;I_zmn7YqDYYIDqN$mNnj;l-Fe%iLU^)kJ!MMu;GkQ>3ioq7h_1z_UqY<0;igfql8z z_}wdi^Dst|6;B&!nf8lq#LkNk3l#A9E?&+86Kuv5fK4eIuq^b>xvQ z{nxmQ(ff!}s2m5E>|EB4j$N)4%q}+_dO?Pp={?|QnX0b?fr8-<5_3UO_Dtpr$)YBM z+svKO^#JROE?jpFzz>s;>oZkSh7L!j!A%!sl^;f*!J-f*-;VP5&=Q}Dokny-8|>(s zkK{k(Vuq@je9Gt>+|^ghh<^DCpMse@Dl1Ed9zkD6QoJ2BIsIT${y zYlqDHHFgEGxq02wyX+8lKgT9JjM|kk$VxX2D2e;C5!Chbi zjK~IS6(~ft^IVpl0@%uIzL=ZdAz<{KE7(CRSovHgnwMl$Tw3n+*;@P=w(DRL1R0lj zfYEwPJ|Ld8Q*w5mU&+B&hj<_G?edlwV|FY7!7oM1Tq}wJp_2K&=O&tSi6^32CT)va z0f|M0{(UIj95S&4lc*{b;Weo)a@TMI!J2m8oMOLsZ+Ih3g zwX)x|T)MPzL;P!488TFo>_PHf6|1kvKGlzbc3IHmWcBNC%gFy$5c3qXys|<+MmfD6 zO3YUwU_$OjsHZl+Z1&1LpB($9I&OL+Zcy<)*a$$Mb<#``p_)U-9Z5MkZB?K1anwXL1&Lq5%|EUg9% zvViwHbuoc(I?Pg$DF~%HyiZv6YI}M3l}C~u`EHx#Uc}VWzs;O~hk!gAzO%T$Jpz-= zt(#5R%v1I99`0u~Fk533nAstHY4?hYJocsE?L+@)_OcO13FwbPh%Zf%KU%zUcy@HZ zYsGVK#k(@Sky@g=Kl0D{DuIJk5jjAflh7IV+$*&BxXw;ep^i*hC8j=8v3&j(`C7H# zv3i(Sfi}tj6D{*d)Z0@-Kr(QM_WnqJ?=cDgJ$7D>(ie)MMB!6OTAb{`sfA?*qkI=I ze+%H>AO??-*HGDI?J3ju@24?=0+nDrRX|}DN!JJr2fO+r2z`5k!fOGv6_3#8Dj?p{ z34E;+GiLmz{Q3#MRg2@Drw?D<#|aj6ZW07}z>*iB1A@j|=SNQtFeu&h_If~7@!x!totwei%iGvy_uQ<#; zz>5kNc)qfm_uO;)N~xGLt$j1SqzU=H5Vs){(c;fzckYIPGP z-`V7W5V(tv$-p3YM`SRtVJN(=ykQnO|%RO)+Uz0JI%PgdL<&l zf$Lt>ec^w$tUY;0vc-t`9$cDV?Wj;oJ@2B0J-T>g;`^Md^j0FCPo>Y91ra>mOl`w7 zGT8FU`}y%3t&hC__3opBdZ!fwsivU(`=~aNg--Ev=gZc~1Xe-8RqR}{w)ylc(#e=T0}d>tHpdZv8q zd)7RT`^OjSwxylQPa9E=DPCV_`=sL~Q2SG^9cPO)u{HR%;pg!)2I3edRntvy<6@C3 z3MvhR+1v#WH9W7DSpva`fWpLXC?9*Y<%o1N2_X3b6W*AZz%+YeW-(HRYF^>9S-p=X z<8OzkCzK`7oZNYrR`em6-DTqQ!?!Ft^exx#Eh7kv*hgiV9{0!hqqt&ufE3Bj=ricN zqsZLBTgZy8=RzYDdC(H~Ae>c{A)wH9v4X=EOBuZxY6T=gWZ)#(*73zVjfRSQ$v`HV0 zDvr7se7LV}5)|6P zYJPT)k~roce3&L8J(9WVsn(vXh;2YWtPi%! zu!r>}ZXfB1)BG%nuY*?W9G2PxE?fi|xSRx&X#6eBa$-y|H(p(Qz#{+Fnjuh|%q?Cf z=-1jq3uA3%QPM5FB%d&$LZb|B1d#NNGciT(Y_S||k8&Sf*S`*VUg)(8*00|JUd%pP zC7C}9yZ*LwO$dsbZ8KQuBoDjx1zR1kIf57SV;D8xO$G~0J5sT}ah!^uxbeY{mKTGb^A5+UH1If%jnZiM^p?h^gU=Ns-WfH4GiN=W_5UT`T+ry8=tIifEytjsR3!gnOTDKN<=&J0Mt;LNd z#Y@v-yB2j>`yjSotqq+=A}ggbFOI4zTUfya`;@hBhNj#d972i~7*kQ~b-AS_!WS%w zV8y2BU4^%gMwu9d``yJ7NYZ?df|NE`YfF`45&RuS4w+*S;z9skAjo8kk?muFOu@7k zu?Jj-gUw*q$F*F-1MS5P^$FfzEwc0JZE|0ToKpY zuq3oBC`kUU5c|X68xJNk{8FX&^Qot8LJ}V%tyRn!Yd>G2>mua@3hsI9%olp=I3E@! zGHTSAPuqBQcss;eAlTH98Sss5qZbzhRiuDv-^z>ZcY^Ch z3I!-V|BY_Z)sB}R!XG0(HhrTJQCzqPZd|Wzr0k9Ccw^C1wQnbT)r(6KvugTOS?X-S zdp%{=GN?%=MZj%u!-KplRgH?D!MDqAW(STrN4uOcSoI{u%rbh^%DTI9^Glhwfq!?=TASpLpH3D5Nq2xGaIg3rBzN-A9&))xNw0?YA7BT57)dtY>-2A< zT!{&i37#K1|=r{aH+D)jamqOJHeez5(_0>nGlWE2|mk>7kws;Od4ktcMBOi<82$(EF4=*);-rPy54;m zt35V_BMcoBG71X{WLnOb<#c||m7^ybANIXm{H5^5FlFthI|E}EU2PR=Tk8y&%`Xfl-`jJDO&pkv#=>Ei+xhf=v~z<($M|H%9N+!o6`MX3}$ho;w$@? zMSA8I67}_heHfw76-Bb{Urw1Et(`BWT3iMWKQC14px0H(;C6DBZbC%IR`Rs&_Q6v~ zck2qV5+k~SGEp=BQd8RE<4FTaC5D*e$(tkf7nny`&bIgY0UEqqosGj!TKBhBPiWYR z-b(!Or`Q!NZ2fXIXg-osgZ|$(F$Q~Pn$@E6JY1aeOnA`Q99->!8%BcY<@CDVDj~f$ z?va)>5^j=DU&0y5I9`2rlnb}d039726Z7CEKMy5nMnH`q9eZUIRglw8toV1)WmJebsI@f`I=yKE?4sKry#NM^@WP- zgLUm{1Zx+53MKyux$?IOiZGp&u34QR#T{1to^Kv;dR~)5ZAl}_%8~@M%AU!9jCdwR zB?|ra@z)mt|JLi%T5#F_@0hk){1xHKw?fPZz-rz%Ztv5O2IqaYZVq89yJH<4fu|d; ztMHxxKL(vCniqFoXS-k!G_FT4JKUKY0>sJiNlu*pjOtUTK_HK|bN)TApU>uEAkWV9 z9ER=!7jEV`)<_P23_2*tA2d}Rz(nx9HEL>VQgEe#pT2kY8Hi=}8B~TmYZkDq&c&2k zQ^aOKCyg!Q91EA`Ylb3;lPK9em1EesG!IOotp$s!j{Hf<6Eu^Zwf*V~(XUpKNHA6TJVVR$Q>XSgR2v)#A^uKgBK}6|GTwV_ z0x_8Q+?|dcDYeK)2>(N`i}#2wU|Nm8vp8RO-*B0lV{Z5V^+Fk3 zMb+)`ZnnJpZd-;^e`yHDfz7UwX`jYET#ewe_gS_0!i}!FrjNhqMaD*%sdLxPKPTad zIe}dPmG{o`8b0pyY?ytoU5?m1zql7tB+>7%19=7RG6#;yHkG62=WNcZBf}Wk&cRwn z*Q}3YO@IFeu)S=QTzUTWvAqlpugr}P%gJw^uPkxSm+fpy(N9l8e!V5vBWQU@ z@B_oY(;w{*vUzrcxu(R{}00Q^&JP$%z?>ZHf3j@L=(n9Eu* z8Yh$`ag&Hm^~&5J5?drNofj3INc+sl#Pfi+@-kWESpIGZ`(fRk%K4`__Xp4A49$;Q zB)ShBlUd+5gXqfHskY-?$0r)&oa(&BY#cv%Iz1?`bj<{^cJ9DIiSzt7*+SV1A2;Zu zt9rmJ)0>dFA03-C#e-JQE30pWQ0$siu_E!NT$O;T(q^6Q|oX7uhFv z$~-L0Y8#siz2#^7Ac&qUxgNhOf;mNHS=-a?BR4mY=Cp7!?JcH*2$2YW2R_UbsTb~90Q;-k>ClS;AcZ3wz7KZqQZ~j7lofn%}0&>Vz?ubQ>h}V zY$ISu42ZwQeeFwIE?(}uZj`fo3_vj#LYrco6H+??1AGpU;i4 zG0I<5W+jr8GmS_5q4uqL8o4@vopS4iO@<&ia}F>a|HHhd>OQ3PAQD$e_O*w&CuCdkFXv>9}p&)Rv+kix@3+vdCKwdRfR)A#$k+tt*%CNY(@ zgLk)Z0iBHKF+DWq$)gpLm%1>;4XRe)yBU|8DpFp%OpN^Q%RwA3acIB_UIioihT2M8 zPSn+-Cvw^Amm}+sD;!bUIp;Ty2-!dTfdgYOAZjk)dEub~yRa7k5V5)QZ{Dv-8$pzzs3vidc`H zFz>e;467VW&z48}{eEb3zpFQ3QvP-^?zV>j()b_1_8X(h+vJiIsbS_}j{ca7b7X$g zhsoo=UX*}ceMRku3-xDsmI`5J9UAvP9TtYhviA;U>K8_4y#=@Qc(Pe5J&u^`cXo zz%XfaGLCzfdS9Nj#sZj!${FK&WojQ!izJ2)k@ zb(!F|%a`*_!G#fv;ymJU>&}0+Faet)pcUt3pM{4pixYB?c{O^`=X|UCL`75dP0aQJ z$bzDU0?4^}8(`!;P?P!t_+{qaanvFgiDl80(>JBhz9HN#K`;5bb`}!2WWX_Cm0@pP z`S+h{rk^rR{eAijSL8PDZvx}|K54yxvPY0Nk^rm0;*L2(CWjzAgk&1*Qdr-))xu(f zdhf`NEC}B)kcCl?CF}x+H^X-ISH>4b^cNGDX;Jkgf7Qt+qc+lpP|||`4T>B~S5J%1 zhS*B2wX7K=!S;R!6c|%`u95CIOZWGnMAvT?2Owm=f7#49g!IhR)V+rHCu%nWR$XEg z)amxPmh)(L6}aIBg&^;*Ln)(IWtjv>=4WUZleXB_W) z^U<2|de-5T-fHKCf4T}-3oS%wbGHzlVN*r$kNMqeUmvgvBjE8)&` zJ8wneQM?2cKo1T@Ba55ZUMbZlcBQMKS?2U%0i%*{ng;X&4tEnFPt^*YWuI@66thLO zZ3k??(l|LEp0LH~p2K{HK`CL^QX}tkgic3z9szoC0!R0I&ExZm6k%u4X;;*<{+)7+ z)sqB_F@()v6uX~u8}0tDS$_H7EaRkeY2@K4{vR_KXYapDF5~zAogEsFT`@?DHL-&Q;15=iH@S%t7|cNBzc8M+#oH5cF2djzRJmvhb=#2zsO@C||j|o^`LV z6`8N81^sl?yUiA{Jz5Gr?nB_l{KUT8S;89|?pNJY38{G!U5_s5c(qpbBczo);BqF{{N$Y@|mOA?&9F(__;6-I+X!S zSEOD2O^IVKh@$H18FHT83i4EaALw-bIEFNvBXaQcR*rmbFOmdHK5Z_zKE;WWw=hUf z_Qk{wuyM$iwZfHNiTWX#Apv1mUSXL3;)(JIsU?6RO^Bc;bP&Gr>U%8c(Px>1s=^LH_rv|~><){Z;h<6iT*zlc#*XLtPrOGYRO_A!Xd zT2#cQH}^5lL;*M7G4o%jbUCgeGk8~BKd(*BpR%ex94N_d6!Vhhv5sPeXDs1o5q})G zas5w5UjjXBnKjLt8gnS!`p+q%knBiU0e&?t#X;d0_GNqIKz>-=v?*#4TPP~F%?y`~ zFGc0n(V5sM0$MBQ@&PMeh6%@VcsWCXPoA<>S;y0d6Q*VQw=va%_a%l3|Cs1^ci<)q z0%Q^C{}Qkk(3xswdxRLx?T_D$rP8Iz0v8>o&MQAnYn_S)4`O3Po*&<+1AbtmC-)s) z)Q+h$Dl_Pw?j2hIh7lNe+ud^w7vMBN9;rWC8>0fvF$*|VC~E)>l?nzWTCOh=3O>Aj z6hVCKeFzu?CfLkm1~>ow)u3TEKNOcx8r#?4@vD$m(^V~roso+-`D!wzoPZNettis~ zaeN|+0qmN5RaW^#|LneVg$vz%00M?W%P>FK2_dGnZE17vo8sT+@6e66R6rav`S^ja zwYW!7a`4}r6lfB}W#+-3Z4ztQTPlQ{>@k|Jysrw=x;f=*s?{87)33B6bfOPl&At%- z-=O0X;dK%C1Nus$X}*qsy_Gm*Ir7gBea*zwM>n1l8gzc%t^WF|HL3UjtcmPLAbS`2 z(T0G|Nqc&)AvlF z!)$M5HLwWT^%Udqiek}i82Kn#HV(7x#lWj6C`o#^@RPI_y2--M)Du&F8a3FGy8n%1 zS^WyS-pQbSypLQ?q4~u5?y7)S^@(%ptpl2jA9&VBi+#wzV|>{Y2z>#{IDT28wMQ$G z_|~y*mUtAV!f*t}Gx`^LH|>CF@Dx&kOT2hWEesnd2}F3EDc28rf?11R4{iz{!X zIFY}dV=#vNnfqWC(hPe(i|P-RO>@`!s@_^Av!BcN5O~U~Um6yixW$&Oyh}5ygydgE z+PJwR!`*Q{4g#b)aD2RW>$U*M(ujMKK*LGK*r5BACzRYi&bkCk7*F!_bgGG~7XK#j zvVEYTM%j`rMX8bchTrUKC?E}N=bvUbG zTlD#@QUV8kkm2S>KTI)$qz5#s{qFIPe;V1D$<+2p9;04QCc0ZJHLQcl2r@e*X|XEHPR2d| z2X9C>ONKCzrzxrp*GtmWCDn+wS{#GpQWv`T5nWR!WI#8h1-!WS&8C;*6F{9eY*^EA>(rv<*gHshBZFiC3adM z=wi6KGS$CX3@pRY?L*I2ppNDyZKeXUkJZtRcmBXonW|R2-|<2mknK-M-;SHDkUl#R z^^|5cz@YUZ^jdtm>ZRtKD0O1FB`yGBH&cb6eEfj}Hc_fWDf zxj|d$sY1T!EgCquF$A96&!>LsmqFb0%)9V`x@A>nc_wFEL{yyvc*wRggQFB-nB#K1 z5`Z#*4c=!K zbrc{7P=8E7ln89yTz5gX{ksfPZ{~|~45*FH*GujSdiJQ`kh+ljuP0B4kB}wq{X~zj z!WG?TB?MH-Ft)Z1r2;K|eA2fGFx^4?z@Jd)&b1ZuAxyz@fWVrB{LiQK!a^)~S0Gvu zl#hbugyW_RV;m9^#C%q@Sx2R71ToN8gPBd9bTntJ(q6byK*bK_%;PMm{5(u z{pAK`)fmdmstP&X|Q#YhxO*UF?#6z|jA;9r7s zJpqLpIeT|$w=*sw&8V{i>5Y6eTTc}0%j}$yoyW`MJN zeI@qeN={&ilOvJ(C@y&K_ZB~wFIyV(<6W1#o#AB*rR(C~=Y;=Jk&}TBo1C&787pj- zdc8cBc`GIVf0)wKDj1flafG%y1o2(D&|TznPrfU*b>L+qgb2==E;D-nT%Ut>l?yENsSV|(%zHi~CU!=|PkLESd$CN$!n#pR3Sr@SJOBq_FN;{^e`j_`OWons zVn}X3Nh3x)=ey}FLpQe%4j-=KQ_KdftbET{?vHglOtnw@`MQR^sB@a=ao z%x$W3ynKryTP$0>lw0jkqN};SXh%6h2EEAeADbG=W1H?IH7^PF)oQDCNYnLhPL1dN zY-4+b?JM($Z=_Zj%8PUii#J?aF8|FQ62vdzUoDOKE-Xpt}el{Pk5w*2X#deFUoGIrk*OINwH@d6at-Hsn|~ri;fZ7E`#~hQ5$Es^CU6dtNc|vzh`t|$Cn>hzabnIGIn0@pl9!c zhIV8py>6xOSS{Vw8tgmrheMPBL3mX3iAIwNiP7VMP#gOR3EFqB)s`(kiLqMz%60f( zTOX`%F+%jF0pl!mrVRy>SpE4>$<89PXQ?Wn;e&i}!#le7D^SIArE>K-|LT6)Ru{PQd8D*sL&j%vp;yq>a-*K)~bbN>kf7f~L{@FyaC2eql zxzgj(?!ET2{}?8T|K`uHv#P!;tSh|rJm~GuVyx=gCTSh) zv4=!Syowl6b(xGXQ*>1Ux8_4XjhJsR4^T2Go<4odDYX3H+`s6LA*(p$uV%+Kd{}6u+54F7c|4-Qt~tAWy{jFkvzi}i`+rie?Q|+|g5Hal zN$9`G&b!rFQ$LJ3EVnTi^MPh6G7x?U{4#5;-uFita|-_ z24`GfnxwY-q!@Xk2bgkM@b2ZGeQ$@hcZ~##S9#xsq4vqt+_cbvu`brnohBd6B4E#Y zmn&B(i@+XePp%_}=+;lQ0X9pW94Uz>tpq~`kNFlHWXNUi`DFb^w;rkc9M(V)pI|<& zXuH-x|NN-p8%I=<@Z_*1rX{iTz74ln*i&dN!|Ou`ES&T6g-nc@*=J3;36Zy@*3?kB#dL$W74F{C_U-9Oer^r$pG|)z?BjOYM1=E2nT=>r9L< zW)?_5`s^ZQ4#TCZiS2=37hjd$y*1nGioLY0P==2fK}=~K6N3?^-E|AhLbEsiRS~7r zQDMF06+~m;bkA9%tu!&2KokQ4OtdC)sBs$orpVtTh|x#+Z<2V>-ZA@80fkjauT-}S z6t+4*Go-K-@qqDr1~x#%RB7HrI`5A@qMAeQh-K{8+sjkj(fzGYRn*zm&&UFlJBZG4 z{+*=u&kV4}HCij{jL0d%$KNlgN$6+L>Vf!VUH;Csu!gUDfDUCX7HA9Q&-u}#d>usX z*Z1~;>Tqp|Ob>#PhZ+1LDJ~}Tpl7`Y{*|qa7E>lP_AJO<&1cofsf*fFoJHJTjY`L% z0j5?pQ&Al$;IRG^B~&KTarxnYyl+doRd_#a$20)|M-fQhO|`2%QLsq{Bbvma8V%Dq zDq(C@6!dykHO8V5l8r1dKPW8f*XFZHmZ$KrgaTU){_&Sa|H98%QZ(`(k^8;C2TY)6 zxxwr~YI;n|Hw9{=R?Or(M)NEBHgZ!5f!5_#Jc=Dgs0`q|{56zn2;*<3y_-Jf`yJ1} zrTyvC-a(1OV%He&wL_q&QoJYT>h*2ybRekzhY)4o9jjg4w0;(d4$eO3;CtMfP_!0i z2FMxn(YFZpjaRV{2@tFu-xZVF2DVE0g)BusX|~Nku*f6r_h8C89szh%NouyAmx0^FIGu0+>?Zj@yma3RcsTL-PX3|y1g78v$ror8jY?Pt9ZMvj4r)($*DrWPhk z_nOd_&|!S^a#wx>X%RpM6VUjQ{+6go&p;GVpgJ&)uoaR5Hp*J;c#lm_XNe7bbQ3>G zVjDbp`jwqtyxu?_(X51X&?``&*d_G*xOKZoC*w0Q&|Mp2dGdjD=@XWX76Av4f!jkDJ%-b(d7e{qX?&qoH5sc>WYJg!! zyQ@q7Y+wDN`?#^uyel^KY&daYf=%70LJlX=KDya&3Mb7`B_ZN?n;+>ImJvm-o{1K1 zMu~EOxMfL`eFI}BmwnaqH9+~JJaFa%eWXp5NE8?)Wmk-Pw?j2@uOb@*Q{*_!44pk& zx%Yy2O8REiG4>yd4opI+;%myQy&U(1l0OT{W4vs>uJ_{4w^}&r=9FEcevdQve#vm+ z70@lMk6Z0a?BO1X&!!Kx-B8c7#^O>Ei?QVD>f_JM$9?^eV-F!k5LVRBC?7>#f{Buf zen@E&_V?WM@3-!eCs8zOFM7?#R&icRAvd?;*N-qgGOF=tPYf^bfXj#y$FfwIdxzl( z>daT<5n{95@UX4F9J_rTNK+kOSm4{-rPmFTwQ85)y_!|SI`3cGzse%5{F8$@DT{zn zSv$WDfRWs^ecAxq*AYvJKPs0f&({?Ovu)_-IE&IhyJVsbzlioOELz9rX5M?4FK$*- z+krvIX4pKM$&IRmiaWXWrX9L>N294N>dFK&mTSH-y4K00gL-w6=M^F&_hN)e$gSx{ zIg8+12@d_GHZP3KFUqQWGJI1qQd3R9L!iTE+owgr)1eV&SI7$DB8`KjDe9Cv5yW$v zdDEt3mVoE%H2V8fs;|!8PqhX%pRSq$ge{;+Q z=E0rlX%H&DdYuCPh=c+nfH(mord_fFzHQD4x>hf83K7MDoAlLuA7gPIKuwdgM}Lna zD@br@LXn1fy=5y5sPh0+G5~JnCN_dDe5W56Rcd8(5*W3+_^B zzSmSUi8KHSI#wB(^PD>ge{ZhmQpwb6mhKh-cV=+94J#BVY&j>k9~|@!64USquLL{v z2&t?=aDo&@b9CoMO&Vn)1^^!~i0 z1^}7u1m};>J*am;~Ht&?1KkmMn z%x~&yE>m@T7V|(;m`p>G+A#WVVObsc9=gfpS0-0GPZ?0C@@4m zL{$*OQZnL?uVai1m%JqIH+eI`GRuIA3Nd7&$mL=m4nVEI0 zxkYShMQ>y}U;4)B)e4ks%;wGrSRtto@ znlQ+%Er~P)GEQ#Ow-g`eDRu{|B)={*ifA1p`XN^1vCOPn!VP-2nRWFxx76gbE=4jx)?W|Cy?SJg>L75e!&(EKXz{eUX z_wQ?12Nr226(_5hJ51+UvlgeBBUIUc=hVHQxNo^eG*=>n^X|%Y^O!z4H2Gy5n2oGc zJh`uIWKNY}#Cz$PSIxf{V}EWFXROghmNX!X@iqx-CB_V(J~e)N>pAi3qON;%@>5S0 zu>1W>0{!$d>)kFjM@{M-Io%t6%%YlspL!h*MC&{4_QxNn?86=y5udx{PnzNC(^wn? z7kKvd8!k^(e~et&1rbSQ%lt9=dNYUf=@LoxHQaBU3pw`<70*0NH_pi`A=2Fh|J1wW zn+okAOo|F4-!acI!ET=CgM7ZVN^pmmT&Ax&%hTx{uZqrJrnycq$`NmTqZ>tZ>M@nO zno%C)(74z}|3KQsGsW8DXmcc}OZhoB3Nufr81&Z{%cZ9-u-Hoo_jXsMm~Zt72=yJA z3h9}j*G+bZb^YznqBcMEjNZ+gRNM^1;X&KRx9MN!g$S08gI9Puyh(wKa}KJNxR#w2 zZ)O%#JfDAnyIId0m`|ysnjerzShRM_CtrF>!j36H^+ri|)4F0$EbsUTyJ&lXS-XCT zA$dGCH>puxA-;pST>GJfL)&<<#qH?L2V-{gw@sh>(j>^x-=5w=3wO7J+tF;Iu5ZP- zuu_9Eoz5V9vIsTx~eW!OPevwwROoB(ucekC?*Xl_x zu1{TuIC$1sVK|%$&CR+qZV8oRf8e~OXi$Y++WZHaMx z5Z6h8?g~ocZUI$b(0wM5`$jvBQiR(1n&RX^zKgfc19fvaIF zfsrf|AHGlzrUxJjDOSl3S~*Ae1pgc}zx-@ukqksgs(yLq{qCxW%pd`Xj>anR;Nf^r z#GU8sxdgep=*L$=Wpuus7@X>wp4mb1$8&B38Yfo$zxxZ4qk3Z12MMCgg~zXvIY64` z_?_9MzWA0GOFz^J6|@QLY&0L3X>h4}J|@WfTkl#lX!Rui%2DzP*l&e1$wpIG1{JIn7p*a;(#4k zmbS`Vj?Knn(rXS)_-?_0#wJ1bVI@ZfziT+86A*QB?B!lLTAs_r>7?O+*OFrsi6FM> zx01Qi9?_LmKi0;VYElfP8E5Dw_?Z0Xi1)|aOE5xJ+=4OKRN{N}hZ0S-fsW)-R(PXJr*>){Yd0@BYln7L&4CcB6|9C{hja%b5`5q&W4KVCgW4H z4u=U{BG>{%@j&J7K$*?ccjXKA2HuaU7rytD+C}!$LtNgwU4j#lCi>(lSRQVJfzDAi zqc@bPd$ENTM?I0vn1?cli6AeU>)FPq2 zTBdvS(c1jKw$*p-$b%E}8jss#zBjyuxy`)M+G98U? z{E#(j2>|_Nt#{qy(nD2#XC~5geQPZiB_Mc&f3gJ4M1hm-?^sQU_lD^*t8&wRMp#Rsj+)32U*Tfrui@l9!u{5vq>}s)4@=HNm zJS#k=a@5*Z>>_NAfft8!aCK{ql%@H5G-cNsxdK4(W5XG0=;|c&?es?T9Xq8;zhM|W z%=$w5?z`5b)rJ$HXHfsbE_FAv zPGetz${nOE1}R1va5*{*)u50TSUZ}($CRj*^F?qRsI8ZXXmyE^_JzBjpSq{(3jWxT zS?tbYrDd%Z$>RsE;=#hn@x!-Xza)Sc!P?=l^u~HhMR5~bYRkpD$bLA|H+6UlxvHAZ zrSFVPc=%<(W3_zfqyCMn*$2i?TXVjy;*bW z+zK~{HAL}8M(*awXOKa%uQlg`LF0%JRp{FM1);ej)9*8pwOMo`y^o3dt9s0%OP?v< zV`mlnx4%XVpkR0t-HMvC1k>QBiiRq0@QT}BaU4pztN+3r zvfnc{Sic*{!m6xo4>y^^H}op-5->X-iw0(xe*Ks&gTyz2mN_R!IwNbZG1E@ZtSCLS zYBBBqAc_nd=GzpnyAEpvk*JK6v1HBWV{F7)^RKGAJ2wvIEy?5i93A|HVd%S}FPdWR zGYiMYc1bgaCXJxu#9mzkqIW4sdVYH05-gR{!>A@`V}@>}g^zs=d4ifA#`UV|F%a6C zrzoE>UKW%Zgv~UJcrU&+ky~3TqGY#Tsg4!w_+zi`<_2>OLEMilQbMCEZQ^-P91~Oy z!+R}b4YBp204M5XS)oC5`u8lO%5wK1C{$-HWXtPc?+|!@xG9p&-p5iC64;R2sfeGxcpXYJ@$6S?>FX9= z&4U3)kAAy;^Zp!VzBAYIt~JW6n4{Ls$7EX;5AS@TY#3Wq7BtCTE<)rnhrq6#EiHmG zP(#j#?J9q4e|%xsU$iG%GEn!f-^@Do4lC`i(01?|%e5a7W_~Fa=BR;IWI1o6r5jYIKalaQQGKyN#KKD@$Ajc;;IJ!n*@pc$ zJ(z@ufg)62=LfMle+iWZJ!VM*dGn2+Ul2Lvw|OCPlNtPU|1-d2-~)&4rfLS(>Q`HF z5u|guAe#2(%JOsZ_U}rCRa?hUTI?-1lRN#|cefbUlGBbrW|Cw}&!H#>sX-*l)9&mC zxLF|AaylFzBM#Zsi|FWkg;Xmp3~_f1!+Pw7l5G>w1H`3um>90de0eo7f$MwqQoOk@ zHw<%GC58}>ereJagg1W01cVejo)eCq!fB>Y6Rfeq(WK>YxoBXqmvxpeI)t!$73g?! z!bE`u-|E{TY{Lx_lvoIW$aG-v7t(o^D(}r7_|8rF>5`mxpBRSt9?GKRYkS-`K2JM) z%;Db6kGI*bM{kaTUmK-HF08pDsj@|?Hsx478=7nS}=5MWw1k>AjqIa6EgVr@1~|<_#AH1@Vgo^7B8sjD>Bawb>mGCnt@2 z?>NqP;QYHHn5fz7*ejCZ`CpK~MF&SIrlApZZH$P6p9Z6OQCDr*a5A(y>*?Z-H--c` zoUEm>)u4|FMF`gOJngYJ7hFj=8Qn~Ozxe}G#CBM!LtnPeL3ES3#8Y&i4;vyF#>PKB zr+u^stQ~idj^W5MtREfo#Cd(=U?(A(I|KD|xokIpS^$;%wv1Bo@Mmijp-$Zd z+bG6CaWRwdP5qD34~5#cIwD^tP~{l@yUQW+#ZEY9p0P9$;V!%GyFUajCa zq&a^Z+wTnTLjcokyI)5QDPM5OpW>UNUjeW*WOG!|sHkIQ2E}!rV&WFUh=6)x38-Vr zQyD@n(5ZCZdPL(WhV{dQlVObSF=a$TBF-Imt+ER>Z+6x-1V1sg9{}Ao+!)++A_+lH zFv0^wi3ZoGwu~!ZQ`PQV!%k3J!bldgsH;KuQbQbQey7R>?31JV;rU>uUjcahmeKOD zD1KzHVEzCila8`X#Vpxa?91(IN8`vekvS~eI}ooN?%>q-rVsf1o_d`DdZE*NNC#^j zb9quLtBhdEw?I%-qLW07WHKGR>PXP7;{?l=DEh&|*|7*69OL_wE@=Mes$2h3)*2mA z(S|PY81!&lL1H0s#FTld?nZ5Aw{{!sK9M=aJM!yDO0|8I zrbg2mw;j9KmF0;Y;<7|vVat$A!&K1+FS~}{N!vnelrdfO%#d*>z%|~jsntRl53?iH zF+KmZM;F{B{0}p|e(poE{!vL8AD*w%(Y^CxY$pHcp8$wqX6H}|*CAMbe#3xZB2dwM zb0sECiB;ftH!xm-%5<#QFnQ1v0{NwmrUEp_iG^s(aI~5YPFM|3DLV(&_8?_6tbNs_#8+N zKeh8l1koKv_3h+7d4*_2+Db7H!d7VzKxeTlvRUZQrP7;ROKC{`o1V1lMY?{B1cKMp z%Uh&cWW8r<<`Pjo97}82)ear#e~k6}TKptJQZfq{QP>XmEkD=o9|`fP$Jl=N6-TcU zI75Jlp6FQvj#ml=$Z8~HFKxhd@_=4cLJ&|-yVy0hoRI^EmlTz?1;`8Z`_cobFO@?r zFHPLbN{Ak7;QRxX#(gZN%l}K1<*I0~XereoWS*>iQ1S?| z=v?}MB0XH}hvv`#O3IrpV_fpZ?YwM~BO-&0HOS`>xV6JJs;B*q>*` z1on0ro9$6pB^`z{C_OykaF~=P4d(cSwDxgS;6dZh?`ucqLh@`rI=X!-1j>q{)Q$=y zY(Z5gqM0Pd(+gSa#lR>DH6?LvfMh-HM(KWKuVFNeAj}L)({uH4o0&eHHIXNwKV+LCxjkUw@qQrb+^*_tvAMJ}o*tB4KM|b{r4)M47~cb6&AP1o)>4 zM_QiMag60xC18ouwSAgvSno;m;FsHA6GZ@v{xgdcc8#(x^$GpW7fPJ~xqGNour#*N zQ~IdkKFV0{L-W#Y(J2s2i`*}SwmdV2#Y0bapc^S#ONVoQuaWWqxYbWCW3B*nPK zu&p%q%ghoaVn*OOOjl#qhF5Xx5SlrNL&B+(g>#2nEdQ_)pLSXu_`>Tr57m2jKt!WU zU;TgI!eSW58fb1n^5}1e@BQ$Xm&G3J@0L^Z!{$wo=1zZ{TN@C1E7lG**U1SB(PP7@ z?sV**ft_kG8%2KENu)^2&hSe``v5`tS#wU{om%@ox{#6|jDoSXwL~0-U+1-!!1nz) z!+d+SWJP{|8a}06ZBI{NB7M5wOa4-zYelI+2mAv<;nSxQeh5oXQ8@I1{&rDj&LS&F zB;gFv?l0Xhz2q`AP3wW<1u*~Yv&ns)d!&cMQP5WW!9VA^0AZ zgnBC(3TDF*cj&nFocbKHT}3jQ(njDf_yMcULn6BdDeV+$HwAQQfb25Nlo>%pxCC}u zge#dhvP?klo?E%MdY*r=wPL`X0$Fjg^}{C2F};)c(>C`zoL-aa0?7O^%akJjp#%}~xe^djTt>D%N7_wR#v;>xrQe%r6AcurYd`V-Wm>>m# zPZ^_Xru~94%=ibscHB0_+#&7())J+k=(jFRr>y~M-eC*>&+gfM$R~OoLQFpMt`Y*f zV}U%ZM3TGO2e;E+|D+0$R=rr0hkswrrQgQfZO|PRITW1gluR8#`U?^jwV>77R*jAw z0`gVs@`r>yk|k0>CL~sp!?1V1%Dg@^y9^Z}?^lU}tXdp*)02X4Ri2Y^WbY=VNzw82 zo(P>Kq(06ardx#28mIcMMG8jzso_7?tnl|%jLsi8aNpbI zj~3G;b54HbhY6RI9Nsivq99oc3>Zp%nQ*0)PXX;GqgW&TIHrDo z;FCT~+}=hi$k$vZbkuEcLiG15q~*6-#yvn0Y%{u^=_$HuMKIjk{_b1FzH}^6ZO&=0 z6lMaMdD@nQUrx;V>d`lc`)To+&6pa*!|xAEvLN4zACIbO{~}d6n{=`Xns|L zE9K$Ib=*R+ddgjOdoSc*g8SGx#1qp?EK7cEWLN|zh-T`7!m5%tmj60f=WublOzBKV za)p_>io<2mzXL@!?M%_n;pCVAzvn18a5MxvqC9Pp*_=4h3?=qK&$&Tohfg?nzehd| z$W>Y1`M6e*dgh^6T4zEM0Md*^<>Jcv;PlAqk12O;X9Bgw4L8Fa_8oU`BwN6|6N-?g zb#_GmgVAWz6!E24?V})GjJoU#s-m7quKaG~F2!+5)ZT|-fmRnp7Uf zVauOdXIjbNA;!8qq#*33ALhac|0#|pUvn$ z-`4n$v`GXMgC@J}VbAN>)8iFE-DjA1e9@ zBkY)fSlKtU;XRNKx6WCy@xGV}NdX5a#?%_kMIzOogqWXiw}mkCLe1{T7Z-%^9HH^$ zR%t~_4R(v*d+#|EUzJ8=AzL5Q+?y`M>?2ReH*O5y522EoRgm~BbwL``_-b-9IZqy| z?0sU4l3Po0%#tFBT4KG8%vbnd74XG>>L)Xwj$P3N6du?4Cwc%>)>`Y$O81R;gAC2q ziL;=9s0xzWn3l7$#0i_B%lSJu+;+)(gy1)8y`% z6{%!LKKKPx`pqEG+d>(1#+FM$)E~r^4l~m0AtxP1Y8jGzHo_dHF)-lTg7f42cNI=R0q9PYq?CeU5mkY?+(YRR_(DHYjGtD`D{4ngcChuSpJRwA1q5bCDO2694^NO-hG`7jP|?Ir zVXr#hbG&+x+#@*)BVj}uOuGCcDbB1TLQ4f`;ceOO8(jJ7j_&^4ZEA3$9dO3u1A^^e zh$IvW4fqTg6XEH9ZTn7UIM5L_!xY>!C~f~r@{i;X;>o=8MoN`W;Gf2(p_4o{>wVM9 zEwht$t(Sx=5Jiukf_;9j_qjnKAr*9aM*u^6Xd_i;W%w=MT2+eaWAX)K$lEZJzN!>~ z-xcKMLOQP>Tpe@nKnhh@wXPU4wHZc>pC!NfxPb}{SHkBN=H`5^g^2=Nib-T}hp@Y? zwwhSd)xYS!9bRO}KKC7Z(*;pky8i(fF)KMkE`bo9Z+6fGHN?S3i*$cp>YXPet-Rw& zS10r0zbscq7l`d^J1|$Jo6>H+3Y)#0EB^4w>ineZ`Q?xGUKYy_va`V`lWW~Pa=UF` ze+HI?@O!KT&%b*Cp-&#!i=<8Tzm(J4hf2o6Cis>ZZXTz9sXTQz3voOq72IF4^8OQ( zF$co&)$)JDUvgbYoa*3(@Bv96QN5%Su5s1BZA zH=gQdV8a+Fz6NRys$r~mB-H+DIqUr;30aJgY!Eqk9He+U2h4uzBYqNNO2|4=wD8E+ zj`ziENE2&_?1%Oy7Xmb;+gSmO(Lk1fZboh?z;3AEdz62>4v)##HP(eeVkHAq7{<~ zyJ3g0nw1PuZJV-$A_>rQ$bIITsIN19%#iZ!lQ<=+@UF2hGDi&^fpx^68gJjhr(tlv zW8I3Hf72jzXE1OGAT0=XtoCO!LMXLIbmkjmfR~qBRUV$7U(&sPnhpioQL^EZm?vt) zSHzjWtON~!cbp#v=E+xWT=Xi>u=23|HQe1a1e*1;WGH8;0Vk03D~R?>?K+7wq`DU4 zZMEZFxhCg>#Mh5VAu3YnClFynwjwq3uCD9}_o8-MV0 z4#Cc|xji1!ptQJ)dFcBE|M&bSdyr70k(1Hr_0BuwdqvpPW!ECa^--M*zO|%!{^5#G zDH!jSJKtCII{|_sZs60<#0Fk|1My*L6ckeugt5@xggZ!gw&Zm^{1YI;y(ypyWC?7* zvV~utM8O-mUw=u>pAM$dvE&d!@<5K;PSme&WBE{Mzep~t z;9(#8C)xcWOJ!FygTVdmH2(wrNAkiv?Q>lj2UMhl{-x{If-7Z_%RO5CDT1YeC64&$ zqWqP{2yxQUYIqIP>hlW;rbC*p z_-TEq3alA6R)z*I-8aMUhNpZt!IVEYWae!~g9UEPv%dz@@ezipyA;XW!JHWiJ73&; znYf!+>*ui!v}|SFIr`jz5U)qn_T&EqN%Ea@3{iEJ6|xAsZI*g1^BvyGFFzG;1YIUE zmzDwZh+3o!0BO#o35_gqzXOAWtUQUuX!yHh>sq}U>=m|b>s9%Tsb0jT+}%KKDpAp~ z2EqQ+gK<8h2(_$=h1U+QedXMfA8ZY$0W*Qkl^Vl_l0@|yOzIO0MC=>xKCnLG&-T!h z2c!bacX8Wga+_XxnQiE23W7ZU$Cn%wd?ArTHDh9FExp{K*Y@sg<+xR^<7M7TaGO{U zrJ?X$2+w2W6s1NK{qn2t99`CdONZ=0K@JdejX3ElT`tliCOh34XR^aiBP%f>*!ERl2Y zO+Zm1y6t%u6B5}bEE~i*$#R>qmC;}t4sN}4f#nJ|*@-Oeg~Ek@8f`izmHWeT6D^{d zk;_<5yRopV%3ry1?LM6qrjbojXY|%@?eKjfun{ZxVY_&#UiB$c0W{HXpAOmzu50xf zv_#@>DN6nwcmFWIgrPqZ9Mrl{5-@L(K>%9X`R&0V6muWLp5c44{0`PL!Tsw8zIT=~Z$sKk8+ zum|RWPIjcVBFO8}U%jr;0oktkZC5!CD@6so(~Jd4YCm2M+*GlHzG)VJNO|CVR#)R zXK`1HYx?Yw9F9E6QPB)A(-R~25~bQCg5|?sw$~<~<|h*Ot$(%mp%A<1KPcEIJMP;_ z>`F-bweV_sF& z{>6rmI6r`6pY?~3dx(mO(uEMjSZ9JR8{YKWP*mvjxo{Fv2nYX*h8Y){;v0H%8R^yl zx}aBi`t;k~lixVCD7ChJD>pmIK6=|p zr(^0r*}1=09*|nyw+w^y{(8uHEz9rR%iHd_yE+JU+8Oul=EYL|xke+Oag(%K+G!$} z*dJSog+h2anIrSolQ-Y;oPvs;ufOC6!`*uZq2GE7+uUf|pHsWNQ(Azi6v89M^jhs(zHT?5^!83-4F}DXE%+S6WyIeKcDT_(nm0u^b8oL zmOftnz)_mPkIM9M5p;1AuYUGaRUe^3H z3hP99imOF)JYP3WZJ+l<5H+R(^a2H)j!NQ2+X7KS&KAl67VgLu2)4saP3OLR4SzW6 z#nu{@%eHGff~?7C5gcRic4QZE@8$IAZpB-%mv!!#lv_| zoiB@ARb-8N-=+LUC_tsz@K2nT1*E3Mk+bj6rp2jVz{JXf6BlaFY^PhG<(uCveyOWw zP&1H5Uv|8^P>XI7!sjs#$i|%I%{`^&z4){9QPa66Pm9*+GTmWJW{+i)Fj~w;Ved91e&_H-`ns$S zfr=fL^fU7| zeSwXxcf`MNS>AN$W#f_Rkv*~e{oCzdKR$0%&+Zc*#uq`464;-;{X9Kj5BBdyAp5ss z51$(N7ZNlnFL8AO-mNcYg*>L7qB3<~Jn+JM?c*kGW>|3$R~Lx?D=DtDV>%02!YF;e zmUyKKH5MxHyzbPGo<}gC?r4@Q$Fvd3TFe8|(w7Hr?YEV|)J-VUtZ~CmD$k`7QEG%vG^Jw6Oqfr{ZC`Auwi33JUm$O zQ97m$|6h+E%_Hz=mUAl}t?=08z+T+*%U9cHhWXS##({}}3s8+Ok7Il1ddswMEyD|& z+;<;Ivt`zD3d2CGPh$9SpyVoR9AWwcIbY)bBndQ$8Kr@qp*jDnr)}N-?18>t#?W^4 z973p)!90r;wwPh9!2^1VfYD75=^Hvg22aSXida^SoKT>@bVMe5-x3K#2_Rmywu)W3 zFyraIJXl-3j|8j9Qa{?x&TSD+`sQJY=shz|hRmuL`i0M=Y1|mXYbmt})8M=2*T?W$ z9VVSGjm}A03^;*5m)X%`1w>{aW1g5itB^1jcanP}x~d*XqM<;)_Z52^&4h&`-1T3B zrT!^Dk!M4WPXlDiKhH@4VXQ{)=n^|I^bN~7 zPctNvmu(yz&?~2C9|U0x)<90@I)qTtK>5gbc*%aGxAkArYadMCgY;=sAcY$qeoZ}9 zbi;wy0riEKqm*=Wxfvqo7mhX$kO}`Q?q~sq_s@Lz5hl!YP8Q4X7%tUq3dK_4Pnfl2 z)Pp?b3dnOMwA7ouO=&R`n`*p_;s0w-q6H|QZ8raax)B$Wy_MVOezc~d1U@R};q zME3aMo0=`k8$I7C3uI)2HIrHd$G?<06tdT#abvWf#%pm+-=dHM06DqN-3EzuhePOu zeyUc@tIerB9r6Ml{28UzddqTk97%z=Tg1ZtJRQSt^6CBCr(g$Wq@l$B7PegjT#>xB zlJwyl?8=1dD+3=m0+mnG@UwIcEJWoJ3;r;`x~vPlTOL*k zMu?-236!IUQNA13N!>nD34fy-WNy@1=w0%51LLvUU3?}=%x6@sLW=Y_vTWz@X%fp=e=R0J%`MXanI4uETG{*tE4nD3pqVMJAQb9jpo>V!fq z!q`fs_T_y^=4xZHLZ<55xcAT)v0juV>dD^Le zgNJHrxD?b{^|lcoD!MnFmH!3{4Y>Rdkjr%RX7B%q=vMt-Bf1Qpl#+IdKV0@-_V@7w z+sQ~Eo)&CciqYItZOaN`CVU19Zc;H^DM&zBb+(BrRFw3O3$`Ff)?|v41cujvzoUh1 zVxa5jjNVpxRi0Vr(pgTN~i@yQq35ZL-J4gnwBj zeZaZtH#G`J`sBI?si0_}{7394l=utnsBa>v$`(as!B3%f1Lm z^BZGy>1Ryfwd#brGQLX!Q{=0S1eC;u)GN2bY-=kv@ikFm`#>kt68U$aKThN1`xfG^ zT6xp8Lj~I)ilCA{S}|s@6qX}_ai9k6+q;n81T0P}nN{@jq7-}h0f>KjU;MQLZlD4_ zrWda|!m-6Ej^zDR=YO3!el#eJq!u^oi>77vT!njjA2;s^6d^MSl0r*Qiu*^RF=|m^ zaLJFxUvVyO50HH#5rP`BJ;R6D1fX=J9m5#z%Wr^@`y?7-_n!Kz1?)A>6YVI7G`Uhr zA9!KS16o#zxMiJL`}lVi-+c=~8ePY52Q(w=s&QA>kQJXFaV#nKqL0-{|3)Ys9`%u) zbMt7sqmbiF4^)1uK*lGff#8|q$bMdlxr}XVtB-Fva+^MI{{^9(DWQMsISN8B0zJlO z*yXfisFTnI;2*5_lmTT|>Q+KRBlRUbK8o=B^E5HMDF$i=;n2wmHVTE^FI$6qhc8D5 zZj-!yGzN!}r*?*xa5c)o&l`<2Wkb3TtSLmd?;sgppDSI!EKBXPp8^w~)er^Js{cnM zZLN|G@UgO)Ac$?GC^+cVgc<3(a?Z+RvChB5uhb0i5i3hV|D@xzE=a zZT)dkKz8XKGYX_PR1PvK1g<(c6n3q?K`3D2i@JmOs|aBUw-}nUP$dg!^+VVW_?8=# z06lJzU38fZF=Bq8xjC+n1ZIFcNBDqfjoF?=n%{4z#S|TMjVzl}E0tUkaY5IjjPULz zw_K$4h}#^w50|+jhI#Y)GZXKPy`L3twbD;Q8>4SKw59?Xx3jlN<0VGg} zfyzT^2LSRlMqATW-!gQ49{ZV@kx`l}-ib@s>N(NY^RFKw0vXmG1vgd%tUQ$CL_h>pTw_VmsJ1hBwPvxuJxX|1RzIrcHE zENKBGm*F!Ba6{PkUTV<>srHx=HeT6qmv%O3%_A%01SioMWa1QQ#9dwH4>E72M3l7>g+b=gs@ zC5eAT&e?GO9#b~x*@4$HMN`Xg!52?26iFSW5m@w@NTvyYgf;sKqcca`;HbFMUD_de z@OtAD;0vC}<^H>HU8A?nZg+Y@sOIPHpD}vV5bhrgE+I?tLx{PQCE0fupl={*ZJ7UB z1k`qBe(oL$L2HJ**@T#hJi+O?iOZEApL5={L3>_AMNKU;?l8K7*ctjBUJhoLr9^4_ zP(1W>hKV2~QkFMMCvB2R^|Qt?jfX^hUX@EP)l=jJO#aWSB8-0r&2(qf(YoU=IXBvj ziUN6k?!MO;>`27es4N2;tDfCl4V>5;e+e&X9GIl@+W%6wJm-H_CwX}*IXfWE*<|u539lc-VYKq^d>Bb#?9_w+9qsIp#IYul{80hK|Kq z8%D716;N}DhZz~}KcDmfm8l+quh$pVM!_Z%j-c=N*SMIM54!mmO4FWwcZdlfUr(LI zT1zxteSZ2FCgH{PjKHi9JA#vKdC@}Fz11uqFU7E$E9V|(P!F9e`RtH5L5h|frFRP} z>@gdjbcv`A`FX2g@htn_f0^H_x|?2OIoS6hW|yX9hc(lSNJ+HIN!d&023$VQ>%mW! z9ta8@JgI}FvgO6zBbwQ1DPmN%0?9wIZy=%G$5a)2Iq-MpMlhv~m?~Fw&w&cX#MvAg zuQLc&;7%>EJAZ(UiYi$9-)3?4ikBEF-}LA!J`>e ztn7t-<2nX^1)m@toC_2WIH9@q$oJQS%aq#v&r`TJwZeZACv?XvZLuba@Nhm(q*v4B zd!DM-SE~>?pz2;-aaqY;G7^hSyoYY);@yI<5BB6i%;xbT2$N=sy{Se-n5c6&-1)s< zm~4`PGpx3K+p`SWnuM>1d-Z(snJgwB?{|Kfhz~nKQqfXbExs)_4+B`p+SWoQykaA3saM@{3v~EA2wd&`-l7LTR z_x&Y;z6I{`-tB?g<{_hS9KmYLlf4Su*FnCGcIyI5l-lFy6cKbQzA$v-$hP)a)eAO% zl_I|j-Hph67TOxB;jM3ya_L5LQdc-5nmOmg#s$EN;LenOi8cfBk|Ne*n_9ozPKl=$ z3=b<$O)bgddcU6TvN%|M{s&xW=*tk5B^3XJ7xu6_&hd^4Iui)Djn1Mm+zz|G%z%4TecYf-EY2;13&5AnZ2jlj35)t)!py?rN?GNwmuV zTRnB{)v8C!9@B-zrKRWzI+`~7isWjBhHa7ar+H02yGbco`42nr*kms6Kq^f9e07rd zHluPyAJrY0UT&@KjDr>s(&F!=zUn|)A~StXF{#=HJL^u=vxc^S+$+LM0WZ&mi#Olr z{30Z#R{>AVwo^TJ2Vqn2!bNti1?=uLxO8{#weYx#@4G@p&cd;X9r|48F@i)A=#i|u zPs$gt@9|o2zCq^Mzg$4DTE3nJkBvEa{$w6$*UCJ@d{@vG5nl5Aoz_v^qA60|%6v0a z5XP%mZ?~;sMObuVB4o6{**}Yi> z1<&n1*~VQI-~M20_bW??{N?>aRr7ly#oF1)nB$Smq!hnCCPk`YL<~m;25>|i@Ea`h zN?ZiWU>vz)fNxdu8EvlGSuvkoZr5!KOCDd|{{=IMPc78@V>1vZ!>rry&X+0vIDybT z6)}wHdHHuHu#Y&qQDx=K?w#e3$?N_SC>(GoQkF@jVD5xSynHl~lXwa0I=-jx5CI$C zB8N1NzWTN}N%+qR*7+0q7ZJa7RBl5*YSMw}eT5njw0_Uu4_t>ley;yJ2kg6fU29vu zeA^wR+I6eITIqK9^FHYpLo3`tL#0(&lbF=lN0 ztz3SxWP4NtUll1-B+F3gLOL$cT$>i#udqm{Ut!cEyQkx+Joh`nps`iQdwM&X8vHE| z5_rt&4aS1+J!`Pv_5KcBhN>rGU8!!m$Z&Ve6F}knXmdQeqFkyYp&-{d9~3RI<0A2q zaM|k)%Xa%)j5@B4paUp?ZTWIA#;j&PYpSVth6w`KUcp=nnbrX0#Sa58B(H9$_qbN> zh0Qo<17`5zz}+m?6mvz z%Xe3@u60s8qA6lGeMu-R_`nbN(jsx*f{{hU#tcN68xaZe!^rS}2R-5N(|Wuv8A|kJ zto9AZ8Q!5*WUK^h;71Fc&h^-xx9*>C7Iq|3P)Ce&2rNl8yog4(G!h)|$rD^KpV)_8 zG!6ap9O)nyiSVIE6$#vQ)b%BY-+XNrFgrNvYSzTR!uO^Rdfq<`y@mL=|3a+G-BT0b z-tsB+%e?)k?}qsK?h-*rPsg`)HnCs;gNm|V&wtsZ^cbxtN3u2R%?BE z7!JE7{qq7s0W|NMiYwiRuN zcs05qQBXN?O;V_SAh?=cNWO}fUX)YJni=C-`Q3KhA!Q8o9;{lgm*GCu49Sx*Ab`G_ zc(8rs2=A8J7C-i(fRmIKA46Y}8vj!96^^1=eHCT!NlvbTHn*}*5*xHx4-)&*@@rv_ zlm3p@JsbbRsugRr7|#*0R+%4t0QM1^o+kWhE_IGohUObj*K}vL=4%5av`63D?Kc1Uh~#gD#(YzBLzfmw|X=M1V$1Nd(|G(eFWv~6ym5)aQvqMw}JsUY$q#t zS__cJkLs@a8hO;Y_<5mU8kvrf-=#!09WH5ur}(b6e^bvDm~F7t=L#H*f>{0V)M~g= zH4ClsYJ1^(W+YQC?esY2RY`4E#2PuRoc??FppC&o4(&A!otRg4=kqpNjE^{3sW{bI z5l^D+OkS2MFbTrb5yGAin-1Vscx8D#zA?f;ZR2fvG|*OgrAAeMqGLMLkEmo7ts=F7 z?MMZh?u|Svc7Iw(wPrCCRx@GzD9V|z_mNYxOit+|LAKW##&my|IqC4?oiyY#bA9et zao?(Mz%|A4X(bq%@=z6Fcj&cX3LVei9G#sEIR4~E&kWa2LMYrnJ5Fw*-#~=z`12I2 z2_XdU{7(R^c!Y5|y@D?dqVm23cQYp9hEUE#eC(!D%TXce1QZ#HmP-$mxj#Ipx6>3L z{AmiJFz|sU%_6A52*&qkUCeb4=_^X+H)8UB zpLK~P16FC~WgBOS=?fdukRyn$CA?uX@T;ONR$euLq`vjY&o+G)z3{yo$6`IpR&;^SBPQ1dVh)Nq`Yf!$ zo~4ewC77#!;+R$Y;O*G7eMR0N``10~bzt5Ggk-<9ma+s&f*JYev&xjwtM-ap%?U)* zID$)RwX*2RBdsOBbUw7jj7c3dQLVf;lmk{x{W~dP_d%LO@n^^Zn|*6XE*41NLz+LzzEAY?N^P&#wE4%xf-!3|oZaud}td$D2kl}8GSA0pcH=B;; zaN$ft!497WybF3EYzF&yIyBln5bA z+zG~uv8HmiOR3HR0bO1TR_P8w?%61s0T`o-qKR%741o+Zg2n^dDZ+)p|eN)QGyDW4(W9 z2I4)+3$N(|E9Z{fcYU?^Wpq(|61eZTs0r0t;l2aOvsGPS=MOI-z}^mgbV?Od)p|L8#u$fCz+v3v zD(}-xW}NSRa{TvOyS5_%`2KVlehy$h(*E^Y{MOC8`rL4{o(^2ZdD)8)KuAAZX=}+@ zxDHJm4J*Ew0j+e+!y33JqkqvbiP`@8gXUv*##y6%a(aV!)v$WzY78Xs+g$x7w}rJk z<`SFV5F34Z6f=v7KddNa<-PW&1fjg!e2g+`n zEMn@@F0d5aFhjzmkSY3(2(}d+uTyb=M65&#VerML0+>&8(GvyfVvW>^-FHKBJ_0+m z9Y=4DM21@Zrw1?p5E_Q>EQDtE;Z!~n5iccPJoNx=arA?}(&?Xy-$R2}CvMxK^Zi#~ zwmwe`0J4^Hu!7kE{b1G(>!g?O#&OtHG5p)7hewj1!MUuofeq)ck{ZAa?cji*gFyrr z;G(u)ELgjZrhgMT=~(`}$3 zVNmk|Gfh9{x3U@*8bz_zz9dgSt-D^l&tP?q9wm-LhIVq&@RO8Ipf&0KWRlO3UBO)^ z&K(%t$kL7aXO0@(7`=~#;DTW<;M>M0xXzLo*A(rwCLm;~k4pFxjWPvD3MMh$b+!`| z1MpiT(sWFIvX#GOqwat^dd*$tXwKP|{OgpBdOI9Lk3fI?$;aEnGCNV*v+e<#0(GF} z&)f6%gyoKNab1YKYryAnuvaGf*)-&+@0dNHZhzal>gb4Ozsq!w87j2?Ef7%cGxmg? z0TUN7T-m(0@hgeu5C-|nwel3xAZ^z6F;8psqQUoiXyKiJ4De9U5N#)wzruy$@Pjbb#_#S{iwQrbT z@-@6T7o=J|EHJy8paqZZn2UCM&SemYZTfD=w%+eo`&v!RNyZesg!-uL zHdUx ze7P$pY`uX<9fAA26@F7{?-Q08w#ORC!5+itUKG5K(|WY2U9zM8{t!=syHHg1t+P{5 zr}ejD?&8}^x|fKP0lMzuO4eS>|Js`Sck6RwAoE19t9aHtVsH&DWRy(PSpIBJQsW&^ z06xB$99&fYkL^A?(^|@Nh*@N|;qB@l6L3iA^yFfNUCv|2m65v!YD?2t?T~rqBWj)* zXB!A*@YRkQBPos6fPX?qQ?=Ed2EMC9*|e7;s1Ho%89%iVCwx}`t_AIo{sEJL1-^bN zJ8L|8h#AArYG1uVSA?lDL9Wp<$-rO%0fDhw=S^FVk-7!b2la7QEtZL_q3@z3B-*zV zx<-oqK6R?OiE|fQbuU&gT)toAJ;frY@M}oDkB?A2iK`Kf1WhFS(iUUR7y;1pSJRBv zUkz{F#oym7#DFYNK08OWlT<_(0MGd3gm1{a%T$r4?k}YWq+jD|NLH#qQ7;X2d?dF)XrjqvNK4r2Uon zv4>680zg5K4zXS#-2N6WvDX0oU$nh-uHgrJ8RvUHFIZX^&hIVis!MW3|~uWHGKUrF41YZaStkf~Nq z0xgOU9HVG$cq{R<5>F^nS^Uor+j)v=a9<$gut4WMV!IPVa&PpxOdHI#mMC)FL6RU_ zyo1hEWAY2^9mpTca3$)Lfb|Z4k+(+mLe~5j?B>Xsm{RZznOFG1Cey3Qv;`%w*JIsx zetO&1#Y?3n#Yvr%Q+;1S_vZ>Y34(|} zo3Qx%Q_yYlL7Jc}L>5jD2*_W+Q4Kd?(~HDiIxX5Ew%Qz@ za+OQn9U*IlWK!Xwr4HB*Bl^4)Nl=tu4|*%kNx9~v6p|82%&I~y(IdQvL>3l!FbX|&XVm@p74W}x9=sc zR{3mLIMzw{93Ff(Oi6b>v6Sk(9#a?!h`#djM~i=yy)uzst8D9CcLgQMdNEPT%Q*r6@8MPEgs`stB`uw(fla!!z1^H z*_Q$qH5pZlLEYny2QyKD-)VpRdZI@4o1!Hfg|yB#m`}sVcYEGaD;YvT9cQ!ln1|ra z7vGaGjklHn53fYr9eYR$ixV&NN23e#Y+DKGGQwj`z8&;3gu|}{#(*$t z{>QAvjAq_T`iY_K6VTQWmVMmIibXngtRKr~&lHbp+_GUbxbLl47$m85fo`)*`w$1z zD$}Y>dyK-0nH{3dXU(r#Fx;=kEmEeHSeF@3rZ4G>PzsUdx_d%*?c&wyg3i2xs$j1vTx} zQO-Ru`Lk$tUeo^3(spKrX8o;nXwB+gYp>P06FNdaXY}n!C@iH=*lseWq`jr7A5gz9)r!aE*he+b3oFtE-U$3!q!ZQXGy=wylJqaV z*q*>6Ag(@ILTHI+38jYPmrSt)LU3D>Nl3r&9E4130l6l&o_r!a`D~*eD3ov zXwPw0MkO8Hlur3xZ7*sOmY5(1Rd9sJ1Coa~TM+&VDJ=I@DIy9xmIb@xkUx7Y(;tsD z^pd9}p}lL!3GA(51*_R*F7!bw)X=}MqB|NgXGvNqFX||BzB{7cW`2G5?sy$>9CGZR zyxM;{tVpDzjS!kth%V%2wL}x@=uTRd2o4=top=A|FXKt5y_y5xs_xVV%S?DsN&PmQ zOI-j}N{0%1UF25+1&?^80gJ z^-ohq#Br(o>xhx~yULSU)7BHE@QGC^p{L3~QBpdEj&|?D?(l8|?)};I0oiDeEHYD# zuf?!;?}}%ob;@|41O-=gZ~1H)wVV>U0bXFI5b%6U*@Id%_1>4c*=?v%);956*Wo&o zbWjMRE1N~k0=aL1W2yFQ$PR#ecmOfgs9tQ<*T4}u`-I=URfd(kM-H=%#A7bE3L8rm z*n`z3ROE!L3iBRHlN0$O^Qw8siO-^wrLKepNUuuSVNvzfBR#-lw>xft z<>=)Q5dMLfmFJaqyq&|~@%``juPa*Yg-kdY<}09t`l)5n*CvB(-Jir{?N8j|eez_+ z5$HC(B&`@N56c>a(vV1W>T3H$=iw~#eC%2ZDF1(WH~Cn|QT6f|`~GVY%2ly%KR!k2 z^u)<|OPpX*#aDfAw^4{TcZ?y_X?r8Xt}0MOPI#MrLnQ#^TGBO#=nTh|6dBL>bJBQ*$ z3`FEtzL+BMOz4HQT(QF?%pEeLGGs{pG5w?nu$l)Y8dna>QqT6qno{p z2=~26*-$ch_Jvt*t{V(#$MoxVbVU0U;?w1KmQ;EC7!6?|BHBnyrnGm7a-P>pB>maZ zN1SxN`}(c9@0Rd5eD^JGVu_9La~MZJ2nxnq4iQpL(bHbmxAdI!at@u+tix`nOB{^HoozD6Qt6APjA`!SOq8}F3<9}(|)66ghjm@ zc2p~A$|I2o&a0eP&vi9xpP{Sxj;0XSS1W12HuSSnrJadiKod8uUXRjU`P*G^!n#8d zUtkAV62OL_Po#BDCdhq!8WR(xqDP$`jNa@pWnd9(}LP3jwT_VvZAjbb;hkg z{Kr`GnzY(35?<+4m6&ra#!ijOzgVJ46iv*n#dG3G0tP_azojcay_puq! zhkC#z^ewBd_HsXrddXsbOz`i4Oyl2B{o#};%OfzX??i<0qxUNMIr!YRwS!Gywb%Au z?dvP@o(l32@PH{fE{gwJQ%)&vFU2>dG~A`iv8l7_oT+fJw;e{l7HT8 zy^KLDcT1-#h3K&np@=6ECoSrpyFR%PM4D$*TC#LqCkgT?t+35#7!(7*C= z`_?9QtziXhF!|n>;iI}w)+?hJt=3ZX6W>Rc9Y4}1mOh=7SwS3=7mxJvJ3OJSN%7J9 z|NetvWFw9hJP+lC0n*k@evove;G~rmGR$KEZWi=!#IwKOD$ot zu)uecm{9d$J*1CbRaKKGs>saE@SpP*=76VReZ!ln81-1OEy2&QKngSpZjFBdTB-Bj zR=z$?wC(J>y-(G*zxQ&EN|45WuKdRsyISxVO4)jf!OH&{@{j$xDH8vW%=McNhVxc2 zq8F&ef0NTmgdDz!PHJ7D>;KLgTUx13fu|L=v=LG+MC8V$bfihql86ksx<3vXwsI6c z?iaD8E=Z$Dy63vNg#JMLlt6eX$HEu;yP+J4v zLp5gD<@}i}C@_;EB%OMP1=}u)WGJ46Cw2T3bQxWDOK}Pda+jb~j0Ii`*W`^|yNkQ9 z@p2g5Bx~CzoHiFn-*brF$_wH5bDt+B$7L$52XjgLp})}6zk>wsr(HOYEwlD4f&JL1 z;V*GSH~!kd-~?|G=;P`OCzO*F;LY|6z2}nu`?{N8bzbIi0`*~!#N!$Z;WUL#T^+AF zIztOL{`%BDonrbolJ}qVME0^mgDs;w)(Xc`!kf_gIuAhfN%ba%7w)kGjsJe=^n+;? zqx%cqGK=(~A1=mY>JSt|lNU45%o~uGq4bbV6b}+b1Q(5+cmr-6*08^@XGNF!e)_ui z6oo?3M}>5&YQ!LD!UetYC5FxY%nJ&MZ^|tyaGY7K@&`>Gjq*U(sCZ57mVeZp=nQcHKp`x=b zxy7Q*F`#Gnnqf=qQKFwR?^TibIE?f@F*f&2VI~b28*-wEV3$wb(8qLXYLkJb=vY~~ zaTsC?$~r~RhFnC#o?b70Nnsjk#idg=NihMz5|^#7}XTguHG?n%ObFE5*6YM>fn|lrv6bN0S zWJA*ry3=N^(yhaX3K>G&54*RD*|gT!2J=`6zO=3d5%6os6zn%PD+8uh*05k+-I|0i z7HHhx3Rsz;-~Lp;8Hmg;#B%7ehyTpAPK*FO;9@~#F=0y_CyKUHpzCz_fE6y<|D&J* z>lRc%JOU0vQDJnDR05$jqV4VNOe)9P&#B(~b!I`GmN*?AB3yp%DhxuehMAaio?6<0>bY6Mpvy$7SmUDbZhghYSrb9r;UE^?_yF~gLK zByFG|l-A3hQ^e@p;ws@ESw#KeghO|zM=-3^0=N#rNt^#7Bf`;L{G=>9JnqLmGtGwX z40`k$BeWt><8^gu%RXi{RvTN?`6ZTr3>BE));6e(9r;%l0NK$%Y{L_WFOE}0Gys@7 zA%lYohQW+meExAf)03BT`WKG*Zecb2}IDM_!H7U`5uFs!{-G)|O+n2Vy_L*TcLR%l~yka&im?%V6*$n}0Z!OzM7=oz8b zLrT?m9>#UKzdWdSLZy{eJj>R5L~)F%?l`zYi*7VAdmjtGS@|4k6R^tqm6Z5E#;^xh z!jnI=q1Qcx{bf(V#3}UJJ;W?@^jNbYWF~zQBiqLsmXrk6%aA$&M&C$v?pKiN;9xs5 zzCqid^^V;oLm}K9*6O37lHwSk?-EWU@{<69e80WBn{DLS{592MJJ?}B%eIek8eR38 z3}o9FAS)Lkb^}Vwe7ao5*|!RVjdzbT=)blin;pO7!Ur&dy+{ZH7^87 z3;OR%cx2+DG|bb>oU^I@q7s*0z0E5(_wr1>r67|TVqI*}^krwK2A@LPi# z>%2g~^UHA4WQ%|eJAgQ`jv-G0RuIVCT@Z5X3OhNaqKj4UEry;+Vj4Fw}2X;e%Cz>3iiqi;&XX zA}qBSNmY*3OUz6BvCn;#k{s>at!q+luiaIZa{3e_G1i-sKq}M#@S?d$1-TpyCqpJh zD8OG`ZKqwO-8p_Sk^g}~bM-G)EI8K@TsR3I{&cJktBUMNkLQ6kT0|mS;UbP%a zcLk>aN7{qMm9%MzF=l;a%_Rh56{uYx$mWFrB1o38V8(J|+KRF!;beVoNB^!c7;Gh= z>-vgDtjMWgRKR1_F zC9UYQYVxM;1pm!v8)l0Z_O;aXYFIjcAv{sZ(TZUCMQ4a-#QRJ94|WtW2mF!Sg(Rv` zIrXj&JXZ>*tMuh0RTOgGhwxol12W!E%+SLz+A7FNh{Mg>PB=>)ORA8tgd)pVt!ywv zhmF$SjYsK;nidQ?{y9gihKr18$kBj|00KiU7$&=~NBPSalO}%HORl;Dzi)ypxSqOs z6{r&y7LycQE8m`kt+=0iEm(K|pi@|s*6#MOFXCALinW0+^c<@v1$uo@{5*LM%>nN( zpgW<|pTA4b%ucn0QOnZ_u5OC~^nGihheft;ggVKI9qbJ;@0RWL;JMByK(iOlVTH=# z<@F2xv}@cZnMx_q(=CulPf8gGSx;js19|EA17V#UuDGZVwa#^?m=wb?W{gm`c4F^b zAZ!}#Si9|G$aP_3aZt8BG4XtNH)ZPs>B*AoOSRF74WGIquV>f(??uBa}Yhdhd&eN3eY8yF?9 zU3j>%`K;OQk0t;4*YrGtXXjAlZ}W{$b_dvM8BK)ZDU^5L;UzTo6_BYt(UakR8N-C( z`k3L9Mc`LVnNY5XC_(GGU|h6MI`Yc~9_LcjDr@oJ8uqF;YP6a0)n#)(sib2R zw=ns&T%joy5Ro$}x6&lcaQs6u7Hoc&IzqlupxJ`H2m^Zq3nXqZtFYd`3zC3O-+_Bd z0CoZpD;xF40qhqAx|TE78+zJb4JE4zI`okWyMrrgPOqj|+4XfP%+BMUB)oiSo1KPq z+DLKFwHqgBIe3ipJC6B9t!Gg7;)w%qGZ{pF-sy>NmqDe?=y6;etJV=MZN0p{R&#|} z%c<7Q2^0Ppmav(!uSFsm;1%ZFYU@vN_9&n23D@nb*1WO78lbA5d^u+^b2zXcUB)40 z^NYR772d0skt3ZD2>%B7@)W8+KXJ~fkmH)7&H3WUK#Ez>yHOxM4*C7SfrY#9%nqiM zc7^Na?&jeVJ0bSy0XY#Q&KLu$bv3$5g7potEGCUXG>LArzJ5l$+D@-s6q6*gJAnwT zg67Ox<=xD?V3mM&s1Whpk z_ZemDtDV?gpC7-<6Y6GHz;~KCzZuG%`59m85Ri8@F-ONAWzYJrVuXV~$kQbc{#iR`9n{F<-c1s^Zg z39ZPer>G?ShTm}4TQo?m$xoD&Wf5t0+-_E@?LuG>W_^9}2{9e1*7SM3;FjhMlBL?v ziO!K;S}yn5*Feu@!F<~R`y4G0dU3F@fTUw|I#L@j|NX8e$MVmI2fK(MHIC77IU>T2 zXK%dl-@FnHs@&D5JUz`VnZo@|ZT8g>|KVfJxf8%}isaZ-je)QNn>sZ~TSPZAHZvwsjL zP1EX(V`V8rfV5~aQ!TU3_*fSA?k8qkhG0MI?(4-cOQdth=@y^;#LHlu-BtTKFMC;m z09-vU4unV?*~p?Yf58kWB%tceN z)xPd5{_qZ_kCkFoD>~o=B-;E!)Sfw=*um-;^l#YF$1Qdz zdoV_oWceGqGRQpk&!^tF(eZssboOP*_*Gz>khG70)}Rb-9p*E{eAbKRw%O@V20#|& zyw7TBHSA;`wuf@6KR{%<=S#c~T8@%GEAO1s&9PI49K@t+CaOgZ{$wEI#s za0yOgBcz%yg(nbpSCf>*>P-Fw77D|z1wv)tftjzx`Y@RI9g916cvnCFz?C!|RI8vE zvWmQ1H^(`7pkw#&tGA}=%Zz>fQt^mhn}^?Y{ll?j@8!ZC-nWJsc<=%JNSRgn+JL_( z+4rBPF`tz(yx4g!sxUb(N?KU(SL>~jQGPcFR&Z{m4g&b%Bt8+CBU4kr5HOdmv z4J9?Y_hDJ1B2Oue(=#GUE)2byn=hK}QG zub~1UrF&?1?i!|_X!@EHB+9)~8AqH!S~WXNCqy4VH+RU{lFkl_rpJ5IclYVD+pO;G z$NAe)Twu`Y(5T$>5ARgbGtACBWfk*oli-jiUqd`O?|Q_fea~++#SaPF=0)YzzszU0 z=j3759`IIOx~-Nu_HCn*JLR_#U$@bg`PJv2YJI*D#%AwdZH2Zu!X28H1BijXhxzy{ zxBsJ5?&b)Sqj4h%qZZQKK7&9SkwPxkqZL-1G6y@8Blfj#u4Evu4QW6crsItU~S7%W#>ek zwvSf?NenbO^cBimjKz74=PX@mu6-L>nr^a2C$NihGCf%Az88jJ z1-t+2GHIu$yYB@%*QEpZ83Re$pXXNTSBo7AF}8DPtpyK-ZWwY+seJE1_|JKFoKyZ^ z$*HVQ+dbhWGs)KH0waH5y*p>6+__guRTqSVhoYbLLe-ku_`sud{sAXur%-Mt%Hu7b z-9N;n4ZYjT{8yUcfH2Vu(pRof@-G7pFGpT?RBzAO9h#U*I`Nv8SC#6Gg*?-a{8=t! zDv&`w)tBU>8}|?UEMft}@a6g46}s)`RvqY&TOt4+FxLiZgku}QdI<*!{Cc5j2atR* zj9l0_?13ui=eiys;<#_z@fC=t!Wst90vtDS(|;eDXr`5;IqloJpl^B67AR*T znx3P@UFc#Il7u)QLYMAYC9D!QgLfD5mKtc$=6UssJ{+sF)5repP)GLE#QemP&(a8s z#4wTnB$d2|eFiPN!}0x6)v6x`Zm*qsthcTIJTSi|r1Y~NK>NIZITLk7$2a1Q1d+g` zM8o{zcbFh;)_j``U};mqk(|f|862Sy^NDi1uC$b{?-^2r;?lyPScA9cEKee@P53P2 zZOd(073gQn^0MNzhEfz-UD zmK!kGL1zke$92MV{qr-g2X~>aFYJ2;UydiB&;g0?In96Ycl7@Of44lZLGN-l28N&} zkcup(@$^0!E1}1i>IC=PvL$*=T@$&lVhaWRX)|6vAs)q z!Fe_KLq+kYu*h@}eOturPjwf~ym-%OwOV}ImS@x83Qz&;DYu&19H~cdE6Yr}(yV=s zKyA?)3@EDoO)O#nE$Mo}5;Xw=*iI(bi(MlCKLMq*P18YBmBp2!VfhE4!DRmX5h>E& z-ZW;Z`Zw%M5ObVmeTlQ9lDau-U07X>5~#Uw+KZqpyL18xAcQdR8v&r4F0$3)?PfQV$=36T;w)lm?J(d zAy?cn*G0DoH#eBcs=TZm?Mmwkloh@ys@#m#(;F3YUsSo6_l~#%Cp-we!3GS!I2(+u zTM6y}ML;FmDQge#P%kRkqc--2go1VJ#X11_#NQ%CxyQ?Sag`j)A(h7VUd^_%i3%v1YEO^#d=yo0GnK zhRz`qcS3k>LebOotnge5eo_LhZa7Qz^Gbv*@6eGkm|`Bx{<}<)v(3B-S2i%?213!~ zr?32O5P{cT!aK>8`KaoT_11s+t4=#}M#Xkfp?BN7tI*TeQ1ZLPGSaZ}OPixbUts0{ zBJd3#)rGMSShZ|eCaPIVSE30i?;VtLq9B)U_t;d&;3kqH1sDQeK1 z#_exQcrX5Z%q1A`Krgp9C!4f9q^%dDIUB80w3PiDg_U^d?qocLgS#fE*poBxppRVDxY}`~G*MuRsG)g)5(|p z@lN$cQMLuZ1f%|N6cOZOZ)Y2D=QHxEPHO)VfSuODOoLLa2J(>+zUK%ba(*p$ za$Ri(be`!Z(f=A}HcrVU)?o+B2et{d)L8xvQ14YDk2Mw6@#2qk|1Tj_3-mYhw4BwT zPdfV5-gk=G&<%ar*#~k_*Wy1lsxQHel+Fz_cQx(w2&?Y+dk3j4BccM(AT3}h$don* z86OurZD`XyQ$=#N1o;&H&7@=#;Yp>(VoaSZ#woi0AiDMiAo{Gh+@j5_DXAd%Z}2&h zc^*Wg_5K@;#_4^VNy@4OqScd{AUMs40A=X4?+*QgPUkM)0`5_!%nUsL8uAaIt?%~# zC4LQJ&Hwj-^iPjK&=;JLoGm>he;ZY`2hXy`xSm8Jf@>k;eNbFU0|6GP%z%o=S3H7$ z=MsMQ{V=RVjNxN1Mz_-1sEAiNUSIr-j1QVk^Oz6@pD-w2;FGPMW>wt3J}Q3jT#@!J zR_y00d3+mXQi|a^$MqUB{z($#+x8barA9!TR;kfdvkvKCu>^=JAKcJsMCmDw#7V6w zr1RV=3w|%4Ulp28LtF7rzBEx`P&4@k9Dn=18eS6u+#eR+gsF(TI$Q?{k?z4zzZa9& zp&3;3aQHyNn<)q;VrPG*z1CDU|rRmY^lP2RtdF zt^=6Avx_RsN&u-*OuuoOjPBSte-p*izB@+$ZxnoXk*Wq!6sSF}&T-d3)KsO^zwavv zBb++x=W56qXNB_?!rNI?ehL!Xiq+ET*-V`;6ubB^nf2?B8fG)%bUNuu3_b0>hNRw& z3+ro}6Ej}kn-j+s(E>2_IV3Z49Ym^AaTygG(SPHZimiJu*o9T!aP?z?x}GH$R)fnwo&; zK^FXzQyY3=fbma4>w{uo@>gb_%;Esbsqr#dY7dsvZ+&3};V^DGLx2oi#IxOl$$j!o ze;fClq14H;spbm^RT5CiYKUC)Sw%E~-YbYu!xo)-huH}5KU~dsO#?^7mbC`LaCZog zH$|e-7A57E_KCdJ?<}w**T;mq>(O7Fie4CFb&0Cw-{Z_0Gr(D!UA`2>O&C8O-Yi@a zePUnF{cP3B8CCla=omqxnB2N>y$B$sV|(0I9@mh%u7^=9R0>BD(x>v-Jyz*L8LY`J8d))sLZGE<)&nCLWIZ z#?UPuNsJ*NN%sA7d+-ay@utI|eR^pgpz=uq{b1!9idGL6a4%_|Mo+JW1}XzPi)icB zBDkloPVCIH#Y>@Mba%`TO$tyIW~KBDg3XM^ZFtjyyT)g0^FZ7ZbcDd9TH`ZkoFOBm zyJg)mR4_CBj1)jNI!m>$1XG>7BZzx=ZIXG zZ91@f5W7#l^>$dbtF~OMsFoy_>2Io^Bumrh-j&j3=JJ#L@0xC;Q7BR%diq0)Wi!qYnbP25$nIVK) z(+F|ylrkmKpu}%$DIe$g2Osogp8?PUakv2!lOPdh=-}QyX`Q1#q^?8 zRT1Awd(a6EhrXN?O$y(G&lkzBs6zz_%9Vq8qA%+|CH7!EA=F9(1@pKx)=SS`Ks#ea zlX~Uo#=(Z=Pq(4ET4BENfm09Sx_8*oH|?Xd`~BC86F>)3OP8V5xrc)Jnq?vI}-q`1RoVRfh9cC2Qj=^sv>bnv#M;!5EO}bEe^}HI8_) z5LkhT6&vn1&@mCy*U9+{byiCY3w}n2!JcU_&yKDait+bPwk`&VG<4lZYSvn+a(0>% z79bIz4kQBHX5D5nW+`H?(ykV}Xko`AaVmGX@${aUg$DdN?U;^Pgh*>JS^;wI~1zMXHr_)fmX)C z?X)b3hwS=(q&n~1x$}-)tR6TUuk;b^%)(+i|lU}9GL&Xl` zDKyK!82%hxvEIH`_(!{Pf5>U%^x%8%E}<{O@A>Oi;I9uk6t%P4Q{*%+m@L9?XM=37 z({j5kxDj68nS!L|_m%RYZTTcRb6QzmV@;UtW0XX%es6fJ8o^Q=4RQ_-ox~Xn=GF>f zC2tIH>>jEXbqM+rHBU*3lmCv~6S%@w0^}Z`sA(X(K3gzPQ@=qj(`42T*x#4ch(5I5 zLlUGz9+&WN>-lt;eJ6oN+5t>&Wc>7`D=W*xGtt=h(=gGsS@+@(rb-x8M4mpvfOF-<2H;fRvk5<{1yT_7IY=$IVNzwyB&DunUg^j9qJF|aK+86v-y_*=|$ zMLH{}Yib0fU!Xy>>UEB4a1IO3AecA?>FaWop^zjm12OSAUOE3w;4vrs8qv2)c;zFm z!>X&(yKeCl*2VV^Jz>qivr$ga2dAz|*~k9};+DbSCKMj5driy2Rktx{W|AYtv7Zi;m_1E{l-An zhc3vY=ozd3&?@sWN;_o2M*iOn515QM7Z9MQk7SSke3u+nT1KJPv%qY1|2>9rf<^Pw zTK|Dg#VAAQEinT;oT$G7dy7@*dPN>lCg-=$xW@s3;Zvn(Zk6qpVM)eXhKBE9Ztp2l z%~qcIL$Nxgo`5Z1SHIn3ZWqWs%*CEyW-a&I4)iIZ6)X&e48v z9pGv)`M^wu^cNbO5&n!Ssoyy-Rl1}}3FOJsjN^`H8-=V-I{~*4`-LvLSlHkIWSnP%8B$U^sUX63U zjAfoTaBJw~pim4@2f;8Hwl;b`aCi)!nB!`3!;qQfmIDaPp<_*abSE9-^-aPyj>}(b zrMa{UWO$FPlx~0Peq07J7|ou1b^iIX$3PRm5-)fNgJgGT!-U!Ty`I0b8*>+UD{Mey zgDIF$JhxU*gBtc;V)n_Z+MFaEDSxqQ?^R?BsSaHeK}Mp;d%eijR{_yx9`rHFPtxnT zT_5b?J?G`60}Q?c3b;Kz9y#;O17`_7x9cqM1YBp!TyDzRGK-A21>gj#8>QD^w(^t7 z3gC;?>&=~K`~yW-Z~_xo{`8DM>)>X6E{){gli-n54A0L?&I)r>?B<1c{>9f&Za)QN z_c)7k;WU`MYzM$h;rmQ&Pk=SBm-<2NTbc_5crVA#^mSai?3J}AmGRMt{C#_`#{G|T z<%Pj$-3#ow^1R^itxL7-?X64^Dqo3+NmQ(9E|Z<@@Ht=e4N+0gHOb_-nODJIjfo3S zFPCm0%V-B7rDXrxR(@DMamb(|53yx1SNTZ9SG%4a;e&SIraIMu(afnJBk6FpfVn0c5i_p)Jvk z%OtgXcrmEV)r^_jb`&z z*jsQlT7azx(UGJagnWEunPeGu6Y#ur?p^T>vzW0v4VW8B7xPkWyYc#>JFe+Pr3SW& z_kM+r(VIk^PbZ;tv7tku`S?fH{uYWq=BSFlh-I>X z3?2{~9>#plQ3*MLJdrHJwILJ7d)@y0I#HMG!IMx(a5FRwz@hnxxGVP)l)L;*PWzn~ zo@<%ew{f+=J3vlI?TOL;Ht#a8;6dW&afO@-#beD1!?xHy#`H#_5-J&2wmf;YzPCJA zw~3&$W!SXogn#?Q2`?OJTZI`^aPYm@uR%FgUSyB&<3sfD5va%a^Y1V~#ol<|MmspG zy|O7r$>GSE^8ywLc0ul3d88PBKm8xwP4<6uHz)r$bvKKQ$FG!NMle!}93cXaaEl+I zH**3{0Irr5&b*Ks&u45|geXomZIhtj9QPW4f>@SV3Rnybj`g3OUXTxEB6jne2T-jsaYwm7!b?E=4b~uVx%)pzesc9AL8R-pEE-6X}TUP3&Iw?-qowA6j-QV_=1jbxg z_I_W{)|Z~MC|j6^nq0`)I$R{#2JJKRS&n?>%Q-PtPE3(1H76Y{rCbczpq9FEOZ_Ud zRLDhf_FSG)`oIA}dG=~d%q?ylc@1QEDO;#)i{rBnF)j;n=A0*zo;FXOys-$EQxOYB z$4xA#AWC61zlz^diW#{>7=t*vr2jB++nxG)H3#Z>r6}ipL>dm|uS_Z<90e18?If_p zIP}|-Sz;aV*mw78bh{egsdLJmeV8Uuce9>wzAG$Kv;n?hGfZ&D@Ms`JSHn~D0l~Ew zW9Kt}dx*UnQw~&>x%Njt@zBg)IayGNDpaSVnMO_!nG0EV<|u|!i@|ojdT)qufo0cR z1Q31Bq`Js-W2u&J4U~R_s6o9yk}HSn`WBEqY>S=q!MB-ciK`9d=`p$GFR8n?8Q=*! zDro8pg}Qb67{*wL4dyXI?CB?U|HbY)9j5$7sr~Y=7W?1-(0eU1F2DQLLcEwEPbT$V z&b-j>tsW~#*ZzMolrZ{>h(FI!9KfgyQroP4z$Xc4g+p>-yI!ctp2<6o0@1Nj*_T0i zfO)|>GDXiQSowjKhlP^afIV|~|Dl?0%HI`{&?#(=+Pgnn3D{aR z!ZDKfNK4_#eu zFSa${^Yaki{3hHWv);ebVb^Ueqx&}cp>JxJ zJudB0*$xoj7FWiaeja9M_2_?QBo)ncp zyb}yN-|^(6nK%+ED9+l@xt?9ZwgbW=ELS!I^xwHMGg|s8Zj>~WwsFZsoO9-*xTh@N zJui$)ZS70n*@4J)yZO)&3pVuHS58*<+sdxC#vfkk+3%wap;LQQWj&%NCeE8Nhu z+*22oBV;f1yc46xWMQ#!ze;VoVROGe&60n-W~=s`Zfr;_NQ!eozsZet&;iMnQgyvi z(f3^^X&X_!|5(}DM0w-mJeGg+22M2~6=44>r>UHB7so-N5q?A?sEmr^(QtEF5ZL-0 z2pOv@T?h#-eO=`H1M#39agSJMu~T|-l&=s?eEMdACSExiTg-{+uZ#Dd`_}$-+IW!O zBEvB-acF9&al+;OT9T!8DLn8JdnFFia`x`8R(q6*Nx>fOdUwzp&j#n1hL0g0$1^;s9x{y zW+m)yZ+v%}Ov=BXA$E!D24(ij2%>mzcy9`~HS4P5f!B1q>P@B^He|57ACSEkX)rr+ zc38V)r%DZaFt%kG=6H-xQ2x+-C7<=l`s>I^yO?a#!_Jw|@6z_nyLVq1267t*Klr20 z9wF7nh)wc92dhhQ|{hjXF?B;W*i)+NH9lsrfpYe%beC^cE=+R9Ty7E6GyAoP`GzT zlmYvOQ7@(HmnI%|h*CwM8w9XWv8OPL{zI5<84@$U5g>h4aF72y1BkuooD@DX zZk_=+N|IDuxS3t8yOrmDek3^dlp$5qPN}>mOOU`1BwlkLKc2HGd$)IRT60Zj);amp z^+PvlH1LqoBK+X8oZ5H@1?fjLIt%}5p;5y%pPX3Lr*Kng7pjudyZbM-<1=Ee z*u8^Hf?19WhlM6rrG=U@%`KCP!NdA%Kq`fwCi3JHIi9`^TWHRi8P1qgJXiblnQ&>g zhJI%!xtcb=duqU>*@i{i9v|gsH5JXQ+vh_|YuvBio9=E0nZ<8qEq7Mj+oUIP^@j5T zDU;W6F*&D2Un3ku!&Pm8M+8<7?LN5iC!59(yJ|BQwNe+_bCo-LeBlH+?5J~5u4es{ zrzpy6p@&cu)nqjx%5fwiv!TX3dKdxd*~g7o#Y+g^9c~GlI|+g7*{5Y`=|MXOTXdud zC(z-J4uWaoRbH4M&Q8Z)YuQeh5Q74fcQ>!u3O9ukg*I1tmOEqo^rjJML-q*T;Yz9h zLET&bMfHXMqS7J_0+NFuEhU{pNSD$*C?X9ag7g4Nh=huCcQYa#GAIqw-Q6HLzzj39 z?|i=Jo_o%}a9{J=n!Wehd%d2$*ILgzo(Irj7xewJkJF3t!er-edC@=5Kur*lJ%6_O z+;-ve<|QoTtEp+*%Xr(i9?%{H622g_7~Xdyom8T_oe6(7mwH;xt9|fg+L_kSsP~z* znQp(9V(>-k02Om(i9_h`Y3CBC*YSTI!Ne)0|D8d*oRadc-&F#a4gv9e9I}r2-}Fov z&faHC&o^<*dDWuy4)!peay&1-vpVDJlRG3-Eb5vemx1gAL))`f{t3_am$*+FjAj89I7=e9z@lun9xGqR<|SVgJ-B?CMCzlFWjnX5_` zurHWn>&lzm?#q93hRyV#Hg!=ZOD*7@Yt5-8LfF(2R`hp66gIUfZ~84DXz(XQ%x;x= z3v42^P$JUnBjnyWBVqOTTWzt2p}U|>oJYusI$LfLghEccv5IZpyMx8+ zM|tlR{MjvaBge}ES4muIO@Utv!_m=^mq^cGjAobk?()Fg?;yQ z7b!F9M$U82Fz)pO|CkMD4T3@6AFT(O$uztRQD}$$qku{{L*zO&zI}73~K?Y6Qd+-!}{+|SVgk?UZQvIbd(>8TU1JZ+?j^PD@D*- z_@>Qmd|urjMgZY;?d%0jzIM!8J}nmMQ=ILX7f@_s%CC9g=s(O1Nfw6UTM!P>Qt&AT zY6mX1=LGFl9$kJPofKFcy&@8*Orh&o|8MF3sp%!TJJm~0SC;0~`2uS13%_0C#M%26 zEKnKEO)PI1&1<#{psP14IUvb9>idG}J^7#WpvC)(Uvz)jNgxJIDwfzB!dj~4bLSxF zI}m!`ok5{doabPo4NQ<6Q@Kt0Qe-<6YRunPw!;D&fO7nnWO)%N(F8u|!bIE^!ia#igWe)0(Fq#L4 z;Zh(B=+m@Gp9f;vMs@-&HaHL6lkaJ%xPmHtE?5>`F$CSNatMS(g#FzXsmYEcO&oPN z1W_87lJe#Ib<&vz?@W@&{kwaPWG#bG1PXe5CKXyyYIJxnUINw_f2>zj^(S5Hq%*c+ zm(L_& zV(W0Z%i{O-knn+~kXpIJ2UUFX-zoQR;GDS#z;&4Hoy+F>J3aYE>{n0B=0Gdm52ELG zRIbo6Kb}U-&~T->jyoPFe?HDi>|G_jRWkRVMn7nF6%#`|9X^(*JS%+XcMI{pBi~3R zcbjPraI-oC_ZzXc%v;ejKa6hYu_g>#G8i`kOVRIpTd<=*Jjk8y3IQZOhnAbKhtgT8 zjp9tG-_Yr;TAZ#}1?+wTb3K+y&H?gZbkhM zoGF5of0Wr3c=kVZho)cz%m~;x5N5qh>7L88QS;839!wULFbT8R0g@5b@<^j5C?Aek zvs*KW&?geq{rf}t>?-O1C2YG8l$c;cZhL-a4C)3bVjxNbo!sN)JQx^M*t0P4;kkpr zJ{0k2pnp6w7?<+#+}y>P7&H~!^H|$C&0i;b^W}!bY?W#2Vs>L^2AX1UvW9yZKBGPL z@@&NRWc0e-bxZxQ%x+(?38V#+Tkd>HbD4dh$G|=J)XcdMLNm3H1gzb)X0XeNuw45^ z5}%@v_AIqisg&+jRw>1q8aUxT!)7MaPzbI<#M!9e4RgMM3C5!FajfSVIuw0j ze+=4Zsz1J4KMa2e-I;2s^y-o|G8|$uEj^zBE6gG&Ae}n3Bu|0!S<9)0vVVr})G%&r@kPObh{baRp1ZDlcVoBiVdBT(_=3qF5r5&(m6QM{Orm4u zBg0GE8Gph9w217rjz=lUBDLW+5uThF7#3N}#{S!OsTJD*rs+m~C|lVY4Mhq{oFt$0 z2W^!O3WwSU(EKNb9V*EqUdM>k(GT3`TL~3l5)>`2V*fOSlg>-u8b|Z_TW;tQ#a`!r zEM&GAJou_L3`oTRNb@l1FmqnTdID8DNck&qo2|u{d(Lu39jH>soI|V)6I_!sGK-zH z*YdODq1<0W;Zyvz=aF#`R$5D@$36@M8tcg{i8(L6KM3(rbk9LY%D+w;qQ9R1lJP%j zMY(IZn@GlinTf1nLh`}C?r7xnY z-Au^h|9}nmAJ3|xhfISb>RyG(9SNAU3gJqb`6P5I-I=I~tEt;n;JO%WN7SWT;QMJ9 zbpoJpJ3R`X3V(I_4%9A{@$U6Pl*fAyUvO9WZWBq6g^J;%$f;yU$_UlEvQMyVVv57( z#p_z;11gCKzu$y2pnW7e&LN#r&jdpZxmgsi2U7W@Nv(mB7l*4ClGo#2EQY0OZMfQ` z3jz3zfMR0Tut;a>P0BdavAF~74s&bA*=Jmachp($T7va0wrnf6uTfR0@L((fT3GB0 z-K5$HIxwRqtxHByb@@SU#em1_1Ho0P1!IKC8QHmjqfvbV2CM*}Up zXx^zZ!ph{xTf={z!lA>Xh&+!EE85Y1p`=c4*)(A@9m>+PwqYJ&LwTFv^&dzQoXN{^ z(AC%Kc=+#omE+5|gQ@pZr&d0QFxY8Vx|y$0U!S~qd%`DMSkYFZJJR#5IqGay4bfh3 z@cGfM6T)5PdK#iFEg77hAveN;rohtVQom+i_B>pze?Th)hEZ}fw4{?0O~DjS<= z|9Ks)Uz4*KycSvcW|J`&Z;ubd#VL|IbDa|huA(tcD9xjD^VcHm`$l8!%XfKBHQIC> zO6>`#Qe%QU*#Dz^qo#qWqkB4(C25vUuDQPxNT_`1OdqWE+o?i6-Uf9loDjmk{5+3j zMAivs5Hc4cX}L%W*X|QB?=C}@ScT81%wZ|7iNxRoeL)hKAq(T)%-7Jv;r~!pCMfbG z?us|G8m785yXd&neK1F#ZNrDF*xdVVmF9o68Q*^Xq>bs82{YJC9OY{g%rxosPaUom z<9+rw(63r-jg9(T7-ytViZrqP^zDIdd27t&Gowd%YV&sB^$+o{8cx><))G%+RzTCYnOV{QG>KGq(~rekol$)Wh}#TU?N9h{ZC_X_NrdO z@QwbFTmgEjSxMSLuJTRGI)lkRHT(kP){8qO&Z>P9k4hE;)X3BTyTfa}tFP4!%98@VC<4+@J ziSL@4f0k43k_1ElvbYxY=NbE+a6Q<)bY`K_^W-wFf?bZ?8aQ=rj=`Doku_pN@_x~y znBsQc9SX>_i(?00a(QSwv{Dwi*yesC)oO&-9Dqj zzTE9Gs)Yhepn%Bnv9YXd$_Cs*# zBk1ggD53_(Qh4?16qvuIRQ?tF558jMia~K*I`g@b#=V}=K<#kzjNrpqpZmgn^?d5s-)L)69oI-lW3DHw5T_3|M8m~H zDP(KUv0efI9f`fPDc}{;8fAD#K$F+juqN%1-OlBxVuI@1#X4+D$>X{>VgB*P3z5x+ z7H*lF;72Ii%wO21BrsgZ{4<+MyuT!cAU1CE1AA!+s!$fRyqiD2qksat zF`MxTH@vLlcR;u2R}sp_>`XWg;h*vWd{EzEGkzP_>E4pKvx}&ov|Ah*x~W2BorPF+ z%x9Dn1*hJ;!X28kIX$@s$@~9S*-A#k*8LGDW<>p6j3hBjy8if2;+ly%Zsub=jL)0r zLyQN*LHx4a+rqUDD>=yuo=mLFgX{axL8?UYQCzt0O6i^hS^4jaF~b^p6|eA3UCT#8 z1>f@HTkDlJ=KR65bb)GV#=Q` zg!H-7!z)(gs`>5er7G6T-{U;+Ai5KjTkT8Mq0oE}B7?RVsvb*X4j75OfVC=d1dFL3R>%vE<`=l5!xj@y(H*&}BFH^~!KYHG|y74c;<@LTpr{HDK8Fq;Vzx%4c zjAA<(Cd;ey-vIwa$FT(%-$abcZdJs&TFOzfv}msuZzJv5wmD#cbJEB5_?{chVoATT z5Pr}7@_{Ug+#+Wle?)hPrjy4T?|;1eK$_05K#4$O;uE92COsX}z6%(H24ZZw*pK^?_` zd(1@CZ1I)!tYgaX9lOMDtY$wD@4fRfbq!F@j92;r)wLJ~w89Kp znsc6FpJSh8vDZM~N=?7X(l-?+&#txso+4J=G2*CE29DP~4jLuD4q-^Q=Uc0~+pBtq zE=(h9%ogm1YJ)-jTYWe*2*{M)APdW^k%;1);Z98P#*8N$qe(oyF_Nv}PjeqPS3RMP z8`g0p!&48&ioNtcryJPE-AwE#w8}x?F%6mLIMzhgMBq~iheQ1U=c9&5XQ%<~mq`9g z|64V4oXS!EpR}PPH7Ud0vWVv`>rx!ge9zUJoPWer`uMb~SA2{kBzaWd{ovP~NfDwq z;|&hFii&CQc!GqufNYmo#aH^rc9foeRUa&ml zM_boc_Uu3-;Bf|C61|NGvnA@RbxNf}R%X6}xcP8u(o8lYq2-L*tB$DmFM-jCwjY@l z@-yJ{P)kQdZQ9V!tPKX_d(4IAcd)K9hAN1sqtzOaN;R95PB{^Z{^v#&ms)j>9+IFR z(kJR{?C!n+ec13$PvLgbCI5VwtJ8N+!>pVS8q+0^pw%7AdjRUD$pvVA!^pJBy8F}t zI*gZy4OD@Crs^#GTUsy?#hn?3qZbDWQJ}XMZ_58QhU0``O!? zmwfzm3y#=L%wf|n*_ezhVbxoTEA+)>?R{jaLA95UiTv&MZ{xjwP#3I7% zedTgz$v=506{`Aj5l3`(d6}8%R`gPEI0DjJr+>&U`gh z8|LK@=Lm4ErAF<;clMZd$#1YCp%e)1kC&De-#^}M>d$p7n9zFF+rtOgRYT!+K@5t^ z?>>xh@uZZB*ML7!o3K~y9D(Ang=w80z3b``dPazYeXR5dxWpjRzEpYyIt4fb;{dmk z;@LURWI7h?B7df2Z(ZvwBk=pTLqOut)1QS05iM3!ur=>~EdsSP_0VPnzS+4?nz=N4 zqrH|#;Dwv3 zGJqf9d`+=fUugD^?AQa6xV}7&b`Msd@qD!&?QMnJqnE%IfsFOJpr!(vZabJ1=BOjx z5KV*qx7ch&U{Ma+5BE9p8c8-Tx6lh&U@76J)ODY-Y&?)480MC%2}m5o@9t>nZ0^R= zXD$gIFzIc1b@z2xD2Nko4p?_@B`XRf+uvi{2Gu|{hM!8;iDu_RlbBaO+nT~j1BzzB zq7z;i$13=ewm86D1(#i!|BGPyTkY9}%8U~`H zz+SCBz(6+eOq6!)YCSEQeI>my;a3ml1KcWN1_aIf#UekW7;yz;m&dU)`85`K&?B@?yy*eJAPTfD-c_0%j(R*T5o{WN1u80v@j5L|l!^y|D) z#y5+TTHGssfi?c|;tx7paJMBwDVQwkj9fLtsoi8PpARr?FLYHRsrXTN@CE8XY?YsR zgCjEv=G=(UH&*41_k|E(de-D*upZm+*DE0Bp$+In^FEkp^*9wb{wGJcIE-)A{S!E) zhyw4%a#5EFlwl&cWmpzpVR!IFYoSsvx$n6!^)eoUo!==@JnZsdC~xdhCTaBNuItw6 zYVKdnWaP?GHnUk19E5A`ua-tFYttQ+4n7$y>GJz(2fPx}8+94Pw$xaVbs-bA{ARyD zFxUfn-n)09+62$xjaWjtq8pe*gTK;Kvh@=Vr1Y-YBnvXg8JJ*lUn^nR)60VTy{3-I z%ydOTmlqPpjECp+d(1DPWBJY4-d(B&qS}XzWVi^6ABB7}p{<>ZiygT4nJ8NDYkD}z zCv*FSJt#-b9<%^B``gQ$dZFshzeBr8n@kgyk#wgg?WPjSYvZpQk;Ln4Cb~l2P1Vzj z)pJAlb1;te6Yx|04ST84{P%ac<25u%r*wbNkTM0iYN3fND!!NVpNM2RR9 zkJDgB$}Y5Tg}T~ZaK@*dyKEGW0Dp8Yl1k=Je=fD~^N7aP79gIcT8WP03^QMSFCzrKB>A$dP`{+(>p%QvN(@rW zaB6WqfsijQcmoS_twy97wOrF#lYI`#EEazwsr;>Tf05$@xYUIVPKsgE~eThv4FuBInZQjsY94 ziD+b8#oJo_GWDT=Crcl_#eWw&tG#k@B(9Ep@OJHTlgu*#LGo}=127SHzbKbVY80|F zCMtF2g5KpF1drV>(=r@`Ylp1pI;~e#JoRdt1ia-pcAv~Z!dZYJDxCn!%*sWGCi-OL z4`7a%+{@d5kA2_Zb@W_l!@j$^ahkP_1&cR~wOKPdg;%{KliM4U@2F;bk*`cw$epsdYO;grbZ)ft={j36gfq*HFPZto( zHC#t@aMeXmr&MozU9xoTzQ+{!Zr?2T{fC^qs#rHV@DDjHs~U~gn}K_B@bX?fu2-7L zcUqK$U3%+#M%%cT&cj?4cM6Zw5=zD#faF(-P!GFNZW-ywL;T;*|Ic zmu)qGXyVCA0*f-y+D$_wF4z**;)vDF!0~LRWdHK;+6?!Q;jG`iFk(@ z8a;k`Dcxs|muIQQ9-H<860rQ9_gIpMCqjHw1fz)lrgi#Ha?J9_I^E$>lc-s&iksby z;`EHfv*pg^a*vBAQ`VaCYF8!WeW7Zox%vZsE9@!s^J6z=V&_${qVU@+4Yh0F+0Kpb zT0_8mSN%>pWa19tEHm-3KBn(ia*E;&+hqe4zA2FJLlRIEf+Su*ql6^>ea|g~s%L<2 z>870KLjSY@&2(d>J+!ZwLzbG#U!3L`c@2vLx|u1fh97vcRFP53)MF??yTip?4OYL0 z9v1IF)d7JF2sTM37*f9^bTdJnsQVg}80u~n*I{SquyXF<%38lGH3}yFsN0~jsEwe6QaLB;~}Vt2I-ZFc7iAosn}DRr0eqh-VR_dQjgly88li$ z63oE3Ov*FQSQ?%9-7PK`Rh8EJ-q>hc-n*lLTfujX#H18?%3A`sI1*ArB2J_qXow8&Z=`>fmI; zb9k-xBQ1A%Jbu5};BuK;XMElgpom~oOlMd|5FII4#eA4B?D4FmGA8r8EA;ES@_XM% zZY?kRuG3?RZYEQnXOZSW6x%uJLjC0nE94v%srvBQ|Mmjl-V@(xK6yq#Ndfu9rrh4; zyq0tFRNiU4gqv!jcXsz#Za&GFXFCh2)A8fhV^sl8i(Zo0Ymg!?5Kr}woCCw7*!;o? zzYX>O8M1L84)(3jCZ@4O|K`}Ju32;*R(v;O}3TE+R z_@%qR*yHwX1?J}2Hs`e!r~Yz?jR&&JoYT)F@2h4=xRvzZQf>gviEkP`R#u3mJ9o-w z+>g&3Dant{(Iw!?QXZaDX}lj^_gphH2Nj0{lREI6UQ~yyH%VZ(a_K;89ea(2)LfEoHC5oTAa+uhYzDOZKmvOe#7&OU0r00I$L{LXe zwo|ly=`8f6jx9JUAA}jBiaMQMK{^fBqWS`RL_*(k6*w%IyxF~yHwHKXk5piIUzvVX zdi1ljv6X=uTX>fYR-u-BGz)6{d)mh%UEnL6mp0j0(gk@zzwL!FG@O8|O+xNmB62C> zhgN!eE>VI|)+dJ|z}8s0#&lkX#{(nkSu(jW0W^%8Ah#R1QpR$-7Dl^4RmtAIpKM*? zJTT;Pez{-$&Saeyr>)xH!deAU>I)6$&7Qv>KSauNq&_(|4drE9_T#_uneD%68e9JTTg(V1vCPaO| zCMHP+CeX&0_E?ho)*Ye)Yj%TMdc#t#*c&eE8jY<$hvj*R;&)2FQZ_r5g=tsX-U+Z7 zqa_xqii5_nWJvgn{T|TqAl;s=2RJ{}IU3oAeE<5lTuw3IRj(9RS8hNZP|NftKF1lb zZUFDU_ZQzuztfNv#j__98pAmPK2-Z}S$=$r86`FzE-YFf2Yx`cb-7UxK|J1c9f0cv zk?%;#QgKbe2bYl-TcW;M&mC>s!Bk7abz9l8j;w30If)IV>H;kTLjrhjS8$x>iYU$) z345w`sp!%zqamIQ=plJNC}7I*?q1wizm#<{Uk{d4``vNwIi`1y&X`Oy-)KzV!4<)w ztG}8DiYe}@N+u}8MS%iyrd+JfB&q`gc_KtMU6#(;)pX@zOVem2z5FR)fTDq*_T&M6`%MG7vxL7b$=`ILZux zQ0xsJ7BTi?rR5-0s?EyHEL@5NCXNl~>A+Y$bv&1;)cK&oYVXRbq}@9jFVwzi?B8%A zGq2d_vYuUkFpw^>b8}*(=;vRHCbLeN{38#J@0@nLYtQx=c9lF1d)^n^GXM@)7#L5X zm(jv}6?A3=6|FeM=&hq$b|*ajx4p+!N+&numEyB4Z#gae!`HT8^=tJvHKWhDA_ChT zJSGd;sDETeh6dvtiTLa)e+0-zSmu_{XhOfDD7z{@Ey@698U>C^5W3&>=txpBLg2G% z8H0;tX$JAHV-zDYsKC7x_mvk**FhiT@LjIti*qr3TE)@q_=*A#^#RB|7w9ip1>Zhlp7P*6?PWGPf#C@RZ`u z2JNKQp5ambATfQRBZTu%+B=lma3~3yUN#|qP3L6F@N!b3S1`!3SSsuuZulukT#^Oy{?A~$ zcg`|YnBd9%pOH*){9;y)pYh*G^I>X43Z2Bk9{D=-d6WO&(7IU?|NrVD3j#dDdQSvJ z$IKcDnaeUh^VU=Ii-~>G(;iV{QGJAZW;2iraS^1?bSCseoeH|>jYlkN>td1I1GiA_ zdd!0epCsac-uFhze#%!EXnfhe z-p1N@g#s@7?zYq@wkvIB(SIIOQETHrN#OeGMM^+NVaZs`K(rGs z1Xy(7N(r**o}xIv zyIuI&RI$WHzX%6)1H9cz27Q;Xua{K_5pabRp&;{wrx6>-d?h~iA+B!3$k1TcMjZSz zQwuIK z4#|6s^1(!JvGOZj+RVI)0}_2t`fAD^z6)Fw5mlumX4C(mL$~*L1{^EnzXz=W?oOxP zhQDU`l>z_ode&ACSO`?~Q#jwErDQ_vt~;9* zx~%`L2i7!@6A;WlF?862`R>}!P8*?|7gI`nbD+Smn4`x(4Qo%y1sB)kcU?i!L7YEA0RxlDTXb*_Cc zw;nZ+yGh>%+DPtS_uoEq)6yJ!)6VPyYY-4Lxd{myT=%e0~bL7GIJ9J*R%`F|5vHyjqBFF^hNf_O> zikaoqv~MzBrAcz$57{H3EN;TAox#$tH5Ule4V9^f6IRbhncT9ZQtkK z`lEf^Ij+LgsktllwLvV4Q-+}6b zl~hBwHL?aSHCbbn?vs23v|9hjmuAd%#H@||p7Q!@a>R)u@7QX(?_?EX)G=W$T#xT3 z*0A2tLX$L-s!R{XaXBM#TcV(6ULdBC*yx(PVZq!y6`8|WDj!3Xv2ajDS7_Ir}#~n{0Rq(-&~7-wO2--zqtwNuIAYdLRy`47lPrXudQ@N zFFF;FvKEDsMLfGjlTpkavQ02{2=%#ru~+3P#ge?TDnLqykhkTmsI?v6s^qVm6ELnK zEEhcB(BF8MCmNmmFHaTBs0v658%6;<2unNF+tzy_UIo%`3}(hKBi*u=C))m1zZof{ zJCrhe4dJn_=NRP+Z|1)eU+^FbfFL`Tvg5&ASoZ6^XuW@p!(j7u5_Tm+)m{+~t&0*# z?*8P{wMXYBtgG^B|Ff-vQMnhj6JqvH}SzQk5Yn>hV-+uA5Z;X(%gTSEaL5g6Ivk@l9QjUL)1Y@(`YtkRFO_A*$joZ|u~I zoYbn-9@gJ|X6m#zEK%JInT_k_SV9_c&tHc#6 z(^qu|qY#_)TTh9Sg^N@syC2xA9c0sH@_NuFlmLRdJv(r@mw+`iRV#kT%-KpFfb{Vi z<1_-?oJq69XC6A5UGn1w#d7iK)~fg{C|%{Rc^34ln@NWq0f|>oljuNH7K%O{#})#J zOZ90LOzto*zRtc*nQpz)$wS6#LHf=(=t|(8OL-FagDucN$6( zH4Q#0V~%ArRVU26@s(1#sPJ4PJQ|ZrlNy1OZ4aYdA9ncj`o8J+SM*ayuz>X`t-LI6 zzg>Fuhl73#MxGS-`s;fxf1c&qlhCsxdR*_3KTLM=TlkyMUGfmh=wwhr*c^x&hr9&~ z{Q#q8dok9L*yBb<)U_{pA#n&*-|EkQ+(!v0x%l7V+Z1~skrA|j{Y6HqGkM2~x%=W% zx7=Hy2G8IR2dIRSuYGnrPIf}Aw`4yT%e@~AX*#xqQQ2#DIyZ%^M0cdpG^28kP|UK3 zizg|`GO3l_um>H8pgji){8u1N>cd}iE?0gPrw6BST#P^5duc^aIMA*SNXEXmoQ#)Xrq$yyw5CP`R^`^xu z>R(RF19!-=M)nr|OBFNpAG6N~|I8dRxo?5C;o^I%aH_V?Jh<&pFE9`Cb*;;J&TV$a zgEicng1+wt5GGjbx0QSE5vAj66FE0>tD4TN`o$eR>+k6N9!pNj1w!%UD@5H_8YJj{ z=XFs({kaLRyE?2F04FNVo%7-}5cdMP-cyA%hauQ5nT-d>eJM)Eu#uDA8q<+K|Cl5J z46GGc4XkHi%MPeMhP@<-Y_*57l5Q)xt8h^`U;EtEo)1vC3f}hqHeH2s*dnj$BHPQf z1UzAwjH4+O2fpdiGq0L1amt2`N+?(j*hDYN-fu{;F2+Kd7;v6)A{a;Q;c4lXW^CDz z*b~G(`T`sjhA{s-{i)YjPUP@(-)0JIxQ+j!h&$Ob0f$Fo)8gU3 zo&!B1u6^;JP3{suP!cswm>VM)=ac_WxD_8NCe%ki=n_(yp}EWWCOy-h zSpf%Vwt8vg!rb#Jn4-g=miQcv(l+mxb)miMdrew-pWYvz=C9y9C)oT<#YC_NtHeiT z2Vm?YW{)BJSoE(z&e-?kx9Vq^R`%b>iLSE_yPoKz=79hHQ zAL1aAh*5W0(GVFDPaSnD`I9F9;}aLx#rp5^i6R(^&dLaoa^CL!?*Vb#`>QDF9S-G2 zA_%klmWgI+=n=?s1mw|#Ma>W^;dq`xtGNV4I2OU|XV>bhA8 zP5m%T0y=%z&fpIttmDZFtUg`yBh#;R78^-m9w7Nq2s{Q}PU>XQBM4l3Q)%7K5qC@2 z!r9DDlFT1jVuwIC!uTPE>z!8vW!IKgVO<9#M+wU>WP)NBw`^^LXG|s!0%+%ONe~8= zw)g$!Q~~IP#N7Oor9>r8H>JCw>)ELsa|qci5x?fnMqlhh!sO(l8p6DmrvYDfrzR?D z#C~5LeOGM-=QZ{IMib#FOjm>ljAVk2nF%LOq-Wh!r(uLdK+Eh z<^nC8JlqxXF?A1buV#&J;2F94bvTtK$g|}+yq@>aD?N1a)ZoB)AzsPiCR+je_fHMC z5;aDY@WV}dxME*+14KP9_Pq&)28O|W@Pyso%U+gagiNtK+}t(447CMkm#hU>lyehS zC;(lXUc(;UBc-shhsAZy?%oykmXDjpMOaD)!jJnJLc_65XM{&TnbkpC<~JN>DL}>2 z#iiEqsCVNuw?uP0ub+uG^>Oe~8A@hh?epyw{pGRxlv>`s?RiA1QSFjmX#*y>@^H0A z3fSK@l*bZzP>q`k8pa$Zj?12Lxz7x2@DrIe#t9On{)BGISrpqQS>Y2tQ|U%X*T4@h z3a~GRN#oS-F*Ww(k=xY6?J@CKO)=#8<(=zoW3O6 zIY`u}TXxuWv;KCRA4aCL#!z@nNcG#jGH?9&yUySDC1Qs6tw_JToOI15U*CnuIt*W-jfplefNs`-MC#~$TYqB4Wso;I4`~_g)@m*qYm~4 zA2P|@9x1Km2R%DvC2pqQTT2t>EgEfBMJxi6x_9_oF$3sS@L&&Qeg zOn-TT_Fa=?iD$*)mG9BPkqIBbu`m0yFztpzNC{znUZ(1N^`-a`^O^d0 zxcCA_%AvW;e$w$?Y2RwG{wc3!A`_~>c7mcJa~Txfck-cDffoqP(BcKj*m#E2g_<4t z4WPv!2#vD zroTQPv07;;3a^-1;z9W=N55%CTFBL&dMspFt6onB=Q7MH=x8?Bezc#CEQ`olhe9zJ zO(8$e?b)&V8Q7RIvmtDH$>9B(X=hW@KGN8579EbYy!E&|w#hO^z^1-gCx*?XmNzbG zow(gf27XOap2mTH`=@_oIVISE<-J86!V0BM7#8o1+puGO(GE?<%9UcU%Bg)t&-1g1 zblYHT<^C#cc0(6R?_?a=I`GHfo#cS%)E_(vAJ2!ezSqszp8o<(eitQJ7<=W#eq>BJ z(cHNQ6ab5M0HbTlHAlr~VOXy}{ssw~LWu0ktp_8Fw6c1bf|h~6>@n@AeVM{m_e=+^ zdlYwg?o<6ys75^)eENX%#=(mU%g;_jAI^(VAvW2fs7*vzumGtiUfXQP9lbWhGoc1HHAoP2bD3A+V{3kD!hc40sPqCJ?Wz>e>;b*Cj zg;FSadtbOaVvJka3jbqGMBAFqYQL|>>OzZ7nzik<`@U@hM>%|KYJ0%Pl`8nppa)OJ zm-%F#vAuCg{&b_7&wBx_-`Ty?8_qqgShYF>NEpG&9|kw~uo<8UUaON5;*VcmOR}pa zExyq(J!2)m>(Gs6ggzu`DAiEE8F5yW)%n?kE=vdjTvPHHN4j*cwxpG z@d{4`>-H8lPSCJgs*cnwd$yw5&=PvrHT(0j_3l89M9MLpB)mxT@U@X!fcT45@put7 zT}?(M{SPkhCBAmKebU?*ipcHug!yndCj-k3cTKkKlvlBQ=aBC~)Fc&`H@0#Q4BbEJyP1Hcjq?;HVN;0ouez?MSZVa%dO9R^|4^XEIa`#jU%7s z)+RYaIb;4~9>gCeS{u*v2{4QZh~^X3BFZTUG+t=ZkCaV-y`L30;4M59$*-dp#cIgBI#N2kgavUi=_C z^18Y{n}(}qnkppy#4>R?1--_;oFjfs%X7u2zwDki7BPp){U}h02cO2V;-I`!aKkf8 zQ=Byt4DL?nPW*4fXb>>R*=r%pJs3THWWVKrRGZH%(`F>E&Nz?Oz!fv0Oc1nn#O#&E zi&UI<{jT6C*zX;&aK!g;^EkLHJmqaqpsVuOCyZrK?L#_It&hv~|WCT<7KB z$z(^ssv@~9ry`y()ydCiXM7#o@DN$2J-!*3;R!h2MsrMQKMQ>rGhP-T9U{ zi0kMbk;@46$4~a(tXty=X^^)C1AlLoQ>nOjM5^;q2okeBHJptN}gP0?V|w3n@RocTpG)->U~)Y6x@DFw3`I}wF3u3Y^#?88PW zdX^NnjNe1m&fLB6&qBvDe(1)4#opQ2?$vB_Mnrmle=gBS7yI;^Z}mt% zpbTp30Ckwf5VrOO?i_;7@elPd4v5#exF7HFw=&N;qOU|>gIK1f_XsgFwdRU~z|5QBcNgoG#@8DuKZ^3aZNk`~A|0S-+cvLCvCluqc2rAe1HxS4^CfB30n)b)!zN6-J zWYgO7WVSMwZ%}D(Gg^fl?JuNMd^=1G2gO?26c5$X5`edY&|io(rYUx^ng{>Ggj@{2 zl74+`*rbA$3VT&OcSBGMP4h`z1gZw-3ZP>TgY^Jeh?&CofrxYmp1U#N&8~LEo^$UZEdr ztQ08*JACHhlB-qf+$iYg)h4QGvIdu2ttO;(Yr1ot#)JSLfWcn|rrT!VI@OJvU#9Z7 z&n|Rc2}*CoRU}cD{d7zr+C^@VIE5a^TpOGjss%XX>3y*JG!;hbHsDEWEOeQ= ztoTUgL-N-TpB1w|-dgu*3Vsa9wDQ-=6lQYOMz>ECFTQnzvqf5E;fRF1q!6nYD`Q$4 zyFn#rk>8f4o3)jL5Wqjjk&&u(X&u2x)r{V@vnV!;jc^&`yf@j~6+KnaUQ zkZG>v*GjvNk=uakHLI~K!CQ(boZ|Yel5d){#J3w{e=hghqcU0ZtKtV6tnow0ssGhg z@?b+AuF;y*JE3SsVwgysJI`Yxk&NvYQI7v5EHo zz5o|AB`hg#$7VkDWsHx6@UC%mfEw4QTyufh2wbBV_y2u?lR&hhOG_1@-C6x1#|t~1 z^Y0b-Zb#q8UKv1_;BrWv<-z9Vsd5{g-5+6J>Y znI!A5mi@eP(%^3#=xu2jny%fV{N_pXU=%QEJeVb%k+RU@rD=kk4e+@1Rk}o2J-~<)_v;)p!#y|GeXVt^b^gxP=#*9F z7rby-t!u|w5%$IJr4p*_>v6Qe$U_p=lw=cjeyY0{PkWdm^r7J!4A)WdA^LWhm^9PK zfp;1uM=v#g7T1$$&(ZFwdSYy zEW9M{a`Al=kwP1tpD#w?@9~xBRjmttG2ZWK5WX@P7C;jkOm_arxVXjWy{>z|x?a`R zCQ6Y-iHlNHXFLR4HzJQ4F0tFDYfPxvVTsrtzXIw*%<(LM69OXe=4Yqp#xUdRkv5D zd&*aHlR@%io_;6bpZ~^9K(TQ=*by6Obd~>VNBaENG{3L%Jkh3WL}$?u1GEa;zwo~v zp2PU3i&ph`)qoFgNgs_^f^v0j-klhu1}xi6sz_`=RR3-|z7q7z0g=p)*!sX#Z&uYP ziu0oteE>+`fhCJGsFY+cpxa)lAxpX`U|>W!Xd0Q+tn{JZ@vFVSshC>GoA5T|zN;7q z6UU&UG^XG=E3xWj8i+8}t(UUYxz@c0FDrPfrU4QeK6wM3$)Yyzy>b_b)Jw|LExp9b z50mhf8?t!*c3%eR_9RAH_!E}H6F*+(&X{egzob{2V-PDR3++L+Pn-bQyHT;HsgHoG z>VUG2i?b5=W*Dat;EQP45<_@aDi=)1w|vps{Z$UQ%3cYP1EyY3%IkA|cr9@B z`Gg*n1^zasRzZM@8wGnK^r(gI9-5Aeqbuxw`Th<=GHyeE?3}3~O|CX_cQ)ps8()l2 z;yQNd4okCg-rYH-=oFwCx@$fA!aV>^-0JKHmFD?fDy!w>nSk%W$VhAxi@njL`taqsgbr#8MwG$@PER8)nu1zTr4;VFQ}*n@ zsaQWkAY_?oS^hE4>nx|q>7|3P_-t_I}#R%{;F`;p6;#3|Qf zvAUKmXLz1$F`p;jwxc#z)aOZ~W5}+qcPQ$@&$wIk#(kTO8MXUe`Q1D0)Lo_@CzN?HMs2tZJ6AA0Gf1h%|qW0Nuq5Q zrM;=|q$NX(aNaxPCv})(q;FZ7Utu>hk<9tt`#i&OCP$jlqe$nO5`a=3S=P)VIuTOr z<}OvM<5u44%`S6t6k_?Wf={h7!%QB68)l(Lk77xx&c%v0{$7YxTfHuF?Mh0^^L*L- zl-?dT@zd=l0eUui(W;E{evkZAyDL;_`fB-u(3@daJDeW^6P@bs*twEoeNtT0$cQmN z%36Un0cR_Rcql3%G%k5AaC5qI=6?oZ2IX$m=7X#b`8Gc7f?iEjX6Z!mKN?+O8v@Rw zF0I1fWv+g`F*0wbY5PlBkO*qma|DcjA4Oy}oQ2{r8bHG&1@v-o4f{+r zirV-Wl(=48(DZVb19PsLpvO|FqB_C9tiJ(bOD=~fE4(KgE7pD{tyqHNoP1CM4tXVg zhq#fZ3p(9r#-qe5@oF?yMKgbKQmRh0+kb8rSuRojqCia+OI}*- z=AFqNzMAiE1nszZ+Eb&B@&>BH#|@;eRk)g~z8|9t1|27 zWp4isH!!{y5;yL8$I`DNh@ zgh`m=gF7$kS_o9mk>@SCr9|cmp*}j!-5UFKpv7_^+Xdl=s1e`BmV}oeA#@23;nCe& z)F@Y+dONu`YqSUVVMl#>R=&+Qo+a^Q+#3K|XZzKWM_t14g?wmqvZy?5oV8i5SVkV{ z4wq!AFwrXYOj-t}IG`*RU z=P--lMM&%V$RjYd;^?S!n3{Dp!k2u$A+z}3C(z)ZR3EaM;BYosdYL+*|C^Tjs}P9} zS%mU*xr8<4Ax`DAb zH>M2U=NLaJ%M+T{E@NkOk8Y5~bx&_sEk0Y6q!R14pK)Sm+<$mUtJHif zif=F<7sP?7-l^-pOovC!t0d=4Tq(7gEQo9=*#{u!yII8Rz+ zQCKl90(-FdVXdn7J(D?4g2B?~koTjYO?98?kCW?aM?{jD zD=^}+;3o`a!O?l8B^;Ko!-K;dH>>Vudmw*j{IScklus4L`|k=O7p>luz`8&4&x_2g zgl)*zgbjJFz#DCrPAZP`pid&I**&Ok>IYd*6cN$zTsXx1)%_qp0zuIL&^t%#o&-Zr-KKWpC2npg#0>j-Qu6-061R&XW61Jlq6R#tiwh z$_aP?thSRh>y?3lKbnBPKBZGrcuf3V#My9XgIWwn7x{-7w89sIm1C2^xLJ~08}KjPFrzRd)XEt69OlZFXV?l+F4m`Yb2jtEN;O>5j@9Q= zmU9%E=!Q{$ep99&JYeQkP{Quyf0=DC>%&Z>HvF+-`@K`pWtBmMg+?>W#@E{^0teGP z*jHNk`j0c5CEoCmxu0kHge&FQ=az{~(M2bN`ERinOr6B9$M8`zmjU(thi`iL`mK*? zDsG?*dOPy@Oou{-_mqn=;X)mj%K7UNACx^j$$S=Y0a%{q&ZT}VFEj%ac&_Bk`l(TKC!7A#dJ292LJ9c^A;4MKX zB^~FH5j^tkBkf!X)PCM5R+lw&46d-{OJwo}UdMgIe@VOtKofr*G21PiXw5HV@|^Sf%G>jw>iRK0`ylRHIaxAt;7E0RBqb;p;juEU#q) zrHHsvY^Q(kNzrh0&ogLue3@#vt{mR1&4TAG zkt*61N2d)a8BzeNefeV`sIj(c+4Z~*L)3b4J{*s_>vau3B88d=O1(#o%SKG-Qimjv zDsI8k#IHMR{&^l$xpB4QTXUha7aycB9uKm#ys4scH=jwSC5m(P+oP^rJ+d_rasW96 zUmh)$h=e$OWl(7Dq>GspirbvV3nCKy=#LqAgsV6H!?xl*9#NX>i@c^(5v2U&#_O>B zu3XWRU~CsE5a(z82bCX_hEB%A_6CSY_67&mhdgV4P?t(8KZX;VZry(BW&BR~W`P+* zpf(OZU>l366H5l`Ws17U&k!9lTn&JKS%oiKLMMBz50%aYyg+ZNksL7lch$5Ze~3^; zF86C(Ot~X~hnULK9sZ(OjO9>642i-CS`fwiJg?P{O33fsWqVsA6_f{{9FR(nW=ZY< z!PGN$otyie_*vU{S<`kTRAdKkrmtF@^sc(vWfTwKiub>ee~(AfqkvH>hS(atwzVdEsZyeHU@=L5 zbm8+%X{CEs#=*oBE-;##%s%-t>P>7-7xnl0et%{S;^ip7kC)(ZbQ8rQN^V|}t0q_j z-OouzJ?V5IDes$Sm8vWqa}Hb)z1jr3b*Nu2?O65s8HX#0={o*-^5q+u?jJb`+$gJ) zBcVM4t{VSurWa~VxHWCAs`->_jPf-dhznB&OZgAkDA3%aENO=fhS_Gm9#Jne-5v4v zIc}vX1Q9}gixRd(WIy65H(k`bn%yvP!V`?x&s4)PMw3y4e6=v$VOyU$nwemHd0~2D z`M8FD=gnYd)aB43VQ}WTorI9An48si?f86R0-DRYSmDhZWr4qj*cFHM*-nC=b;@+{ zq5jyFXpT<3)Jn}o!AAVuIc3!lB3JaJP%-lyWn zFC^pts)kGKIXk13(%^O^$ETeUkSHdQjjX)k($LXlw zY%iY|)lUS-Db>nViw9g_%fRp!G*AtnMFswOFhueDsTZ|5pmb3UH~c4L)qJYdT)O9h z12=jO`nSzfEzfWG|J9V6YD!LqP1Tc1|9!Ek|G$eum-lX57pDOGKSfCHYE$~|`Cc!n z4J2A2q|g>~P|C#-bqm)gDQ^M-1$V!{yRVPd)bEQ3d$y-bt&M_6B>;_Frz#1J-rteFyHQ zdi@ z)yLvO9y0EGQ-@J^zIRTLf6gz;(&kMy9~(qDznLl@Y!D)RK6y=4r|#kQdo-Uog}*j{ zsB?tAXY11WN7#|N$BWKud~-DOSn(4n!By?AGjZ%BeJ|MS>`Z$pKem4V3Ga}`x1Sku{MJlLSJ$C^s1=h35eiOpT)lHQTn<(A$KZ+sJ74pYG>{jqFN=<2=Yv1J&pCb`E?!?Zyi8$yvEaYJh< zw1!(pb@~^Zt?kr z@Gq+-G*z%LfgDzz(b($6k9Yi{4e+V(wNxBNoSyo_QAob3Xv=4mb*-sen>#;?l*4mKNppi_ycpxE614`F-ls zp87&RuDGn9G+pjDmOK8UpKA+#729@}?u$4RFbx=>GH7(aJA^meEi|@z#j8MPlbKyYqm+jvjD76mslp;Q8 zCw_$7qbvP(DWJElx+t#Wv#BuR??v%ja`QrX1~U6k1y(k^p&S2t$B{^}T7Wy^A}@Of zW>$~<`luB?1ld3{VvYR^R;~mh&VdE2-vLimPF$G+GCCC0_8;xM#26sVkUEYceq$s+ zLxs}+iCmli8A7r`9lDO!s>vqWcc=%}R^dTp@|2J`8qE-!F6vEQ7bL@M*AMIbQps(9Eoj2$*0Trl% zQ>va|4YccguX8{2-N4CGId(}GI8YT`vxEZ#ZQ66j*Ig|~+nJdLQ#SJsX^GOtXh9#J zuTe(yfuGz&*s}Va2W1hAohHc{6G7DX4!w(3WG0H?Ay@(iO(Cz01KZ7077>RWnBY}p z=Fa4ndFA)`4Y{DSE=9i>CL?|I>|uJfDt6E#sit#kw!e<7m_|Wq6GeZw0%jW=h0rqm z^z*}w3hMI1D5yO}Wm|_XTAr&2+o}S67}F9TYPcC!z|}f@Or;M@`jMINwC(BQTZg_V z^KEsT%+(PqD+Ko}|NHS3Cb$=?z!se_+7pD0WDjh6T-Un4!4yHOI86JAN9O9c(Df!3 zu}Z5{Kk7Q|;;b5pPGZ?e5LVY9sck4XdgB13$z20F<4~%>;|G={bNu3AsRMsl;|5X; zb;bXe_X*cD;~Gg(pRVfPh@8`eP4+drw=*OT7Yw-h_kxU%nU`!a^)QXNmI*OvLG86m zO_&%tukJBM?FAkGEEv`GT5qr&t4P)%;A1%FT-()EUvICJ8Ps_3mNw@*1SdKh;7W4H z`)9>m6xlzP9Ul=-npa$;ugJ~vKunqg;5-b~(3?wL3NneyTbi>I~Tq3fQe_}pea<+0dZuopXO7&rEFAj3LRqk-6B0Q@%`Ts!O8*Bfy|vHa+b zzh`vtJ(0xjTYLkVhvQG4D8!xJ?+&a%sLv!Q(jZ2T&0UOpo$fE{L|PdUkK~7;229C1 zo2cv=7Hnu;Bq{&>gKqCYg*0zma*m8b=Gn`vO#Azakn;2v_YcFP?NWQLe*W4fIhs_l zMWnRqp;%bANpwKU-}C;yIME8vHF|5#`85D<*?1d$AiCQ#rS9qbWUZrXydYlg#C|sT z6U{mJZu-UHit4=&S621+?IFK8*bGl)?zwCwUFaf4XA<}z?;xo`joQ^n71r71+eNeMvw|?9;#S%KS{cBZM8};hI=MGdl*S#{h6+=V zp8m|+xh&^l?72z1aE831j{$ytKFk0C9D-L~H=zc~BJ_2S~ZGhH^X55!vFK zlXf~2;4DYkWe9-gcp(fYD?4AO`h<>uhsxt1BJ&(^sm)L$|#}!n!96T0&(iyMVUnO zyBhzDh8GSL6N+j)<>d&hM|@{$`SgkGM@@f43&m$%OS9Qdz0JJ2SLciu1m@of(EUtX zWr`s&GO0>$Y>?`=> z+iNpxax365z#6-wW&~A$^{ia-wB{QAiMG7MXjS9TQwFs6_MY?ZBOPdWvV&^xjE7te z&wb!#c=kyVeQ1qaXx+&*Kt6lLCI#??^xv6eJAGcI;~gUY7ILuc4a*<+@WK9q~Ll#e)hL1^h#-^E)HRlFhP08a!=iWQTf6D$z- zEf^L0FuNKTKr+B1DQe+iX-VR8pEE4s0-rfR+`>G_-np*>vCs`e$W^7;#Je? zeYx_Bq2aLY6ogT_3R!C{|eRemhkKOFXxTwGwJBIcYQTox z&Aqf&p%MjdDjsPcmFUpG*iqby>&W`K~JE z1E7g7Nusg#wb+QB)?-%{+Gg%WAKuFzV9&<{NC0;@0Prq>kNj{P?t`O_@!q z?3@iyn_}k}H4cw=C$zb(WgCA9z&&}2gwF%IS#|7Q6hn>U9DVK2TV2$tq0wONvE@-t z!uU%uB>$|be*|K={p0`!-Uxn}ZrX`2^W*PUxmycrUHsEz*zrt4WAX-6+xjb$s52PX zI9e-2%_vsVQHweayw$n`ZR|vV1Yb-HTqvWWanqcrbH6%E5PDJXq5TVs5Lfk-Q{Tj( z2s#8h21CSh_%G7Ru**H?%Y!6trBN&oXxXqRj81#VN$}$jj||C)@+6ArdLp*?e(86C zdc?yTOc0@MX`R;}FH137nbWsJgrD)8^7L!)+P!@AojgXg+{ER1+kY9;I6;va76CB?RY=F-Ery7!m*8;tR{<0?H)~`P%W*xRr5f{}0^EF8zN+ zpR;$KbwA8p%*K_aTlt5db{tKNa(#_9654VWns@)tg{;J3{A1efsEW}S%lI2SNP>wm!b{~vtG51>X?rm?B23l87CAD?r9Q|%LK zcTc?Zfn8QXyTVVHwt|EV?uDUcPmw=kqk8?Xe4WgYd@oCr#)P@Yu}GjhuB5t1L$c}x zrdSw<_x#AM(Z!*aP4fhDP-~WGU?%*doXW{~-8O_*R;oEAcMOG=(A%Jdj>at!jXQeU z@BSop2pjh965xIe$Sp{`unt}?tN3j;Izb0^X-=}Dwt2|{f*$>#h^L6=U0oJAClKBb z%*fZy`t{p*loLhAgbKP_PcO|CkF^Yj+M(BiR1w0AuGz_P%&?R2CnljJ!(T`;yP!~- z;2|n*3MA%?mQx~ObG+}J#s%w5u<(+x$Ed(j`NZG22+(gqSKZ1%BicmH&m+5D$Yrn^ zPuv6HfpP}AKT>k7L7|Tya;C&T(_TvE<7(BDYoN(q&wpeu)~tojh-XfbzDJTIr+5N$ zK!@Ci293eOEpIiALe66N%yUc3CV8Gs?2+AdG)nPP3EJrYBTEU<_a(+`D~A8dnc&s> zSK2=@ikUwzwwKBZJX@N)+*gYB9ZQ9qY&s z1#0)y-g(OeZI?q|O6x4s4w~>R9+_F^^BP_P(1E8- zTgd+3IVO3%C``%*o(N8qLtDQBpkX>+lS4lqH!oUx&O~xdSJidDZrzv&t*ln>ih28! zC%xJD0F-1XM{)ulJ?!b*;kI=mw?508>f*6&ez9kz)W=*<4gwaF-Dnf?tmJzM1N9~k zd`;Nnki+n_2(n277CcV0aIzm|Y^L)3I;G|vO*-ednxvwkQ1m!7oL1J-685zDBmxR$ zoQp)=YCF^6q(aWl?=g{FpTc%|pC%3R#_Nzfc$Gcv*G&Ly5riH@j5~9;@ESt@v*$8o zt3v+mx}}Fy!0r*dT?8G+=Ua{WvG;Srj3kjGtE06#U2zf1mT0A+asfeMr>Q04iR6xZ zMcyAvSr zvqrS@5@Z}7@h(g3 z6~k|^2yvnTGas5%S{6s?WLq{PeZC?Y)_fo53SIj&eRpw$AdsrdRz3h!$qC@ne)V){ z11z-#C$6Sat!qIh2e%v=xPITNzA2&?7eVfWfTGM5isqtW=*P_#QQvj@zEcl}w2*ZN z|51@kPh8~z`oJ|f1g~I_3{&U+bt~P2!{!z}?R^g&581PhJ34$12*0$*zj*PT__MkG z7T)+$i`^o{`90wBjupF|RZuUHdihoC=t2nDGJ1>1t1vK_Z2M+D2QZ{+H{jE1{n$+# zTAB2?l83OY!=N9T*t&282{JA5@syVUj$9fIlj=Oy^cDpX8C-}5htdHBxpuA$td8+4 zC?&JOE`G|f=z|-+BD690HGwWFwqGyy$L%ZkZAJfw)r~m0`M|7zBVMUkRO3!GjNt~b z0vd*IpiLFE$d2Nl>w9QtaTZSHZ2-)bQB7xg;NAG3A<73ZXt!?RR*aN}mv2K~3CTtL z3~kXIKL>VR2u#RxZC|c#6x4qcA@v^AjdXTC%^PCdV5_n2M z0Mnn*a)V)mm-$BIQ(+e~U8l0l@#Dyd%+nMaIQ!~#kU8$~-?mK|<5*Z9m%8g=!T2b{HlrbTQ)3xPGr69Qx%%MPWH zVY5w|0AW42RP^bKa60t3_0gYQ_N%jVpCaCX2QId~0PR0Bw;6tQ&|>tvm5K>i)O{Ec zHqE7QoJnd8(6Q8v|-o`QW!>QipewaS4EcS14_YHQXD| zLn(nfLW+vj$ z;&`Fd*Eb`|c7KE3mhw@37I-!4l;lZ6zwqysO|1dYTATazgim+abAHp;Vt+o+|9B;P z+ZD*xuO&#}gQwr}NFkk_vQnd9;Z7ILO8f%O*gX+AC-8hvx0m|{>XjUr^vY{y?-#@8 z1BoN6!Rumnn1 zhrJ4Kk*T<)&P*Y*Ykh{)%)3zYSO1N%xXYaXf1+5b`!*7c)ihmHmy4YUl0c^o6R%AY z9rpohVA!x+?~)E!@73J6>|$t`U5!@D+xmXsAjA-1IvOt4Rj9d)ALhh%j{7XmLCnP+ z#)ROuwYzbLo zVJf26fDRGa63ExuLVgGL0O+JRrBvnAuX&+5Q5Qc%qwV2qOF1Okp-RsuYAEFgSb_H^&q+_T8JJ8;2e)+n*??9#~@uh z7f~nmU=V{h&B?Tz1_Xt~&%4r}M6JWG&Z?zpb;?l4DEQt1%hjEI3Ls7PsJ=xTRcjH^ zSef;H7-Hp@wFJA0NNp!j-eu zCQ?wC<&O?UtVD=v5;Bnq(J6mq^FQjPiWqYi{UyZyA6Q~o6pQ=fsZw9hpSK_}tI+;A zmjbnFplhk}kb)`pYMb}`>(8FfZ6N{{<<%K-0}5uaxU0oFw9G}Y62O2H^BsY-Mf zqj%*>C)WfLI_YdfGR#1pN(PAKXbuwe5<3*WP&pxH!@ydK1cTacq=zH>t5N(^R zin8pbd<3$*z>yQB4T#iR{alRyj`9xB1%3f{8?Uo8{h%Q~p)VK=rL`vPs8JF6(BiRrc+ZMwgN zv8=(C73NRSFAm1j%VcSx$7!23c)t8|jUMK{EJ>aI#1F>y58!ZR0OgN*G*8f04NE6;6^W|GkKWLiPLeVQ?~><*T8G5auuL|ovYwM{EuHDor#M152*6}KcI>j z`Tqu07%$2#3^C)+y@^QwmaytFyR_7!@FWik&2Ee^jntf|wYefx>YXQGOc*a>jm@^RAFI9zp(}>p58JuOnQ-L1h!|o9{bKq@O=c08#e%%j5aUBs zz!Fm2O1-2OqCtDpM4x|jMzI<8&=r6})9cm$!Ig*wPqu$+=sq%Dp2yxkH1@z%ZN>Xd zL<_!Vznm0h&(sF}MK9e-7{F;x#edSVY_@@7?7&rQJ;T`Fd+0!;3FMWo#XOCIHhe=; z&g|PAO)?RleUC>Y4BfksCwFaNqx#8nI)ONtvg z55j7C;v|>M*Cv^^CZD6^$otkm6SeFY48m?`)qgj8UCchq7OaDgOWaZY7Xd_KBe?g~ z%DW7X5}}-g>?Zx}mYt4BJ!Pn~(CxfzZIRyv#aeY&hUS0He6A5o47g|uhns=p8jF>= zwq%XEq!!d+&Cz9(R2u zJp3wqVskRKx)^exePch9S%XsUSH~@|{+Q|ainw2YcUA-*p4dd({RYYQr3`85!^Atf zf$JGJ;e^0FG0fwH-j1SNy&$@DH$^_=!Nx!&vm!lbEwDX(A8npiLQIa7V^NP#Y3*=^ zA9=V=xgKd3-L)W-hEmE3#iR_8^Y>Pbe>MCuIxGF75n}_Dk`Ma4Z=<7+0F$CtZ*)|- zNGRe90_8pOs^rKFfbBhYs~O}aTjyAi4*9h_PM-~+f0 zJ6el2pQFba?B=WJECBfIMwa?MR5l;eO%WYhrGQ7L(yQ|CSb46J!;`6wY@qS9uh55` zyO~i6?tQfR)4cas@xKCcf6`w1b3h5JNjh#dM=fX?RgV7q%yRS-4J{^8GyhqL%LanUstW8a?gk$;X zqeD`V7;&pR8&+cnjxg|7;^}}VD0SQD79>bYnk275ThuuMnujP6X#x<%xG()P@`05W8IXP~17RAE)j z-DImr<9_Kjj;Ha>Lz6yYY_6-NdFGsYAGI*!#cWcVMD z=q_PnVeTK4OwnD>&@JfYMCnSsr`z8vF>vZw)hOC){#R8DhlyPD+#Ps65cTS^EOnxU zc;Cx3(Mm(v2pR8Pl~+uYRs=QH^$PMM$zAXlx!IPZ(8#QjXyds|9h#87zO@Ni?f!7-a zA9rvQJoHz8-ACUPg4M5n7FIIcq}QLu{;f=0*MV83!t0~wO@K~4)RO=OBLX9dD;flU zQ(u_#$&AB$%~`K1kdX6-Dm}c?7p!_WMi}9nrS5ObRqM+2zV-+!OwVJo1?!u2a*Yei z=u1#MPO(j(YSMYxxA$ykyTC9laBGWMkAX7oa{d>(>6EIA8uebPUV6RsevUteYlXq! zQEZPhC=2Q{Y!_6{ZiP^v1k|`q!zzQ_ zsmg4brfc!#BUgjm$QW4s?c(E8(1{&#S?bf@VuJS>5ClL5`XqF!ScPT#4!QnMB8 zo7ZEmGDMThvT^*dE2HoXfb&t6_5@-xPoQQbzh7`n0(d|sr!E~u*P4=*H{fUQR-!Gj z5vhGx*Wpee|E7Cf)7N#=x6N1w<)f$>DX4P2&AytcYP4hPO2u5K2L`5ug(HTc!JiNc z;IKiksy0O}+7|-iaJ5qF>2R`fAe0((@?gac)Pd|>t084g6U|k+0vWInY>gX$GR29Ey#(FPinV zi*t%-Ug2Qs&Jinp4?<@Q zGdytdqc^V9zfc^8K#O(~dteElkYH91)&!kNEcd^)GX!A}5#7RLqv*W7as4VcZb_vP z>p|`q{thc==V-;n8P*VZqa9=&|FSk=#P{XyoO=&BgPOh7^@l%?ma3vq3o7phjU}S- zi=<;GevLJI98}XI`{?v{X9hJFN_B(hKuzFgS=8yz51_6>waKP8SMehSZ0Ylr*^zuH zoZQQgAom(F_;=-S?7#kh!?#Owrd;+U^_`R2sU82+=VB(I@jUqxBu?nGjG4kB(qkLJuwPSyeHL3r(9m^L5^Xnu*>nQ?lGRp;R|O_c4_p#W{1ZWRul7 ztg}~j@lxQJCvOD8&}JsHjLSp|RWlKP$(3h!2CEJ*X`RN+Jj7v*!gmCkL(6Z<7=4>v zYWQVz+rH9sBQn*RYnyy-J~)l=77d3!JpHW3Ftgee&;_8!_;hW&rJZo~X{C8xJ6~5M zf#8Pp#Ejv!nGyJ#+%&mA+3MNj7EA5yX~-VptmSf%Brr3&Km)W=x*m}?uAK^(;H5Qx zc)A;-kl@HOkuW*y-5geKzVRil9G*^tRfBqO%2gF1TH&hx0Gw35cV?3@Z6lR0VW&1| zPkhe!?aDm(@n;3GDcyMn7V;*to62k8WU52wG|I*w-`+P@L27}hY|==(z-PL}FC1;* zKg#)`L^|W05`~K*M-!6htc)T{M=~$#GJ8fgRo*v>XZi~75S^VUm2I1syEx-cz4nhQ z^_0k+aL9ZbbfVBo3D&xL#&evs8guJJr{YTamyyI57v}w_<~M&TMZM-h z?1D+xG$oi7g9SH9uSV52NqjbaLENqqOa@vm6N6%K15rY?Z zU-j4vXjDSYMRPdN2ud~tCJVia-=MD0TkM3s&z{Y+&kL2Cx5<)psT^(z-i^rX6~`s+ zjC(j!wGp`8IFyP5OBa{~RilTDWtb6P zjkZhOgiqL*YAA)PsGa?-zPde)^4y~Y-m}QV?;{}8Pw+MP+9NJZ%I7;_wp@^xX$~m7 zmOKA-1h8BE!Ej>ekf-^^Rq=|J>+{%}j$(}-zba#8xNPC98M`TBLl^#h*KiuOF*~mG z0Ws#4+CR53BBSa<*^LFKXu>&RuVdq`=lWm{Rgo;X(L1!Dc@yncj!3yY@O(eUT0H?{ z{$tsZVmVAu-^=T>sd8I0H9>7L?}^tump&VA3><(}>81{)5GPRR2h2^RgsdLJ^Bq)< z=$cdsBX$(xqp$dFW3)U#P5LMV%A)9m36^!zCDTu>L81p}46@_y%3 zJ^rI(&SAAU@|l1Y;%cPwM*v)3c$g_6Z-2Y~7$OT)RoFJCb4lK(Ay~HkN^W+3qB7R&7=i>z|~qyk${*-ejngGQ%{?kqxl%Z5d{-d^UiupqsX_CuN#}0!Y48+SYc># z>Gy}Ds*k9s;NAMSN3w^Ynj@?3Ya>~-s}7=F<~!&r0jin@wgA2-kvX%`iHaNy%z;;E zF2N#F#fMvwk56i*=VsoTW|}G5Z*hl2U-C18(yGf>7HZ3>wJAkebV~TwYeh4Ox88&l zrK5*vleElPOkFV5t?4RyCoVSG|Nnp!`E>(10scddZ^-m+NeB3$Zf9?WkWuz70C zJ6Hob3Z0oeh+Sjx^ggN)mhxd6=Zh`W=Q0{`;vJML)DSx=bK(v2iE|o=85t#ixWn%cg zOWSIzdrNP8e7ffT^A@D%lj0t(aF;KAQ)AE+h(7vg6k$i}XGd$5c?PgVh2sMpQ~Ja; z#fd^Q7#{^MTq9~pVGQP0y!jOt@irc-1Jr9YmgSCrAt6sq+^De+235({k+d}|NDN-k6E+!-fOQ}d+jrh z<2ccInlJD4E++QF940zGLEf`ygJ;8dMD?y1#?>f^IX`P?>O|f^7zc4}Nuu=hl9C?$ z!j1UOsi&vBId?*st1}20q>mJa8qFXw-IptuA7LD@ucA?gj%=)&Uib0SG|S6N`|eAdy~`PSa41tB`19&^SGlp3YAQCL8MAx34>+9djLG zJ;f<%ufGoXrdI-$Kxysq?2a8>7rZ(9-C$-~5ZY#JOWpVrP+ESv^~-P@6&(RWqSJ=& zvZT~wHa=-|^X$;2oma3*%qGZ196K>o_8op+RX3XR=A3v&7k=zI{6u@u6sS`mhql(V zZGzQl#6VA|&+ZmdS6#j&B(~OHL778^%ZIiZ$~UGt#xH7+*@GLlpI3D1+l>o8t_gK=d?Z@r21Ir_0=4FShv4YBMTN}>}$O6?Lj8Uqyf z-h}$4RxOo#AbFMBV?WZkqwX*z7|sRw)3Uz2)8mC=XUf`n6s7fAkJXH9YH6RRYV}ZY zMVs9#c~+w7v}tbcK!}BAwj_wDvl8MWI*pz`KwjX0W$x>-Qi)pIhj2ok9Xz~c z-o8KM%lVeo;8p5uwYBK)i&&m(ffC^s4BhhmPxM`|zDJ9VEwGS)QbKWwPKh1Y50?|_ zlgOm4Ljar{A-uhCJ8?ZJTh;1KNNTsczGp7P6OC6-K0jh$tuT!~jURabUbOnw(5u=H z_?`o??9W2K<7Zxdn-8n7jhq-F)Mqq=*9HSQkvL=izBATF!56JFz%ODB-(E3-#5dcy zP>S)SV#ptR!abpJwsko_Xs%8(ELY`1NdBnb4|g6np#*a~(Uk-fn4*ZlRO|8$TG2HMNHF(PBjmd-;}F-6^`H=3QZ zg<%o<5oDmkqdKKRXv8f{0w}>0*@HC#8}!vxQE%mz)*QR<>O;O#7&Z)@fX*AzLjVea zOV1M!0$!bhq*q%+sF=>4-Ad*ACqZ{}4wlcWzC_lPU58odG&38hYi3>~_+?NK$lL~q zf%4EMh?F&C{c^A1_N)Xxfb%25lrP zO(?bI6IM!0nWTjQtr;+dv2*vS!rg;#hcLb?dmrDddhLx-jwZ`v8Fa{c;sBX^m>ca{gkO@*iI z2uR7?5B2uW{kn75!Ntg>_2DX4%#G*93`+bwVU4>Cr&_;AFXQYACUy+$>_+cv#U);R z2q^q0mf$(Q^{#dJhV1YCqZU0`NYU^gp|&Hh7|O!PUjokyM+6BQ2gsCV&Fr<<+ zWC&bl=)NbimPoO2luHQOp({oa+|-t~tDuJAurSmHC;j`9uM@lSb3(Y#I$u(j31A=i zVH+Rt_zUx%^>x1&2vN^UekvL4u@=3(-W zNFP-QY>k{|NRW3iV}sTX3J=S^P@lE;xm|i3IQZy}IU2Ky3V;&dWT{LyP(v)s&>P=D ztku2O)%hyHJpG;?fx@IIK=$QH)4ZxtV^iK5;{Ee*FL+Rv1`1@}me15DX%cLr^6SVS zXGi(JFWE@c%6#fEV$`?;^ACg_lWj6IT5i|WzyGs9|J-#n zcfJwT$nZW`=#IJ5k;MSKRt}Asgglmbhf7Pt$!3-u&pYXh^PFq%wpDW-QtF0IdfUlv z4GQA-Oi%Dhsl8WeM}4(4S`yTlR|$Yu#-KquO)!sQ&%}BO!03K)>=1}~8}f4=CY3-d z+p*b=36VE}Hm0_adb72{@PfB%V#Qx4<)SnBOqCa24-q{u%d5hGKGzaBCxD6Pz|G%q z4F6E>e%_AWdwbegAG4tXOHz(dTq@Yp(TI;av>jNvYipyKZmW^?Wkhefh-^l^95-!wW-QjMMHy$HjW}uG&zD9## z>R-u!Ls>lZCwwdVP0>6IS4bD&3| zal`6E(MJOklTYKrexxiCEAboa=p= z!gJ98E#ju02y+Rvo)`8oL#e!yKm$3|7gY4j5$&1|bV(UZxp()z12O&oUQMEe*tr zw!_O@zyDf^1y1JOZ13v_Uru}Fh&b6ep2nE{11@G9N3S89goUlI_*ZoP6ii}LFb6C# zIy>aNLN_2L)A{hu^ltSoB3u{{G)85CYzw7WC~MPTd<`qi7Sj0L_c5i`1ulx4DpwrY zbbmt4Waa#b@W-=$f7Lap>9$KCo^4HIo8F3R7Lh;ype;sZ)ngKB1$33&@T+B@d8 zftpLQ)17aaSY3t-eZ4LKZpw|YU2|EnD)ckU1HN{cDZ*v`cySCtBzx9B)n`#e^*xdg zjJ&?l`73)E8_Gs7Ki?80HgaVTY(F9^bjWFh66JYZL{Rs2I|soLt!5pc*#D}OXYCV8 zK#CII?EO`SyBGrot;+2(uc{Qh&0cKljL=={OUiE92ok%f@Y;7vMUIbE9I8$gBP%hS z>;Nx+Rp)g_Or*za!^j2gaC>UKg*9ggtloQx>Wt>Aphorfe%uE4T|uLX zludqs3-b*uLF`a%FJJhRL5`&bPQvSFnH=PmANW!l92!*wa6Ft|8E)MEZ ze2MDkzRjPF`Eyd139|-+w;qJPfezl)Up*VG__(JH+Oj2fL?)GUIsWlmykf8K755)# zK0`Yl8MsaJZG8|BZU~A7N!}nA9D;!_M_cRI4|OV99gM!qEKP?b*E0(>y$lWjk30ZxxIjX4Z2cDycV?=kXeMO=awbzyxd`QsV;d zS@bS(W(=Dqzm-3FhJIgChj9;>Uhrmm7dnT7bsY|1LO5>3(3?DGq%8nnpYk69j!f4z zrPIkM=p9rXhb=SB1+gDjlirKpV+mi{<$7sBG?*575JeE=OC3Z>G)o&Pk|dR$2nUny z>3d3Q8r}~n2`a;g5W3Kh_DGeZ5=_IvVBWX0v+`Q_`4T~_^e3=Ca!nTD17i(!%Tsst zjAFBICsW(24k`I*?Df{3D=jH_4O?Gc>pnKEm@xT*PbKxu<$?dIl}PK?S`3T5rrCp?d9v9l{SRerLIwdUp@+O#lFWEs_DQQq zbo$(gWdc-!RmqMhxZZ>0bcjt)eN%L@zfkMgJ#_iuxU6s7(emEq`cXrWjLz0=E9@)@ zO~&~nsf?C$e5iIR$I<^;@3TW}XzdD+k5GrK2E?$O(NlzLBV$wl!2ES-EI8GAiHu~_ zPaoL5##WzkI)D+qs$E7)z8o}6C*x@7D@IG#qLu{i@d&>f2jz1GJ^k`VsEe*z;!?oT zZ4L0b-E$|7y!LoZ@-F#ZZ+MXx?aQ*I6zB`my!&w9?^Z6>@xx_LJ`=UjtD%H)sM!CL zhLHfUE2dbs?^2uhAzf}PG6VMsD^RSBRCy5L&YM!&-#j03k zZ!ers;L#kozWHu5b`rF^nU;Z7=F_`3Dc5~R4piGV%oXVS|AtGN%BmbCbqAsdG+~ay z6&*(6p%My`&9TZlFYP($iv4|9tCU~q+NZ<#uPpQBlHWbsREGq-y?A^oXoA}Q8jSqH zo5dv1lO)arsZux_>%~EeY%^n`D(|1%T}(oCyL8K4|mW?BzV;DH!MwN~HWZJsx*K#)Oraf_h`4~| z8#q!)z|l$t*>N;v)wbv77=;&QjTLcV;I$8({p0KbntT|%+P&*c{Toqj2-w)VpA6<; zJa-r%;kl8oC-f4~k*g-j(#=8Ap`L~#%r#Ns8y*tJYh|z*n4z3HK$$y(*fW&#tuVB; zB^e|x9ocjK7CmYg-;Lm-_jret4M;C&0V*LzW(2LUF&c)~?oAWVXZt4z^U3lK&?N|$ z&ibpA0nUS5_rMe8D%eKb8(!ELS~{3R`e;X1J7e}Em0V%D(!JTjSNMb5m%Z{Yh?up( zoM$VAgl(x*0w-Z%A21y_*&z&k#@Sgny@i>WugY**I>$mG56-6+>o_sC45t6h ze zPl_Br4r}lTp?zk8$)3QnhvN{i1Ic(i#BZ(&UR#dP9Q4KU7pj%L*d9te7DP`vit6oPy1spk>g*hfO4}d^ zgUVsHs`nENISCLi+GZnjrbmAqvIDHC@*=)a{%;lJ? zt9bsnjN84M044j?EvjEc#*_(JIji+y>G9aADZw|95ykUHfC5QRd6Ah!`)}RZ52GmT zN7q@EIYqiJ(-e7FOkA{Eny~(3f_S27AyzW46r=5F7n%XuAqV|$?xIBc7^}--s7fLS%raI#o#j)FYq#eKNCcl}JME=a1`OY{nQ zrI6ub*yFq#bp&)|!k)B#uowdp-qq*xYy*BF*r;wlJo6cuz=(L@ML6fV_X4oVqU1<>qI(PleZn&VI>kkdetC2 zE8h!i=(7*g$TLs0{UoSbj=Pd?1Mu>TV|YgqzP$KOIN!XnGUH4X$D-Goss0UOGo^o+c{BYQ*FoD%X`BSHd-lhoLW-Ip5CJA+o5)o7OQYu@w zqz-?Ng(_fhWX}zp%XA00|NK8KfF1Qh=xWky7e=j>pNIgGnX4c*IFyyX4mdJFGY-0A zQa%`lKoWUI2^Y~r^2!c|Fj`XmY!}oOL}T{b&kCVjOpwI=1DiSIyt&b2NsEf}1v9K< zb4n!>)n0Y}{TMi-)^plQy{P%2EPn~x;?E6`G29GG%>U5a)KdT}HFy5y^N<=}Q=Lvj z*(J~S=@XtUEt>Pekn!XQp23*Ij>vmAvFU7gx-3@n5_N*U_W$Fw2JM4&kd04TKfR#_}IN%A0do%Os(to*A=#w8<8{&#uDPPXA;9h-MzXv3` zg?2j`Y~D1H7#QbGA?WW9{peFGg6y7@WF%i?FU$ED?Q}L72RrZr@IF3~3P0*@OGt!R z*|F2Yp=Xn&8}63N>M(C0-TiYr5PV!eD?lBaS_f`HlwZBRSm60Ahp8 zodYLV=ISZ6<=S^bjQVh?@u%@c4iCh&A6^x9JL5P_jvmz5wFA$pU@wx=Lo`ozcE1t4 zFFLL!P&XaB(k!hNpqf?*_|Q_eE+P!5)UY3E4jYCjW&~s~DJ833dEQ5~iDO`5Ol}q% zs)q(3A-{XxmsV$c1Hrq`4|O*3U%zZP9PDGfyg}~xc-gZXP?{^po!8G8%*kp`LZ&jC z1-Q+NVs8$$W=eL(oLIXx=FEicg7Qggg3?;%Rs@)N(4fm;ULIY;OOy#MV9|^^7#U5f za_Np9QE>;g zka?ngvnpl-nN{Dj$>lGUgjWl;#Oq zxr-JImPCCD^M+UOf2mEk7V_wkH_p|3i$uB^x3q_L0h@{wZ% zKeZ2g-J4*q?I8@6HXt#4Ug$ve;Ms}(c72y+E-(!=F4ZpsmLD)-N$cPr;F7bgSOJLB zwoZp|CRMp=&bX=kS@pA!62R#zTE#&B>aV)@?nEZe-1hBV3;lBUca9%jYq9{O#fK%h zWG{F>@$Y>YhfU(Bh<$nq;SaH*X`5k&UR`<=RVF06BC~qt!;I%oJcVr8YMjcK_PD`s z%fyLEQUzT7=OI{^+XC<};mC&L4oWte#EqMkM_0=V^{g z&9X9&6k!&?`ksr#tvkA7PEL{cBF@PR&c0mQQ;Vy?1E;=x9Ik_hTZ7-c`cYm}6)}wZ zJ)W_uLTbf0jj;3ygu7fCgoqvM$l_Fw1*o(9IY!DzbzZ%x`b>~8tQh&o`!ZmYBFFfa z4@~jvpP)FxY)1m2;t9p2`h58LiM$_ahL`z471EA2iIoo$hU7H)6qr&cP!MJ{mC~es z<(K>Pib?i!f!f%`14qY;?#F9yeWVdRf;Z2Wjf!QR9ppXon0V2&9n#6Kox3TIdpq+Q z`P>{P_uPwM8EAq%Jx0}ndM5P(#lq8rEvkUR(}&BgVpPG)WC0K&+xIwbIx88k2YIAg z8dEfbtE%Q1zg4=i*3x5#ZM>9l;awbcB7FJeld<&YN3(I1P0k972Os7wXD6C%?KK>z zqMwkrk{ug^A`IrUW=hIH@{kHv!CTpM|Cl#f%F`h4_p>Q;%nBjQxR-LgQX(DtnRQg3 z86dX6sG!kB5xO1FdN!Pe&djZU+Ghi?K^CE4fGK^l4)p__C@b@dtGe@7zP%dYGD28>DLTjN}{HA$q^( zEcylx~1(4AWAVhhai!K*SnB{ zb&Ru&3+<|f4B>Cxb}kT1e|KJotVE#5Fcrq{tiaR+k4n35sR==pT2n?#SloFIA57c^ z>oXYeDMA+8m)&#~JvLQ4s!!bz&O2mAc+H<>_G(JYL|TF*uoWyTdNQmpg$$(Dj1l-G zj@inl;n6#=lmb=ptf*;pM!mJ~9LJ^A0nMc@lL8~Ih8JOU1LL_^v*h4&A0BLrt{ex8 zO=nz_5E5fpSsrvav_$!Y#n0RJOa`HL{6rktL9eR@d zJc{2n#0b%U?m(jqrPd;h9Un_7lPr5KLhM7z;sNYYp`TrLQ><>yS$s!tM7jCa?=im! zJSk0ZmQ{k-b}(qv5@wpUowKGNlbR)9a9f3n4a?DnpHQ{8uuI)deoPv=0yl^y>d~G> z(UDrkRMFhYOpnCR&k^2aG$EQ?`XSMwW79M1;@(L!njDvn;c^CZ#M{qE1oVy^*jwQayMuQD+9`$HN zm^e&5B1Fo7KfRn}nR>50=1bYObq0}qFEDg+I$sV%Y)Ph6enjKE5vW+Q*ccG>(4 zASDT_Yc`l_J(>b6r`pF`RU499(Py#Mah`7$xS9bOlQILg@+%0uufH+JIkCz3PpY&X z)$3 z`%FJhnGrJ_UwKYl?#YfiWVk3bT-T6(_06l&rHb2TKCb^d0m88NyR;qj&)8?avU`8= zdlfnjyaXPi>hlR@e5Gztd*KiGOKqNO*$&$bzG$Z00}XWwFM$ZE5SL42|A<=2y?@OB zycR-BV}i9=n9t#od~}K2HM)Kx+oqK}B!!ugxHp87Y%QuJ)1{2#YQa&i#ZNXgw7)0g z>p|hN_`!4^bK~IABV4h+zx&$SQvU$~J~nus#~TJcD7$EMej|g^cDx&2h-y_Ba^8zhreRX%@{we!j!sl=I9xHR61ivk=ba)mBvvXHT|qrrq{)I> z9IYphS7gQ%xhOQDas1GH=eVgQLLV$sw!>4ybLdRp7l2{`9vRqXEVtO%(i$c z6WY68aPT{G+GxjD5E1e;_yb?QgP2z1HjvckSATfPTz}uYT3i!v+fYL5Lb_zoq z)W(lMAPE034H3;wL6%#(fNjP@g06EyjRfbuPgc}RSv(u9hyoM22fX7Qs)6yS;13y= z3nIahiEe0;V>5sVMZ5E^KKEtdLL*B55jFX;Ou<{ll_Yl*AGWUwn}>MJneJG$Yw8C0fvJ3!>h8mb0!oSJ+sH8yB73cW`)0S4()PWi zuYR5C>!)9ke*bQSloLQ+OqO_6X&5Fb7DAine%MVX9=G7p9sG0I3hU7CQZi7j(GS7w zS?aqaFShl5{}8Ifl7n#mVG}-@A-3MawafIhgCYJI={z;j>o0Mo8tgrY=!+`E6Qirg z2KwWJpn~zfM^kREcQv0TXr&0R)EvFox^U=|6Z*FjOGxy)2sAt$(P`qC?;z9}I*>vQ&vT*->Bm=`0dUzq|7y{?J z8(cj$(iA3L`Ib);fI*2FJ-x(k@gXU~F@<3Oyg-E9kM0O+$%kd7JbC?MZF-F)e;!K} zA_R=WeA$mJjd8VN$6gbVJ$d zuXgT=@1quw1&>ey`h*81{o=)gD#(%O<;xI;aUN8P@@c#BDh0B$;?nXm$TO<9++7Xu zUFs2M2>z`e`O^&WR|4blLSMfqjHMq4Px z51;kDAaw5f92jo#eIrgdzg&j~S82knoy1-ra3P#I#agZZeey6suRGe+ee4i$|7G>J77l+_t91c+e6h5-5E%y|}@wrE|DM4k~`_Si_4$aIr`_`3h>mU5dA z_k#4B-`~i7jG8!o1Kpp}d7bcWYB0FzSLr;c^6bO+F8S6O*_{*h&aw6cSAg{~&4Yfi z5&mfHf_VyzaFu^}j)@dO_4>Lp%b^V}{!Il_a~?||cFTJ-^oHer>TtI z1CtB;l|&gr1d*=<6_Ro%_2LBF|vqHg+087 zBmR`0c~s+-KQPfC$cA7R);(j&j(a zD*9O#g9BdB_I6Rnm_%ae-D=2J2h23Pzy0@X7u0#9uA2zNmiL=+T^927#Vu)- z0BOhRD7A6-)}{j5^o&cw^pL5eVF$~4H+9U*eOlB$2uxOOKw5{CHdt9zzOeyMCGWzl z`e`S;u_uXK=Q`+2ClK@eMLiPQDD+IyK{s;S%OEwtcKmxbxNG?%ncm4DFZ2}LvlOXA z81;k77}<|iaTg0xp29UMUKq%pIoUpg z_**|u;A6s2d8jG1Kd<^wk_vC&VHIpt5}l3l&if(bgJ35=288^Ts0$=Ti4~aF!>jm7 zD?RUpnHmoJn@3x5%tkiEJvhUIMT)e1u+lq@ZZbS#ae=&vT>ZG)?xj5c%5_t^^2*dG zFFG`>1=iW<<$^`(4eH!^^RwC@SvE=F#kwgntm*DTLL+aI+tyTCaiT@{oMsBtVDd-H z>y;dY?<@vs7f^~cr3*WbMLy=1r7*CJi^os3cY*&nu#^+;|B?gEfR#J*b8P&UX#RAI ztRjAu-Y$+hF4rN&WjggoAbbOk!k@)OwsP zhD-%sgH@q`*WOh>n7r%9@Y_4OVK-$UnmVgmL4p5dfpUf+DI(}E`MgZ(tw;JKod=zM z^4OgTu~Xu(g4}yT7bevpBhPj^D$Hs5{`<7zG3U3K!y4I-y!`89xtT{jARJy&Udi>f|6ZnH%S)7dWCvyPB4^t(d6Ka&M}?9( z@!S~abp(-@zh&HiUxt_8Fe2P+eNM=S&_LhUsW@iAOp({1PNR9r^Nm7}2D3#lTv@%` zjZ^gYSrzHt*ySd7foSs2vN35AuR^Fedc5Bmx+GCCikS{iF4ljhgIDg~6V`K;N-`0^ zS6OTP+0Xtt=$A+(OV)dnRf_7oo+vQ*3puXieUrjcBA#3K7-Dadpy!O$89r4~7N=f* zVS9WwH|ae|$M$UY(rb5@Jg73HEG{KlArJ%mr^o;X@Z0T;QiNZ*$K5?`!Rp~7h=RpM zOx@YguZ9seJ?n+$RqcEuwE1PZ^J0ng`qi1xlF%Z|S7st>nVA<_*SC3CLP6}0+la#f z3m*?iYt)T_B@UY&w$xsi?ZviEMM$v4;fNFrLJM!aw6=pP!yL!R92cBHxzSC@XcOf9 z=3i!|VSM7&V_SNK1(Dv#A))=FTIm;Ax4$kj3JdT$I{MHX255Y2STk5{NrO z9-jubWr){9?D0jJB_R&i#0%rr_qS^ao2umAT7m|8Ry&Q<68}C8A&VZLOsV}S>k{~+ z^1ZA9xp^2hxN9z9!Om0Llfv9wjv+ePRtbE}J2eJTxFNHpUYT>8oWIT4H0!9obe}rE zlOptCz@T&Kz@FMj)vlcQm5+5j$$DW>ip40SflT#Th%IC_&1F<&HuGxDGZZ~Iu%gJ7 zrS(Dc&&RLrA^4_!3r`-j+N|Cp>!h#?B%+D2`cgEzien9xN$?DonCnk-W<)|;szOry z%H}#FxelBdde^a~rHgi2B}xt-Gvp=;5ZMsl=?nC|8&hb)CO`tz4vy4Enm#7H1+2;q zYX?))NrF*Xvj$hejaLm7Mv|`(x(LH;4`c!=8?7E`^;-a?X%xW3GUq)D0Y}40{&}jR zg!7#LeX2VCeX2D7d%0sOa_6@&aEA$qa>Z*p>IpjI*8k8=(<-myFZx83=Blus@%#^| zt;RIfM+_auy7146kidpluN5&*+5(F?ZU0}4a&M6NM=_~0B(t3B2iFE>Q6U#4>J`1p zT1UuKw26x=r>XLx&!fEp-K^PHGsW@;0~htO@Pco9q~&$=?k^uoXgAv^MXk}N(;s7y za>MAm%fE`j*BG1N&19wkkUjmn!V@`;W3KWQU^V?!11;A(PQI)E9sheyY{ua}X@fg~ zZhe=H1*!8+Sf$nYgscSDVe@K){uoApSeZZ{t<o}qrS(;wQ>(fD zrY04FHpXZlww+U4&KY31a`p!R&S1f2sDJKp2JeW$5E~B=$udcHaFMZn=G*5!7WNw) zkNQqH(}*@k$1zko_tAn0^)viB%S2-BJ+|94B_)&d$Y6VC%+pd?7UOGLNsoZgv%vd5 zWm?`dv4mBas?luUy9LcAO01$LHM=Q(-<9XS$4@cgV#jLAjvRAjz5L>Y`r2f9q@6Np z`uu$*Bd5ZE|KQoV@9_MpSCf-1t}fZjsUy=SV>gEbK;<$&i18G)dPJCyip$Ly;@ffY zJ>Ix17*556s)BMgscXtp4^R8mtT=;dqixQ!t9We}899yFxX<9c+MboVmfnSrBcn88 za{p-`T7VP=_S?+7%#-5PM?a@=?N1l1VpWBvBsjkPLlUhTVdAP>iL|Z5FeI2;dii-~ zy+poH@GTdd$to*yiava%5jhIlJ!HRd#{d``8W|Ecslj;-z?(MdquXILFUi1JGz|F( z4*A=@H=}IcIWwS|<_M47*|Jh{ANr_4WY-1wbls8FS02uGiuc@B^dN@GxG)P}f___N zISk`(oMTB;ABKp2fIE5aTOkO zWi4hJKZvOBoTkhr*B^q=hsBG^{;{Gw&)QiZELt`lm3;B!6^}`C(A$S5p;Oad%iOJC zMfjK_R`?@x)&f{SR_3H-)Hcq*n1rYr&t~H2)!Df*WJ{pkMDN)&1ite4@Z zYDosq(Fr@=s^aL3fCmP)&G_4ZPOx0hi$xMs)FNkBT*jv&K&hRk7xvV*pNM-}a#4a% z9Itv8pG9!_p~9;Yh{e@4g~6$B6$F1fQTRuj94m%%x**rv?(9m2hrFo6KL=ZaVevsj zf(69(V`M*_%BVfi%09!`QJBGq0pTPN>Koki*{)@!bc~}FVa$+6-X<8H~N2ze^*r>=v zK1JJ?-!3kMhoWEfpI*6ma9%m-$TeZA3UfWQXFRVa8SI-z%UvO*?{d8>>FX65cL}OO8P-RUDsC z$YCl1N8lTjv#qv?_PDmi|9ytyB@KqeM76Ave16dzL!$GHFh-u!{QdQNcsSd>W=;9I z+j_5>RO_p8)-<{Bz{dB$^vMI>G096FCQRJsOhDtbL$ zzlgvX#t87m*pkWH*ne z9DhO_ji!drkv1JAx0>)5wl@I+xf)lb^CNBw6-|lXGDq^3zWi)vIzBne5TANkQ%+Qm z2_?!EmB>M$J^pO@F9gR~Qq-s{*%n38Z7}$54Q&lLyQ#7qM$4lFSqbUU!KeZK(0O3J zjhrR32@^1GMeh}F_77sKB+)UVm_?F%=4;X0NJH^~51HN8ue5)lX15)2-+ZBCpYa1M zzurw6JLD;S_SyKrsijQ*1Up{;k&K}ReSfu!ZS6eE^8C3yY}9UIGiIza1hkypww`%B&kLoop3> zU?`~K8r9NRmA8C-rM#i+&RKtXd`Wk8;=^fj|MK9{?(*?*z4sz>fzBY=rxN8&y#c`p z3AFQS3Fy|cuzvg@Sjer?foN8Mfw`z{I0FrC&`(cj^ zgA`f;cCA*Jfv;H(;-1K&u-8@q60cVsBa_&2Bt;rAu`nloPj7ot;b9E3QyB~IH=cU{9`(!z5lJWdy;r)N)CIYAmG=*`4JkcD0RN2q%r!fT5wNlX{ z$%X?sZpIJ%2KE8zauf-j1bG-#(`oc-Vfv1tlF}hvtXKlg=#9L4@@kIW620vP2`UU= z09?72jsHLd4Zz1MKbc$at-Aff_lr!QA^gLP#RD1Cdwm`-m}c|9ozX1Q{C>#qb-WPC zvB5SP#VjgN?-SFP>=Iw@sr-I9FNHEnoAsuryJQxm-K zFe(F|XL?os-DrP&Ak-6f)5wus%4KdSGsnWv&!Z@AB>;m!v^_?q0B&7k;Qq20ZQMPL zj!%))-2cw7hfx~HlYJ!kKS~3GT-9IxRT_A8FNE;`(iM^6Ba-u~9H=d!kB$vv6S5mAi1ssb3t2u7hi z)1XdltkVc;{vMDpJ5!#NtDb>nIG=-ozN%z-2XBJz<2v=oPKIcCWkQu249*bJLJ&+l z`^(j|5#}%P*?DH`LjOVD(`uQJS?*{ZZ6WtqY*-=^_8f|F49~t_xvSH$WCtiZ;n89k z^s$llvY-2pA!bP%kT@Tv)o` z!ti_OF_MXKEMTuA=C`cZLgT9CQ40TD*=Y*jR2aNGkUV~6 z3=Tk|3PTS+Cr#6lr`O{}r~nk*x&mQ-v_FIV|4`^V7*`qEmk7UxpBw7IXNrU7v+60z z1R`S*4#$s8g`%2z{+yggV!(3tv(9$Q8_2A81ZqA>IG7o73pUv!qMwn{1Bysi{Fg3% zJOpq4Lxzr(=$O%+K$hw|Mm{FZGSN*>GJbqDnfXnO;uwQRY}tkQDN(mN`3%j2o*Sbc zqAa(lN2UBN)rne4_c65B6Zsq1?4(43*hbKU94TKOK8r7lkUmmQg(gUC4yhOrc(as* zxICzysLY8IhW;!u7rf4m+1_|Q47z<7&SV#8kYR)+K`uHPF;uP-jk?GL^?b^M*i%ri z!yeaq#2SK!wP=GPqXye$xP9MOQWN2fQ9ysiVw|p(9+Yh3c|eY%fgaxV7_I2T)P2lm ztP4^aiPxIRU~o@n~JGu`z|c&$K2`1c@f>82vj|2kdTG;`MOYNLiO8?}b*yo4g>}{|PgYIA z!cv|Rmxqt|DR&g_Yuo*VwGgX{{NOAh)@9zB{77O8G3Sh~ptmbQNd{7oQE?Ac48m`mkYvo|6Oc%H zSvpJ9tl{Wd8F|#hr>DvE~y7!EVs_E86 z5flVLBqs@yGm->FXcWmHISMoxB#M$GwFru2Ns?)DXh3ofjUZW)Gc- z&ZQkdzrgmuv5fJYV#`3!gWkrH_=m$|9lEA7v@sy=}O zncrC`*29HgVB|(#ZNFHrpj9QiW#zM$-$a$^O~*T-|(KdC>g3$Bk}3KoVcECGM5!vGB8N{ z=>ExeC{@E7lo7}aJO|0{=XF=-b|t;j2B)x+8#y$1k{H82A2_Ta?Jci!&A6R?m-=np zmWu_SMCL2mbk~LJ4l-2)@{%0!AR)6TuiWOe;D!Rdkf=xkDYdt zQhb5LXE&?=;pxLu=&@xIO@7slS)!bS$eI<{XHsTPCQbjdp`s@{kmb4>hiqW74kXA< z^r0OcF96F5CG~aAzRi<26&_9Kd$;3w6-ZS zu0sB_oD52xuYW91>x=dtQc-hs#B4q~NpPrp?iF@DWGnqBu0m|lcvaZewSJSycO=7i z|Jl&fYp}%PY1PN#<^2bCFNg5qek3BoT|X$yK2mo>hNEgL2c2Oh!Gli$OJEhHczswu zwCL$H-lDlk_ISDfso@>tQCe5oT$i!}Ifh0{(O)L_5(RR=a?CbK5`7_!Z*-_@?C0$n zRWwOK#$14tPU84id|k_mZ_3;J=D#_2my@La7JiMml<)&-4L`ONEadh6N@K_aR;II5deEH0rFt&z#<8%$CaiVeVX416M~Y{?#G`Nj=f^xp1tX>s%hpL@H$z7=-*?eSJS%+X4iVFK&pTqodv zRt!z3E!X%;y?(USS>89ZQ2cFTdth=gQ|h2u)tgb{W3s9nRblt3mfLM|%NYegeO8yt zgV}xMD!*`J^4y99QzkI^xeHn3NJIbByWHKwqZ_thA|4={I75DmKoqP8jOhqNXyw#fuR1dJf)%0{U@Mrqqw1>ov!?()$^94e68kQlsu5uXM1Z$y zCJ~P?-R-B{=>0NS-X_#r>!^FPZ2TPQJPt6vI~A@T9h53MTGRTBIg-vFK|wHUai=|t zc3nqyB;dL5#d#U=^tI^_b~3J{jT`D0%`JD$>Zy1fH9)wS7~Dhmuw>)J_0<_NpYKuR z>LGr8dNdLeFVcGVN3@>zgJJw%-jCkYt}p$*Wzz70_g%YCHj3V@_;D@@+!unJSU2ns zgSPGRZhJm#2)Lb1yosphb6gvV^-j>R%zJX_7QY2#gDM+G~C*{w`9{$_l@%;aw1$XfmBHi_Sh3yj%-}h-ug+25!AmQy* z9H|&L?zeyQ+gc6pNO0r&#IF2{62~`6Ku>u?_1^|)$tMQN8`A#_SV?Ia50S8qM-ujd z1NVJcbznE693zfuKEAx7Gm=5Dan#9viUe{{*vY@ zHpB%{cj+6Sr8XC7{ZI6`t=y3qt?*ukeFwiVVj1Smj@mG_wl@l(8tDmJQ)`4#QgekM zh;aI`x#~BiA45nxSmOv|D+f<*lq0b9rLfv@kZHB8XPbzZyBq<+vUVj;h73K-calM3 z8+H!~MFxyHrkXX1e=TFv$>#{uEI^{yU3|{Q4H%hy6$dDfd8xr$Hh#npT{eMXNEv=# zt}%N~SyXq^oDVz50t^vAPPB|dGz43}`WFca)u0h|L^rH~W7$;h_$)dIcmvTFK-4kT z!q&s5l}q?@727Ys9RHe8e)CP7y33iW`?Qd`Mb&%)nSx%JJ;>2=C$+0Bzx6MQn^6dh z?5jVJ4pam$s!Smeu?3WWcmbiJjV@CdS^G*vi-E1+Z`1iU12x^(iw8}IFBR_}aZDk7 z%KNN7%uhf*Ihu{AO{z63sFRCwG{;E1%acBb&n_fmpk-z)Te)#BP1aE-Kk6r6Hhhyo zF9ogPRodNh1FKy|48q&SS@-D(SNZA^TUdtJo0N6ew>T@9eV;v z#PQmA^(o-9*(b-Zze!k4=kB$-kMqWz@d@bPB()CiQ@A7%<0m>s;@`8E*nt+Y%|Okm zw<9FBpMJeuL0erUfJh(kNo}qbj^r#$GyEF--*U-H2asSGBsU}#O?1oYVpVky4)Yds zyMgWoWpa;w;yEa~p}VR@`7JZRhd?|VhQd=;EA*n@E=eQi9AxuxMas;;Lds!M zCB$Dack+KkOKdUq{Mz@xswy@d`E_FXq{Yx@f7xl$QIJ%PD@+H1oXEj(2of-R(@gc; z)#=B}!r)TFh8rwIBJv;A+9tSH6-_>MQ|tsrhK1j1`ePh_*iFyCH=vb`wP?cLJdPN| zOK*?WG=KYyvo|?8`pR|jidhCXkaucGY5Iz$8*;@=8+524V%H+qb-CEO34uH-+qqor zVT;ZMlVIZ{^#m2kb8gqpryHrRkNI~*&sYDlpJWsQVx^O#&+AG9t9OUOt`86mZTn_+f5nl? z0%%&eyR-Ci9}W{QYKseIaU~37X0c-3IiStroZhI)_joK+_k`tgn{~~Il(Lt(7kS7u zz3CX=PyL6l>kWQ*5G)#~S|M}G@Igt#KWwU7@&FA6)(jk_y-GZZ-kppy2;8WP{Ds`F zosD`ac~mS3N%s%G3b$9EQ8--=>ED`h=BbX(kc*l3RT7jScc?pC}V zNOGBh2yxOr4Jj!#E_*TQDc&IvHH)u@rVrkg6%#IY1-phUK}Q!oe!y z>e1ppR`bW}>0atSiatmF*aHQ~x`&W5&6r}+T39cJ7+pW5_bVxYO~9~T_BcZPK<>eZ z&*j<#Lx}Z%?emK0fjq8fNjF81G@cj zAQY-Pztr4t_n~~$31kq!KY^4du&k;lF4;Q#F|YNYkLyRY4cFh_I-aw@>3W}FM>W*0 ztjF@=vV^d;`kP3?`hyz^n5y2_^5r|(m@lKqB) z&Hd>z84x3E!k;X0`!D#m|HY*OUTdoeh$Aji1<|+pJ_($=e+vHr2WtgX1G&=d8^FKd z#QP=udYq|iRYp^|jcOwBuW(ko8K-zxv87!;u+QYiF=7i#gu&~|yU{ywV2^a`UbMiw zl~AtVwX^5#djn)4h>c$X5gP;Pc5wCm@>jA9>LOstamrQfy|3CD8)+krFa9SSaJE&{ z}FC)vXo z+p%K?z->N+f(`9QMrYNkBrvaUiQaFs#r3Qf7`I$Oc_EI3sKdqFw={XFk531s4o3#+ z7Je69xpKrqf4FSz$1!h4(SU2Ie?$nuBVU@ zVC(T%E4nPbW12}ej^oIpbDxM0L{QEApChQsIR00Fr;8fe|AzniUjnlh%8x@x83aj| zI>yHRHEPuB9`1c);*b+9g7}2un(4n&UFitpFiPzA)q8QN`8h3&#cJJsjRpGZA7qt9 z=emO?h$pKF7VBPRflCF0NhO*4;1@d$9|WqkQp^1}1em_bcYF}0R=oa&EeiCOvkA5` z$G4@=PDhI#Ne%M%ByM*U3oY9BRuAOj!#T#6{gVIbD7Ml4eZh~8yVvBP*1pj2o+5MJ z`)F{lwJKS~0^O7;@lJmVb_z96diV71af6)UiPB1kmW*TDYfTXS<|zE%CguNPtWeee z%Wj*o>%OHPnKv^iZb&GuE3g*4yhVI%^X@@i-Nf|U+#3d*eci=+W5~_heg$pcDE@jh zwR=LPmg$~vZi31c$TLC&5r<+<#cDj+jjJ2pHINB#F(e{8F7F6?F-T+d5 zA)S4lRk9UTa8~&cQOyT}&+xe07Id>*aq?D+~9(JzvUeCCi zmr5FJ@T3>bAmc~t#II=OEw9J5hon0ge1fe2RPfx;%R()eNWG!bC90jV6VX>XOuVsP zqQhQ`&R|@0Ni#-*Uw{~b1K&}k6RdC}b{fkq_r?J^lAUE`}R$&Id8&OLJEP7WIxxB2}dfz{Z}C>gA)iEHrp;O6fmS|^UEi#1s? zh$z#F|C%BHm+L=OZo!?wR(Gc1P}MqI{i8>`=*R4YJWv1^JDqr1%B_qdFgOJrZJi!~ z99r;IedtiuauF<~4LzqwrRukVv%piyAbLU4sRYk#KTy`kcGA0{oNOFo1Ag)2^F-TLBs(m3o8x*{*n&}CiC`1+l2E()D@ zW=WpI48j6bB1Ne50>pDZ{h&RBIDhn=o+V2NmhnVWx}H|&0I>QNmR zY}(6ahQ%v*&YuBQ7aTYNRPqbbqRBTOQz_ww5j-GtAa9;JGt~Mf_bc!_jUZDo3t?Zv zQe!}IllRA!3UW8>j#z;=9a(FVHJ) zV0-n<%)mg;%frB6d>5vH4A7aMftGf#(askAxo=i?x2YKQRKaxj&~Ve|YuMQvR{ZMy zO5+xXgxUJnI;J22Z)#B%EL0l>?Fs$Y=)Lk*u#3S|hGlW*%! zATSE>kCq1uvhE-^7{zZYc7IhmEBhF>G#rfdw9PThGQ5l^cs$zUpp+{wvss7u8upFi zlRkGoGB}57>K`kpu9P#6eVHtw@$}76b|(k+Xwq|^_lV0^#28(&T@+<+Ep8o(lsiTz zyG;>G>~D{nGAwMW!a;QT0QoLl+?RSKkc7NjY$%4^QS%Me0p)`Nvr|Sv6AQ9C#Hxt` z?{;q#Fv+9NXD92&i%~nYSUW~-yu;*#%O}aY+>}ZBDR1FR=FQ_mrI;rismrWzXVMa|#8*|8 z5x2{FHqP^k1^2fch8n+TSmEP3YX+R(lUsEim+z)*tG@}9*s0lq*sGR`Y<)o$a*bM5 zAV(}gV_*ZFGKS9p4J*&y8mc$ z@`2sX2k4;oAIXCNkte(q^)wNm6X*5j95|c|tI6LRzj)JAW(o^=)#x57XvmZEs>+81 zTN)KW73}S1gbV|UKFjx-(LIuFdv8exki%5bBpK~Wt2rv@ot8|Db56DMjeYfQ0gz z4=Ztc5?vmIuh6SV2Hju9rSgLGe!r3Oy4I!-En(=kN*U(SYkk zqby;a*sF4+`D1+D(Vy`T33U)h+@-Gtnn$8adHKGPM2s7$mum7(dzWNi8T-Y+cYCUn za;fn9^>z5NP^U~h^1wLq6Xmt2ln7r@-hbE&{@R0_VFjQZXcUSSl+TZ0a=OfC8<&lN zohPEXB&A1`^$s9`pAM0Af--9AX0>R6tX>Zd)~q0=Qa+t56tM?J~xJ^X|@Nsu$^ zoBo{AFr3g2{n&|Em-I`AFiAMiZRwYF(cs498-zk$MMG@R@r^&O9zQ*7qWg*9Otp0L;I=Vs`!28(a86IChr%#^jU_YUsbs!W<$u7OUL%vs{UH> zTV1|qIylXbB3X)TPH&iB30@g^B+ICU$7)4TiAN!LJ;vz4gZY;#0qXgn*tgBkbKHA!&+IV#ja|Fxeb)aq~c>4 zuFJ8_S5%{TjoOQ<^Qbuya(}tN32gFpoBXt8S;1uihBlxN%DJN- z-V=KoL?ZI5&#?!mmJ3UHIhMFnyT$C&27qguq3Q4*!v^=*8U+_kQT1CBd=-b}FVxi0 z=N!3)^)VY|AP?GD&nDFPO@G%SB~|?0;L7VU5wZc+*{1*wpPWADXFVIfKu*zOaiT|o z6K{$ln(0`-eEp_Sl;BhSCI%i6xRhJup2lizEt6g>(FDSAiq zbEOlt14lX>=*!V^{Z5ZB%gRE*&gXcKgkW>j*Sn%v=FdV`M|zMaR+9YE_1qhfFX_4u zga)I$gLO&u6V?uA{cd&uv$QX)^V=D%Hx;Q9o>(E z{b&!LW88&t98Z=Q1n4_`Dt+V~} zspl>CeeCWl3ymX5AaUwd9({J@=mJt{i~b6KZ)4xxK~tA#`}gPGp-Fx0UyFuTd{E@)mS7vo?2YOI=tlqOA?ZwVcRE?eo$jZ6C&<^yp5lSc zS;Q1E;!2uDRD2{QnPe7u?z(p;X0DEfPw%%O52?HBXHMo@OR&NFUe9H`^aVPKKQvF2 z7)5p>W^YuyY^lb?2l>5Vc&s5E&F=r_un-$!96$&7)jKwj$zbK2VVpn&2DzCba(*j2 z06Pb2iqdql#&t3Oq!&yvzz;=BQNuLjpt6&)nc_5;@<7KtR{!ZA;W{+-;+Dpg9vrd( zWU=XG{)7^$XMfhE8H>Y~mWu=_C&y|tnO^6lFLNNW5%x-f+KjPZg^oRr87QB(6|2X3 zi@Ik+1*oc>*1zsNSID#;FG&9DAks_N^({Pa#$(&Gf{k=eT?MSXMTeD0<8zPi&n4`E zFYZ)#XE=?`9lfkXCfXuQT|gH$^81kx<^tlD`NchJ?o=cV1H(5vOFi(?9)LbvR8M~@ z@AtTxv8tyWFA%dzs^G3fQ*tkFPa`HX6mwm}jY-CXuq@H!%zT|WF>oX?S$Pf#8G|V=6^sxvNBEtUr*}cS_qiz-6xSzTAU@NGQ#xQg?P;UO@^t>)_ zQ|safNnAzoj@kQP`R8TS`|!8bFj}`<-xm&8D#%JdwpI`OP|Qz$%cC zKfcghk~|T-N(`BOScyy^^}FAMSZGp}f&BvP^>#*YqV+;6rYUNl2W3SyVngg=ciJ6; z358OpZqJN1ILz-Ynmp^~Y*q?y>>+mM4^4 zk=i&Hx3B5rIUyoOLZ}`h&0S{N%X4}b`BJlYO@3rw$=59@SRfJMuF;&zpMSA!T^e*j zL*VBU^xcaWW^*ou*RZMjL@NoZ!Ti{^pr4+lN^gdfGLLQqaXfW5j1=1o5k%nKdMmZH z(~suiS|muwju74%XubOkN1xsC$b*gN*dJZ+HVoUT@KffO!slp=^S1xb^d`43-@uZmXtd*w_SkR1-!L&lMZkw+o2Kuvp-seHC$M%D;XzVP zR2R*)&-`Apq~yGi_Vl~l5DL?%kO9cgDxGc{otT0S(HrmsOO^#l<^E*mrj`mfD-NmZ zBu`B|(NINTJo2WUzCiblU8jXaq|aqxHBtndUjJhjZf#Tk(?46sq!ottZhi9(#cTFuH_^D@#AR0s|$@h z(;lpk50mHN;s;Yb$zsG%xJ!J!<{z&Ww@=O1TPEf&`)?bp*T!Lm26&F;i)M3xnerDm zNoXOrTW*BAxUCx6CJNo_w;7wM=Y#ScjJ^E(#RYd6z&*Zu?zF<*40n%0pqN#TJD|kI z<%>VtrD2nPR1B&wRQ|5C1XNws(P2_fwCA-((o+7)Q^c)1)IDpu0ckza;y)?S1sVAi z1|(u5%$IoD$i`bTffOmfK5kb8EVMVoJTA}X2v1agUPCFBbSz|2Ka6phf8uqWBJO?b zO^s`Yc&xxsnGzix=s%=zG)WA{2}tc^z}Sj_ z%78_&p8N9-iXC4jxe4uXd69}^f9S;Z(`5z1KIEt<9}^}i7cPrBu!?^K4O#y-P^SEU z)k0m~Jqtl{N6-6A$mH*cr`a4(5%dl!fzrD1ECjQmKIeTz1XfCjjQ-F%XP9;LdHI?A# zcooS;nNQwcY;^lSrV=RE+)iwr^Xz1%9L?4$j3+$`8UHvz3G-78^D8Xaf+bcW1zN6d zwbd8%&LA&iBo4O>2~~4HxfB%Q)NzyVI<1sY9e<%WyHh87r$W5+zaBZlmiGdjV!i*G z;u_Y+1((^8%K8rzV%q6+1gz4qWfTe$)$66BOi;EUq0YQFh1p~e2U+1TvZJBzCdt_n zWd%=r#T-)DMLvn<8+S>9xe2Ud6ec~4Q4h_xzEaw9Me{Uo3RVHcSOL`Ij?1l|9}Z?! zfC!N%UFu1aW`lVtK?d0NlOdpbwT$9m%93xrazi9%_BIZ;I0xB;Rd|AeXG1nlG!7&5 zhBf2s_t&o<8y+VLnsS!md_QkO@J7a*E2sLgozyxQXqymSN7X7tR7D_PKc`xUQIW=C zA}5ZbMaQ!$kO)7iRF%cYALZMK-L?8&DLSwVtb%)`c@CH$I8 zu0GGy4W|!-zxZyvX4%hN4l?W=4{y;zT~SA+cly@^H$Z-J?qZ*2$ zvvVop#YaR-DP*pI4f@?RgYzn6ZUu;#H#=AWKRHL!^ROcV7ZXwl){CJV&K#%&#q1uU zbk=Av2JnDtLaYme_w{bOkskA$WR0i3UNR8Xd@0nP_G@fxhW0czG}-prFeUakJ=$TT zue~|;ic+hE>p8_&lN5pDSN4XK@d1%6qfR48M9vh{mikO>#hp;8bp=KYJwu7oNFlc3 z!l{M6Dch~KYaKzvLFlhXV*kU?Q4SWPFhKkos>w__wsYyVvip*<_SOkaJ&z72f%6W0 z_;ozOG@vD#!ZEoZ7rFCcB{*?Yc{*fSN9WsXN!l5o@_V0-O9ljs=I?1MJ!D~92er9K zD*X-+MxTSm-!phKxWORBs_CBWsVC z9j=S}ARVx64aH70b4G}F`58)%bij_zzndA#_384+VDtRZ1EnidFyKZy&Mx*{Lk_-S z&RT4zg!N9&&zVO&?9DSEdO%sfxLOP|K9AO|njE8a80}oxWOZ@@x6M1LB0<}?t<(+f zojQiG_?+h9zh(b!vb=HnMI|LZPdtj#48uJ0LOdN;0jDj=z63YwEs*NPOO41xs;-SA z)##|?#qGi|U|JN6krco!`a_Gt56S&DbQWvVFBDgu5Ik6%vuZKefm>qS)*^L;8n;#U zGI~^=lOfn9kkEZut7I?Ua^Y~WQrlN#VJi4UIT2rTr znZmK*9TFk=X-;Hu#J}8bF z+PoYCArml<5nAR&a1iPdg1h^hWnm}$VK+hpEA@mYMr7sW(Q8~nU3x{h%KA3k1SR+G znZ>-dc}1kOvfOq@dtW3YSQA{jG}ja%54|io-xV$Cv=L>Y7SFrj8y#asTjYQWT4)H; zm6jC&G0CNexP458P54Q8@ZQzzesPll{>RC>ZIzX(>r3knY`gS;2ZJtBy-iU8-aq?A@;k@Q?q=yxot zV^DX4`4aWcr9DKM-?LNn#c?|F(n)jlkFaVJAmQRyL^*4sHnzYG;BTy z=|f#O!`S@MK@?mHl1b+V2|`UpOd$r&0t%@5uUCcHiJqGHbwqaPW$JetfVBJ^diekj((2lIb%Cby6c1VHpQVNOv+NH|; zfUeft=!JX+g}@7B5Al~c3Nyl{0RvnpPJE3|Sq#T>E~?58x`?zGX3dzg9knsN)3OcP zJ$4+u{!zb3lRZ)*HR3P_UMxX+VO~;8&vPn~w@E(P-&eqZ)Bdh47um44P78qyTRf_2 z^vLe1*|ikD6oT`l23bXex+;9_no7%JWZ1rRufOAWk!QnK5wx3ep4XqYB60Q^z93^+ zNy8`{p|&~o!YX$8P#m5T++1Q8IUb<>4s~PA?qtJkMNXJhamnQjK^e|~J(p(%3fcvA z79h6h#422&!lScJEGKp4ZI>K=dzQrzuwXMP7BA*>x>{vlsLZ~J^KdlhUOaz6h`08x zF1m|3BZ7b_6w+5z#*a6PPygrVXY2#E@4Qr(40OD!t_N!50M#XeV8n0)5Of6BB08z* zO6X7ro;CeWwi9b(&EP72jDv#x8Tw33c`57{>T@*=%P;0%rJ4<9<0&5H&yIQg40p_Y z=Y~EzwS4CE_t@WkYlreOx-{;aHDiS(HwnwP;GCOO&t4Hd;Xh9_RQXfGc|SB~8mQNl zZ`q>L%O;sKSBmUY`HB<%&z8Ge3fHs%zIr&K$hhyV5W|!$BafGWxi1Q=3duLSuo-Yd zjOXdyPu_pAYa!g=-7gl$&3zIAe+drpym12Dh z9I8cq7a)T5pIua922ySmklN6mn9IQSRbk?QUFy_5v(S!Ce*z|rO$vORwV+X>;B4T` zJV6aV#=~}@uqf!{JQ0!km8NKCO}^*?8{UAr9f8X7L0ZlDghFu0@c;+^hU6+ zo9k;GfIywgnlA}=C2?20T8)d6OhOBL(pbXLr9a^lR|W!{jg+?xP9EWcp;v#;GBv*7 zU7dvZZzOMU{2CludkofnTE@n7^ePQepjbP3Q-@ei@_J`Fjte+!Tpma8#{obg)7fhCSEZDB#UC z#;ps>SDw1_egU8(F#gFbY9Go+D+iC3Q@$x^YD2D>81H_Vpy}oq1##!qRbX%tEsiA%g5>%o<{YWcf(^trZ;^S6w_3v_yKm|NJx*m%jhSTVwx!=C$vZ z!L+F2F>!Y|bY3M_d!KJ^TD^UxAA%SzrhB|`nqh&JilJ6Z}Yj``fL z)35CDIz9N4;aYK27)4b%3ZMnHnD>=O+PXujzCS4iE!F>d~Kk}XD z$bv5@k%xpK<5;Ni&+|IZed9XI&Wri3NQU7Dy8j-5Y!OZ{KVylzi}*pC0<8eSo-$E53j3ceGmQTl7y#bL{z!};ppiB z^%Svb56>vKx&@zN5>1&6kxVyT0tfWCS#z4MEm75{o>9~5S*-S@C=#yRa3~JC?Q;>RC8DuV)54)l zUh41=4e{Nex_q;mJ__UC?|80ctb?m6swqVKklxf^IJHe|l6>Q#Ku_t&Gh=hYBvvT= zPBxfymT~5%RezY{d~@d(9tceMQVzlFz&oN4@+6PQ6r_f6^CN&Sw7|piNLku_S&}3X zEZ!6BC~4}lts3|EC%S)5m$<7}v;GEktF2xM{1jI{V7qr+;K6w!g~FJ&5CMnD?9=nD<^K zF)VCPyjjYo{6ljbXBIGzfFa(s!&)!QE^5mB2TEVnO-Q4+a$NS3Dh|HNaW>e=tR^3P zp<#T`VSa_&(t*1p(Vb=1B+nGc!{|mwmd|HhVHc=w=B<~K%Qx#T%&rTGUQIzkjl6dA zXn;N9`Uk4}Xw&0lK*Azx=aH;M^{t^-ZNz_2#ceFkO6%~7Mezfk)eLwf1lh`Rq=-+# z#-pyTNU8n}B}b3#jcytyxuJbPIdQa!`~48fB_e#yz;U6lQjJ^>sfhzYqMV{wE;~#qle9t@HaHnSvHtnd%|=74sEX zh^#$>Uzvzck-tRqS2z8hu#K213HifhPhrG2)Cn5J95 zVsIKyAwnJ(PL16d>;=+mGhivm1>WuUKzaQnpfkas@zC$0$?(lof6J!yp`f zr8d)G?|ke!hHt_%Wg%n&FnJ0Un9Hd zhhl$Y*0>;D9~Z6Wt`{z3CKm)D`?6)TP+rJ5#KY=}w(tn@rwy+i70n5wf+h=>l>~P7~-8@;ki>meIq|VHkdRIT&;`Q-bXO{7R%SvYV!1=ny zxAPm|N#Sdo+2DLYU^Vzo!XD zx9+?%jK?!@Iy;X9_8FmxpAe(WrW`f7;%6Li?UjUYGcuPm2V&Tt8N{_{fhoN+EQ!us zhxEnO_jN0Zd9LSL1bRJx*LEL`qbB#psLxyDwNTBz^o|V0SV|`UV+v<^O=>2KIZUr!orizNGzUNi&eKVj@qVTv{ z-|LZ?@>6OlgzZ3DD5IWqrKb3uCZz391_>eB4RL&k9&nwrlR2R?qD_)I)QuVPRGOXU zdTg#rpVB+IQW7N9^+x;@M(C+40ImI1`Xdooll8E$rV}r8M|Vdtgs1Do%~S4?KUr$) zu8W7QMhA=;ChA8vUJGNxo-?d0%0|NwfZ1M;6wtA0Mcgzm1+1rkf464{xx43<+O&h< zn;$oT?k}M8uma|FV10DJ4oM0>Twg_{hEW_MHD@?2tX%Qd6&#z zZ(k?@Vz`PVrRH)*U%cO2HI4!X>gHBJ{Q+#MfHLVoW_6Rm!N9rQ13_(nkp9ZdH`qWR zg-r+Ht7+Q&M*uJB7p>QFlTBU{E%NP(I#(T$;5eGFU;CGqpv z^)*n^WV2^C&nE%=z)v=q`ZA;G)x%~VvxEMt}o;% zwBrM6R#SiVX_`wr2(Mw?X5$sNsVEt1eTRWA1b#x)3QG9)7d)^qKZWsl&Pf+IX877p z_DYFk>*}l&^)}xhR4eMgp1jTinkq4+g$D?Fnh5wDoFFTO?PrCwqq!{P5&uaq+ z6C|26f2tTduq#VfQkC{xRMfc&;3tGJy{{_XLb?u6T~pxkVeJBJqk0{LE1hUCh(L6^46T@#e9=07N-l3x4itw@nUFR^5j=S><>)#Jsa)=7UHH3+BU#h)R zFk2W|mbraQKDzrIi48eOT}0izNfBR%<3=Ep;&o@QI)M$IZ_vUT#Q`(#^2DF4#Y&) zx17)636$ILJ0pMci3wL{_~Rw+cYdvTK<>fuauLW(>@49Q}iG4J*$36t+=rXl$oem!NBr;2FqTYx&jUw%9K(@B?@ebe~&HlRA?h%U;?~AEEYV zniiIFid0{P1Ro#_|R*kGDETW}HTLhY$HKXLT9xozsxttzhu=18M0?C*15ueptA8*E+W>ixYdpEO?= z8jNpvQ_-sB#q8bcADFxQ5FC-HH$$_{Z639e?-sZGf@X(X>6`k`y;gnU2ew}RDpx@F z`RrUI#2#{cNfiv0dNvr%2o z;1To8y+vfj(yi(rWtfWal;~Q}(7ev>?2G618lp81`wNQf46`S$CJ5aWPd&-E%1<0g zwXYD#>zfzFPh$O>AuXO-oNIVzLF+8odc`$iZSn)Z<#BISO7spIS1-b-;p0HB^_@pA zZ+^Fg{R7Tj@cm^oCN6@^ZfZXNN%84;J6w31K>X!Q$Kp<>;&@Go$Oei6=c&n?kKEVv zEdJ%`M~lq-Cr1FP-gizW+QapI|EoDhB(|n$i30w{F3m09cW3l2)qAJ)1n;xME(Yvm zIt;5g2lGQ)Ro>ZMT)+rU238ethlVuw(}BleWd$^M^z7bbIZzLdwcjlcL!TjAI|R_t zcgp3QT2p_0l6Xy;vIYBDDT5JK>)i`9BdR$7eE7roO}rnN>C7(an^eWtD9v*I85eAx zkhmq~)3yB7X(I6)u0~!-zXoh|G5-(F-aD#^?tS}35fBkjdQlLN-c+QQC`bosp-UHO z(tD9$L8J=^NSEG;AU#NE0i=rb-i!3m2}$M*&+~h~-}jt#-gVYG|IP|wXJ*gLzVCfq zpX(RDYcpxQ$_0UO>Yr=VgJ{=pU64_rYPEN@46YTlbXDBvMd49Z2>^eAw>{MpmO& z@0Qg>@Y~J5GJXn$?i!E|IEBk)*8NG z>v72+Tos|Th4lP#Cb{u)VCHV{C|c0huuE%(nbj<2oC>z+veEQ}t{`*vm`l8Pi@~>l z!WSWwUVdEFpXI$Zja;tiY%q46!kX3D4K6F<+nr%Pfar;e?{?DR>`12ZF2cTj))^u% zt>qEBBioHDSPt7w-kJ9Z%OxLFWDXv!yas>RJSdxgu{RWJGrN*$GYfc^dCW5%atUnr zyJ_vow#r837ny#aIIgaMxe0FvCr1IS(=JyARb2x1AdTGKkoj_FC4c83Qiw|e@Zvx zV!Mt5CScCkA+PTnEA50&kubUo$Ga;h77z5!SG(s1&R@*$nFE+{#5!_;C_DNOty6CP zm2g4kl`oAZr@+y$`zL9?3jBb_>6iE14Zr+;?zzjrF6R09J`Vo2KH*os*&AY9QyX!);i1v2% zby;o8NN)~1>?r^U?Y;4?<~hwhsVk9Y*mk1h#Ti3siyf9_mM!zzRb2rVp9a)&<`%_P zKyG00;8mSKN(wb(nP;u^O|qARo54TsWX{bZCj0+lqP|#sY#%|iddkq1)LS0UFPldZ z)zsY(W*l2MMlgd*+l-@)n(mqgxNqi0fsMP1(y5bb(#ad|8U7iYfKvr#zn9O_mRr$b zr+uD-8&aeVV#av^-*A+>(P?lxDdyUMKEqkc%J!|}v}CKH9rQ+5>CD{jJ#o+8&@%lB zS8LxfR&dcWEPmL|&~AqXa{#P2UOW2XPvAJ;W0`Ha??bRF+SSjtbWA^&AyxZsd5Orb z?l32DGu-#X+3~82ja#hPKx>}@qC2CviesLBQB;9@QAAT{cwguL(y3Nz`*^QB<{6weJZaVloO6;+k-i%Cm5Za`p)mj9W7EKV3 z-254!M!q!MWnh+-Z{O3KM3OoH}j z|Ea~amPT3bE=)}%rbzL9)RGf3`?;?*_i+5c@Jw$bUBmmv%HIPnIfC<<|c5PH*p@Y zX`mr+3Kl-TFSpuxvb|_N>79ar?@*ksRto!azsB>KBifz7N%cCsHjGS9MkB)xssr>& zeb*kXkS?iL-@UNG&*B$4KCR?&41X&$JogO6g5K zmz(ArfyYU`Jl$qeyZ#cnYV?Qzx7{&Lge-{#V^B)kTtB4VUY*5$dLt=Xw*Btu2KP+s z?%wQDWf+13F+enr&IandgH-8$_18t5UNJj0MRcl5X9iV={z8(PfFWJPOpsY z1kGI5?baN{VFvsaTS#+J$r%*Q5J;S!DNCH;0Vva|3T=!%MS zvkee9G29kD_org99g3hTIOY@Y|i<9^<5iRXY`kz{sYaV{kI{-1Q#OVc#`9*qkSC946Lx zZcTZ%o*7s%O=fWgYu9ved;%7cqm{z$!Wp3o6O~JDohf$U9+w|ZYuWh=Y`VOTty93` za4>a`Le{H94zNv>Up-9h5DPk(TYCKM`=?f)x=oN`u{A?PZ?>>I=|)L6-z*&Fd*~Fb zC9@H3QuGHlCJae>Pmn15=flFxtPym&-YRz^>$S&i0)F3)m-KEwCsc=G2z_c50q^s& zesN;3^M4RkA~yL1nq0Zd@urG>y-jvf= zelUz)PbS+lf+;Vbsjm-D`$Pe6Nmw>0WENWNVUJ}SHkSw2g>gtnm;rmW|}@m)7Q+H{fMcG#Aid8Ut|ilIN6l^IQ1RL&XVl@7mqZ2ZZ3MaAw(< z;K3uaoof(`>#7;wSGNu#=JU^}=6=*IsQdk#(HUJ6VwN7(+?4CYnTZd)k@rmUY*q1r zzA3N;#B0i1Q#9!tAU@bWPy)*UpOYn0H>F%IDI(~^Hi_~qJ4)A@B4?S(_ zo~=3O4qv$TZ1iO2RvA4f#*R?IyjMl6{ro0XX<;8g;)fs1F5)$It1f=+)kg5I*Y5Do zmA$v1P(KpSuVlVGc=3Gc{$>%?hUe=(Qkowq;MYfw7wm`X^ne973+=UUnHjTQpmrE>vZ{Y_uf)9%L1H`f-p-+uSTx z*ToW8uWIx?HAqf{fn9K)ljC_F2`SlL6eIYTYXCn#Lms&J}it^(=r; z6rT-bBL{FN1Jbj~5X?jIJ!n&-=Y&Yppd!xG{ZL^&bNz%Bi45E-c2y(^L~pVV6iv;n zf}JKlJ|!%TMR3zbj#i^I%(GD7rQBjTN%+7sZhaj0f#Ull|0@^n?qZt{_s~1l-UhJLR z@eH}{yb8lw^`iGl)1u=ykWqDFdTyg=L#1+Nw@p~p0$E4x8DQCid_AL%)<^!55Wpt< zc^HkX1dvV$b92g|oi*1b?ft?=6j;AX;zuE!S;8@C?+t+%AK{i#SW}Ws>nAdmE}KF< zJ%H5(NVqttU!Ju=a9>tY^<9YeSr*yl**}$q2xYgJ5&lZTO_y|w`>Q>=B-5y?tj_>ieF9q%U-F6gg>T^!1&{!}-+ksY{QMRc79oCPi9Uw#<`{R1IbdziR=vCzMXM*aqeQKbci?xauINrB6DX6?=GIdUJs^+dIwFvaqUAk4EukT zq7!m3d;{8xVjv?Wm>dy;iWubCbtB9)-ZgMzYqtu5l>B5Eim7E7n|gKNZ5f&<&dIHD z+d7(B- znJ5```mT*GTBgUpTGU6nfSvR;W4ooG5=ob_J588m89>ZsYGt7Pxj-|W&mYt0@_u8i z_ZGhj3PUvW_<7sfNAd7>ekW|(4Doh|No72lK96xF64w=*OjN4y-M;1`6XB{a2XX>K zOY+D};9d69)?^$VN@J_k%tAJ`Up~;BM1i;23=TR9^Ys;{$g|jB@msiZI^f$pEW7qF z_E)OctoQgYLsl*S-d_^K+s4)~dh4f-y-EF5_c;3ts|a3C`Nc}_wXa*p9TOCn{>+f> zua4X{NeEghHGHr3!B!dE=0@zXbi%ODf{dN{PrAUGG24-+3podT(kV(6C%ox`VVMtrt0vD&0tmut*pQNlI4zxmum;-b>5+y)qIwrr!h6@WwW7 z<83XZQ8-F=>~0Ma{P%HFIt3R7Fj;qcS-D+QL1`UEMb}aPAk<8E1Q@lU>y9Z&KEJC^ z&r6Tq9Xf_v16vBr&Cy~S2hB6@#~JK;C5_>8K@HX3XrpZw1&BWv zeHY-Fp=|Zk>0My|8vN|hCvs<`o49ZA)KAOaNeL?_Dj#UShgKW?4U3U}NR<6NoY}L& zbQrC_UE~;pRFK5KUeWGGx>5V+IiD9tL28~&^Bii8%8!t+nYWzkVGp^AM+3?ONu~3F z-yVb|#mQgEtI<4~WAZ45XmK$C6m+2}{x_$Bsbl`*tT~Q+d>w;`#bNBoUi)|qc1BH&(D&%b8{Vq-ddcl_W z!)`E1?8GDch8>YCH5ubz+dCSkptJ0-nSwyE#oo8#OHLlkEBa4&UH&LJZdHlpa5x+N z{A2Jodiv(Rp|_BC-odKyPBTnBS;$*GS=h7AX7RNsU9z7;#_^YGZrQ)8XH+w6yOshb z-d_6(e_zLp$0frEn=y9Yl~JS0_2`lZMzyIX#;C$mm4_FspU~pGQ?t-uVG2svb&I15 z39q@;SA&vsvgmLvuhV%L@`ADX=(K$c?g{rBEu955SDZHTIEznkymxEn*$w+qe6#2A z=x#}AMLglCMbJtlTT)fL`bb7EedbdJ0CzI2)d~Bv^2;yOd$1FYB(=aHM9(*~Y9Bkm zXv_W?$ivHlRHDUi>XmY%Y~4azt42q9c;tR6tMO%J`cnAl?+ia=!>}3+2N+jL;qwl4 z<@QV?{scN>Wh=$-Wgp5H4x(aV&lW9Awk&&q`G>5Ybv{8Xh>*2~#G3WSu49&M{7CcM z?BvNCU%Lx$32sLwx({;i-*=vR1L2`1cHUNKCAu1~?1->pq$QaTG}~f4>fG=&>?Er` z7a_O8wXo%96X4ssG;eX&JiA?}0=Xkcdz`++;*4Nj*E3rQ9zqLtXDpf5otx&=??vJ0 zPf1RxPn&jsfL-~Rj;rHT>4!%;ryu*(-R#e)XCof&`5?p6Z5rinN)EG~W*8Ms3G6&J z!xuYeEHBY53;Q~1w)h*~M9SR4Re=@4;NM_opRk`O*_ji1$*j$j7{L7^o18m`d<3AE zifz3*uD7av63&BYT;|^m5Rh_@b0Hom4(Pz4%C}`m-rNbpAVctV%Uhuq35P{7lLu`6 z{re{;uJx?G)>rNT83UnwuH5Yo*#2FCRf3y&xY?8L@!90>X%Pn|=3<{R|G5nOmzQA^ zxLt~Wb#CJLPUfG3`SH=p4!I8aNS3ex4u+x{{up1z{bqw1Ylq>|JW*O=HpaB|V?t9< zh^t;Lc%tmfixwu2r0l8cwC8!0NUdI9f==7OLdj_snSO7QptsZ53=3T{ zl$yu+-E}qFhj<^as5mpR1TIYv5-Xj~9&LQIQMx*PiILa$<@qO3kiem2aDjHnU3Ya| z26sS@Y+2k$+h^Kf0CiX-h;~ZI%w2RF$AcR>0R5W-`E=tk(2(@^x(7DUt#-^GREi)d z$;|d-*YDI(zHT|1PY$Y4@KBN*!GT}QhoUE=j2G$WvKp$Qej|D=zC4NqC$BTZHoCCy zh>7o9+1haQ^>)cpyo(gxA6uDZorn1ZafH=#_=sLW0)Itv+!kK@n1G#@YTnr0t~c&bx&+a_hnGPF!2Z$+{Y6R|QItiii_$Ez;$|MnmrxF@}tLC`ME2nd(f#+={{a z;qThE<8I6_2g4I=wBU~G#rP}~@^-8jn=ts+ZOAg=bqnG3Jh@DuyoW1)nD0U#z=VlC zZmz_={)zO;P(yHlkb(gD?YwVTi?qjz~pzuMK%5dHC!4%XeG9A0ye@Jt9YmZ zD*J~l(#4!Dk%>`j_ zo~pOauJJM7(XL$sjj9v2U4{x-QFndCXT5$Pj%!V8=B*5TKC5xFzwpEwTNoh1 z@4P&x=`zy~y!cTvLQ(yYj-q2d#If+IWjEU+()a7uw}&_hNO_+@mne<>9)2BCeK*8; zFEWlLU!{f#2w{D8KI@mg+X^oJXNm}iP6zI8Biq^gaV{_Rih7y(>mi%=`hQ0UzWVN*%PVL*}6e1(6zMqKRLwRn%cVo}~EWB;L!#7RTIWO?#mF%q( z->vrfmPx4VyXR2BH90XnuZg8MnU#$kLgjG0RtENE)UZ41ZM+FrPADq3IQjBKD*X(q z*)8H4)wJcL>Y;k`N{be5rFXwd%>C9E%9hM@?gf1mwOO&UL}U=TgN}1feh!T1!|j-W z;tBF96h7x?_ss`-Dr)@rx_`h7hwvwn^vk6%d`T#RsZAoT&A?YFxDvKmb%vz;U~MGo zS<3c7)0JZc53+wsVG}wiP}9=%<}Kjf%3Zu8wJ#NN_$x&^T+QRwA!Wz&lF#(4;xh6D zB-0fVB5}YXFtgfnbIX;a@9Vu}8iM-}p^sTuFh)cZ12%eSU6wmF|ByJ>2hi@l_6`WI z3zx43iUG7tX&0-+P`ODB7ail(3;t!K^U3)9GE$miG3$|kJYuJ|KG&vt5E3)v^fv9s zy1!dO`8m?h;E4I{2!OSZ;1=s*edL7O3Brj-LU^L@rYQyw!R7~%akjA9G{@?$tlN`- z+LxQ2w;nEXNuLm5QX@a8MU59ysUJ#eYs##tK4KI&$o`lEs|;<7YiawIX5jP?h4*N; ziZQe}$-7g3krTf%dX4UCE_f?%TEG!r=p}2IppCzaL?0RihHzfO8=5xn{~G<8$XJfI zQ?uU$!nrfAd%zKAOM~~0rPBz)aZmSt%IHgclf3oqmT=_r;HQxgq1N_UifThSo4g3!t zi8LEB3UWL-bt&OjcIqK_{=Pl9QfDRHCrJ%kJ=tA|Nq&s~#u&ZkIF8T;v$U1dRQjRspH(|z$`~wcanM;&93I|{Ly`;rA zxh#<6$Kvt9$Qn&@mlUmBWTLfgq5JW^4}GN0@mcQbk@<>xo-l?!P<01pScBABQima@ z52$NkUhJ5z-)FEm5DUtb{pT#9y%j59Kw$eU8kZPT!_uDq|4YwNC&nC72PmT5nvdS_xBT`T(4H=T6@%WOJz-h@9Ck` zs>3(*IEOF!HZWHu)i<-GKcgvD|T2oV#g%NewvkGyzJg|N%|<5Yy5pVD3l)H_7S z#%b83I`9mN_d~8eUuO?iYWt9^FJQ05G4~|zgrt+k*~?bsmB+#jTNyd^_?!NbK}BS- zcXT4hqsQ5@p6Vn&>$KvsEVEOC|%4*`^4sq=B%~iX5V(<+udAdZqn(LnCRFvN!C$4qh+LXLYXglY`uoF3nSL!_rv>9+V(PwX#{W_RMzZd?aKGXOBujqY{^@#R#4}=*8+6n3idU z(LHnz{(PmfR$sYCv!v34AV;r5Cv`?+Liz3#2(?z9S)h?iupvZKd&;~q6XUfh9e`}r zL|EMy<}y0 zK&b1qsP)XeOegp$`#hP{y5KwLqvA}@{Z-+Pas1iTJaN-W9o4#CW%=vS>Td3u&Z^e! zs~9UemY$m5u%hM!1$hDBjaq%v1Nr9W|w#XiE9w3pzblhBl%FAH8eRP(&0*$IEk zO%TUiv{Q+M1~V^pNRpI!2G+6O+WY|~ZM01@z@8PkJ@{W3hUs$lpx;B7m5OrkH87I{ z>iQI|!p)FlW*-iV zCkkl!;c;+W^vJm(BTTeq1g|uFmIj0i>ykDtB)87}jQ!a3`|pe;SAWkfi=RH0_%|yo zpktzP{b?{e!@ILPTCv)&OeZ*tgXrT z-8VnF9S-a*)Wn;=b^(pO&NYGmj!&=hii^&*qyLWY>8l&y z_>%s6pm+l06I>1W&wxkni4d89VJ81Q0DT=|N^|Ase}BQ}l&jz`$OjJ)_&Fr2IEvRS-6fhXgmBam$XVLBYWMp zdj)Rc8)oX)%KZ%A<7CiH4^(>x#0qLvn&#@ObArGL$6^qXVJ7iFFygT`)$TH zSgV?Eq9`Q0#bfOw%EJl8ome})S(Gp?<;HT04eq-}87^ zhpsc&#RF>r#anCd26^&Nq8GJ5k5 zsE8Vu<5W?X3TvDNUs_goGadJ;Azwo#t;mteOI))R4)E(jCm_k;ysmfZ{v zF|W^As{cY$zUj9j?;iJ>&{1v@TKOV=SC`bK>nvfcHL9%7@M4eX(m((Bwn*xTkI$9M zcWW~4yuTH@72;jw2rT5mKlC21s(z#To?7D83GFp1W{0h>&l{5$7i7PlGe2ppN2C=N3HK|J(tm;OFX}^us!Md0D_|6mV&z^zPsB({B=Ds zp-}_JVRyGwM2E8GBYWyFD15@D{xYxX{Yg}f{1@UN7%WlsK-i+@RqAf|?`!u9Uqxc+nCOV| zEjWHvn;yY8c}|j36lD`6%&x}6&sf_HW$}IBe8H^bpdwe5UH{Jvhw7U3tmdm?n$`Yj zRF-_GE{}a3y~XNMhshc*7H$7O00-lL0S;MjE$z2jbPyN; z`Y?xHmRS(R;EJ69m+2$;i*o<1V=BVnA3JIVDad!4hBBehl?##xxn^v2Wlqg~Q*fn4 zsg&ar&!}L1zr1w`mi~5b zWka51kU{wk%C0*zIO7dFVP3JY2SJoK^KnSO!Sh|)i=a=+N~6oM)q`DmNoW#u(cL)W z*Np`(hm=ZmX3(*-kdQOT2i;q5=;EI^UpA83nm7+CUvIqxO&%3^g%q$H$S@`Dk_1g8Pf@!ni zaEwKu^VwoohQ1i^*^F4s-^$Ky@->hAO_pCL{61gtd%X{*BTtFX9q+kM_z|58v@1Ru zQNj}RAQ##~!SI){Mo{wKkZ6<_vD_-Q{Q|2%RA0u@&+B;BiF|}-U?bHOb5S9h!LMh< z)Q|pfiUQm!0kQGLft2rKJECh(J`#MmwSlz7hD*huyN(1y;~ui)Me+W^ipN6oDql0f zJ_~}92;YYn2>pQqDbh}UV$IyKQfokoj`E@SFDwyiLHMY>3co=6g_obF|8aUAdG(bM z*!yY*Oqu>$UIMitfn6)bA8iZ#PdEsCd*5juyLnUG%}N)O zj0-P)d5w8p@Yix8lEl{TY8M?|m@NeP(ce!>ckH%MYaq*`91UIlFZac+@qHRecGX|e zym8D4TO^`yJl-1rRT?~_s=p2I2RmEH^{mO7RF2)%^K~2LrEdlI_jVkx(o~3&n0aPI ziHz2f*S*gUJ3!GqT~5n?s0&Pxuj3Ent*oit^96~*Rzeqg#k#V<-R!I}b}q4(Cw3MX zJ?74z9jtdh_m$dyT@j$Lb{&N$Qyog`TKr=Im}pKxWimN|H`d5qb{Nzag^_e zpJ*RxZMEocYjHDuee(=<<=M}DwLa96_X1f+mBF5<2O8;o05L9lcd+u{I0q)mzmYqU z)o8O{N&uA=E)uARTSfrR3Ba!(?j%d|XQb3^*0hv{>&XQEMpB~{7(?_6gS?wcFJu{# zpnTIm9E-Lu<5@c#fdC-K22w+0KOjH5G@rY!;M zlRTo36pTIxWh&rg8iADv%88RZ%KFRKd*<%k7WZY;fo=$-23&D`a7@7eNWmt5j!Plu+!D$cLe(R{qZafjG;i z+Bq~;qunB2HaO1R0`U#vNo>0Cf8YWFy8X;;%T6nukN6O3YQ4k~1kDd(sg>1bGu)l8D_%`{Kcj76fX?d^IG^>gM$nqO6;O>8pFN-hG_%y9?QLd)<*(g4zsabwZ>K@5D-THjn0 z!oCXDL(h%Eew0vrI(eR@JfDVRwaG<#*nakE4I$$;N#}Enf#iwcADmQwf)wn5H$RBH zm@fx&p+i{I7j{g)q*lST$Ht?Ka3< zi2H}RK&U=#Ktib=ZBjbgIr2Ou`x$PLltyS3>gRNjyeNvyuZoN~mJFJ8<@C{Y-cJNE z2jMkI=gFS7SO>vZ)c%f=9vg|4*91V_NR=o0v|E(Qi81P; zM&mxz-z}^_)0g$^t;H)e0@p?fUimPu2pcy-2Xd{+K+yA!0o*)cM77L3`@|ZSf=fh) zz4>jQR$=*Av!mJVa;V$FL*n!eQ?s`N(}`_$74TKxs>t!KWhQ@;n3`&-a|GHSR2X4z zyIbBG`w&NKT-zNc^h_t%Qlru{^-~Wlr{jask%d2g=Nk^U@K)=U%~1O7+yRv< zdP`b#un|B+AElvf^30hT3eqFMTsUoIPYxO5cp8IUBctrET28$VaoqB}z7&Bhs=D>v zg~U0;v=QgfNJ+tiXFRI||Cs9e4a=The)QM>zmNLauMVb3YcaL7k4Ums#@X-2Sx3Jr zPK;X;bj>u4ry09C+Gs6Tt_|AztGi=URcaFdu}BMH{=df}vd_10^mkahh#XORr2hmr z$vsWKu>6bivyp(YdXMddmXZ^Z%{BVc?|_=_SfRJ$k#_S+GWjjj1f<)dd>soMgRUD% z6|J+0bEI|DT+24$-SwYl*ZOePiF{usKJWXZP9~a&^Xi=cog{E!2m+^HY&}fglnK2s z1a!=4)ocsg;#DmU-MH-+AmLr!N4WfU@Y(dfi;Mg!*NeVd=m(=nxlCrDIjU= zKKOq&j1R-9_6!?pXn^-}UT`OcnTODk$+4xuriQ|vD9XFIAt^)KorCG0Dt)y^BU&?n@ZEo91k!Q5ga#FQ&z+I1o*kYHj$9AF(W1+0P zIOU@dz8uAseU&4iI?NW^dq#huCCeTbHU`{IT$*W@|B@dq!c6}1WhFnUOEl*{#^k!c z`3~K>dTyCFK*w?fzP-Ih$CG6;!eARdk(E`_mU~^)BqB}RwF2wc^hLU)+u9I~{8p*d z?+^NSFB{0yORzN;YvrcNngo28a2xuYvp=o&+>n#+k5~O2=lVaa#{bIkQYx4Wido*806 z8m`+hq`o25&TnI)y^|zF3`;d!9N!sh-}f;6w_aY57vtNTb`H;p4fym*W@K$bj9o#H z-{AE=vX463gYSxq+8^s-Dc2UupJ|}dA{T;;Nd1WVzW!@DeISO)YVcft_j_%r6n1X( z^`3><@`Oq_74X2mB>&st0ahn4Ti#7{GHbG7GI@XTmEW2_h6R!Ec!&;{VH7< zMcQH~hx0m?Fj7gcV5#L;^2cm;Lg76vj@3DSn!-QD$}1YcjX0M`19$ir509HA7?M~l z@4Rc$)s%|LAW}+o3-$w}6`yp4nj2)$=8w-_F~WwCJj$X1n732!GNTN}k(+5zVDOAk zQTrp{qpDx;JGR7gyQBOOxb8$ypIZ`>xt?Y3A@{YrLve=CkVqi$Om7L^VKHeYlpr|p zPT=19ZChr~;3Y0^BeSHc2$~rEo*9iy!v3S~2GOE!Lvr1e0(JFb1Win%048jd{=&(D zbx60CIGP1;lGAu|bcCFwQUlTAt2eDzWMEtiy&)nL(l@2cxIUO`w#w78=KrYdjaWAh zjVx7rOaQL%LWgPZdf{Q*wbr;6C(HZ5pqo(|uHId{Kqkgq&o)bcEd8~v;j8N~FSFE3~HSvGCN zU*Sc2BG6eyRP8JUG5W#E#rG-rge0uV*enU zVt_IDVDDQ#GU!=O7Sya0Spc+tg(acG*f8@*TfDNq{gVor)o=F^d^EP=)>#f5rEGDR zjXe4by|5xb<0V7z4W#u?ije62KT9x$WtiBtbm714-65aH*%DuWJY>9ID_d{PqMAYe zD((xlW0CaO*7}>cJAR)cf)tza0(_XkU>0KP+k_=^mU6Gek#uJ4jttH?!%~Ky%N7_d@~8oH)_35VfRW}G&oVBJ30B7^BZt$6j6eW( z(8$rg2fAJVr-uJk<%62%x=R7>3<1&<^*6`_%`;>e-YkD4cWEymR}trf?8=|WMBK^1 z#A5EG;*-(h33r%ql*ecEV0e-`HlH{G=xx92sFDRN`ezoY?BsiB^^l@UMMj;XL|4zV ziV6=nSf})?Ep;?6UdKdBzO^3fljL_2E$oR&87y%l+Nhd6me?0pZf$M5GVf@WaizvH>a=r6KH`P;o9cjnaE!pAx87>Oru1e< z6ezusm{s9fZ%94Mjq#^39IX#|Fs$Jx+!nDKoq>cty@_bylReovQzbN*IG~1Q4M$sS zON9e}3nCA&b=-@!DC9R`!V=!n#r(6Q3P0UVr?^g68S-M%gZr0JKPhTrEcuuF?4vac z*06@yuk@S_|A<7@E=8g}_CJu9YF>Xn4o`&?|tB1qE#0yG*uXP`)+bky?9kKtW@_>($jqi|&CduoAFFq$gWMgP__seD5 z-hGbhKg7`1UbaBE2bXdh{t055xl}+_YDO}f!<)ey&@3&2I0srpvw9NX3ykg z!nEE@W$%9CFkcBqM_SZx!9Ly9$JqCFW~MAK*xBZTH4Mf^{=AXV9OgxDV)f zVlQNiH(f)vJLCCZrOc)hnx+6r=dLhWz%TFJ$fyMDj|wkW@fOta^SjP|h}M#Vfu#Fs z4KE@q6bCz*Bh*gFt*3@38#3B{VDGv2s8iyW#sfy`=qqFrHait>#KdYj`|eV_48qS( zGFA`G0`P|L`=O!Ir6L3@^7CDw^E&3$kfg~6my8gB4rMN;=**b*f%pa zec~L%(Fc1;ZZ{~#jNu_yCe2( zrHkDX`bXQ!_;74Om0f}|ry3m#zyUl`A$KY2#QCaL&XQOQ69(Ld-G(huY2M+SlOJTg zc#U^w%X``OJc6l9%{x1A@j1J?;5mtFe3-!-{lxFW3`F=4t1B>4z{!OI^Nt72pfpF< zrYHJ6_RRDF9*n5*Z?v3k#HaSN?15X8#?j5!Pm*_wR>_C)cn^kSV5MfOg}!mZ`3P(>Kyx$pt2^|P6K=ki&( z0$~@d(z}Q>K;&k|sp_PByqb~GFdg{MA&YPm6vmsu;cIVB)fAQXsuZI^Zbg_ zp>k2!DL+5mZ;$wq-|4SqsB4nP^7d~uxN1<;~d(X4~8M~()Ff%=rZ zKm~mNdco<{zcC?Xa{`surGI^Oz29?C;cS)mVpJoA*}B)63d#2()VsZTZsLXjY1)VE zKALy5XN745-hvrVyj@Npdwka zN*E|Ni&$?Af!= zo;|z!Vo#sLi<+jps=KyUUI+er!i8|u^vo6N4;z5Th zbplUILBv?DY`C227LR5lq%xzUREzlXUMvpm`0K84yt8+OAbP0kcY~&^3tNFbrS_Ls zw2TMggF1t5ZGaHd*H)u}?niDWicIFNdXTC3mT>IRk=aQYE7>0-k1@`zxsEy`A~xe9^| z0p!qvcAx6EUGX+Eol;}CCkn9F8IFgxlhE4`J)LrsAKbW3&3*o>3-@3aXgXRCgKF93 zgUkh~kYM@XO%v*t1nZ6U6M9@+Z~bG9F0hw&!J?1ayU4;|qSCY~(VkL|-!wj^d_wIF zkY4u`1ka<|!^g`xHnDC->!@BcWzkO^icYr*@wnEHnaDOq>{W=Ao0X^2JhfV%PFpaT z)10|a@mFDQM!o=tCTegQb83|*ANiDjO!)lZ_M_@wM0bK|SQ)B11-A=Kwjzp?D^HV+ zrYZVgUdlD!W834fo5ZE{@54vmk9j)3d?ko>vWbH8`1GsTc6Z%u1@oc{`WFlncMmZXLzMot1cf9798lDxTiI)-7T;?>o|OZr+) zLZdk8((}s3b8$&Q;4Q5)vhNMwO-4v|vyocCAQp9z(po75sst^*%OzDM#s zu>Iw`hE~$#p+^6-pWh$}Y=6-|59t5LC;VYbYL#=su{K;${#0*~Zs#%Y7U|%=^HnO6 z%c?^d;Z`tKoN7Ip0w=yFbvt65Xs+uZ^wWlS_MpiLS>b&oF2=F(Tcg}rTGy9||2}_x z@Dx7&LNkck%XaR}^y-H~tLxs3fxCKr=aXMm5JdfXSB|%P@0>W{=xhxJnB9;{A%^Zg zx#%TRZZR6QZCl!{U!Mh1>&r`WAp!{^%`#X7cv ziO(3^B9n}0NU!Z0JQVr^H~Hypma?*j(&Hgzj6CJhpWLt#6NiO4mo?Wj*~yggX>29Q zmKQ_?vAmcrB!O_h=bVd zyX>_tbd$Rte0;rFnN5Y62x~}R`Y;$*Mvmy+D$RiDS;$c;%uT!R#7Z(^7=RO|v_5#c zwNLKU#L-Yf4w?zvO^1AQGzTMK;&(cJx>dx*3EHFaD~m|z)ryA4!y6PU8rL@KjF68P zW1qemz_JnJF&u_q?SX9YsMw+FEc>ayAjYSQ%5N9&wd(4sTDFe>-DVV7nhM1Gd3*-C zx9gqbt73la(Yge@vkFOPSBogAh%9)GL`-VvYHx4HZ z!JckPqsCjg_ksj$8|6<6xG1+On|I=ZuD(Oj8qc~r!Z>vm<4up2&7Gb_xjbDU);dY@W>sbHbJX zNS=!fkCZD=p;-4}%NT_Y#v_uK!=KppfqUVZkE5j7SECoe%UazeRFIQ7yY4wP5j{Ed zPCHF6^#%gPiuAq?!A##!#FNbY;5Xg2+t}Vdm@J|-n#hnh?3UVP{r=!RSycf1G0FL+ zmsopZgkJJa+H>7<3karO0|n90arSSz!C8VF|K5O+mLc;Xf5`rs0g%NkO=!1xdWo^l z@ACX`MMGC2FNY_QccNm{hLOm7QBhH!Xp8bTq@4>DwDfe6eD;}GpC+8mQEC|7hhAzX~T&phw*C4=YQg@`S zH*2KaBG5|{2q7CDohL&9ZT@P2&5R&l;JZg)oK z{4b9~O|#>7fSS__X(Uvj@TDcnaR91Yrbj7t=Z&All1yx6vE3<$IE$jF(;p|?bgXa2 zuZ1$|If?@P7O`WtZvEgT-}R=vlV=xwd&I6<_L~$v0ch<3KS7N5=kS$ha82gl?@hYQ zoUjo;`=Gp-N2+J*h>eMy%N@7PPa!T^iZnLiqG-#FUceV4fp}7ebD#@t4wpJk8w!2= znnS+?$D1n@k>V_nN#^2rLmq>rh{v`_e!dVXkNshe^)fcFs50F3w26Z0dMJ#8G0BQN zI3x)eqv49i;{(09oaT7gctj>o*iN1M@po{jZq($__9>M$) z_@w88$~zX}*E>Cm=;(%ewMpTd5~i)SHfI)T6x$t56V-d2O08c~&VE)wFbfwl|;Uhl~yw$2|k)Uduiq{ zgN+<;!7B>UnyJR(ehp3NobYhblGuqyqCQ<}1_PAt43AUvw1UkgWXq zp(FkG-t%o>b!|7kIbA-HQs&t%kW84VbGKyjSD2j%PHXbMGM(mcR5B8lU-s;3br|#D zJaXXA3L7gd5AnO9&4MjPCN5;Upr0)kqJdSi_4|f~<*N^R zNwreSf4qZ#*&z9(@-aW-1pj*&N!HQCot5!|@s74fi+90vDt+0vDilYzI#w{wbrGH|WZ+J$r-Ric_EiwhvyAXT%|{{wYo9jw|oH{@c?95?h7?1C~VV*IebYI zSJLM5;dAd;zDwQe9qfPruF9QvS`s3MvMm&rkdom*_2FW$!`2{R1$~#f)O{T zSkTe5V3u3{q1&X*P5ckaNlgl0lPR;FdGDpGi)nco)+v*KWd{ZSQ6{#_kA3TDf%075 ziyz_YpISWBSn1d$$_)!}!LoC$|0rv<*{d`xCf7yty3=i(PL7cNDT=L#?=L&iue4h% zQ8L2UIG8%F&&W74R-VgxmI?jNR{9EGKIq7H+-)STW3)uq=XuGPA5UG`CdI((iN9s$ zIizfNIIK=PiJ_UCKd7AD#+?5GE;KIw)VC#_HU;+1j+WS+?J9zm z$~R6huybg!PEnuM^17}+cXGjgoK6K;mGV}w{tnmmcQ7m1f2RqS5nkTHi_!brDmvu< zYFp{f?gxCx)hgK6EVGg;dT!cWm=H~otyezs5iEOG{2yh+myyy>pBHPLv;C?5tj$(w zGOC0dH2OGS)mMnzUv9v}S%qy=+i-jX7|HNY6mpzRt;TXa3FcUaUfbGA`eS9cw+*>eLy+XhT9`w*C_M=n z7D)`=0u%SW6ls3a!mV={9LA{j)aeUI(UV$lb2wZfdH7tr==%r{GGF8`6A<7v2~=7stlDWJ0@IB`neN8}}#lyMcbz(G~i0q#M5P%Pr}k%p$e=g{KhoBJN(F91j|b z&S`B!ULBnR^NbolpMo)v>mwBCgC##IPkj2RhMfK2&B{B1VOklzbj5)#S|+0b6m@S| z2rKS^Mxfmr885Px?rlTfJ!3&7o+ri4rfJgbg}N$d#ZL=6{r^sDZ47RQePYt?f5@`+ zimH_)VWb z*4u2U(_)QL!3pD)`2o$73%}RAvxo3Q_%yKnZrdLSzl1jc5tn9zl~;(bsXt4_uDxz~ z%;`DQUG=ng!lE}veTTTS_eo&W=cjcd0>}2H9G_{FoQiZm8gJKG!FL z4!(^=H@*)T$o|>+)!&uO^@W6)proK2wW*i+&{TxI@aN<$)Q<%il4}q7Zm7ZftmFat znoASL8M8G#eOk)n?o_Tnp6Yzn35bRi29C^HiNNfc)}iW_cc)72e_prr5H3juqx!IK z&G0o`*21uavT}23CqT{TtskhG6R7v-zM)-U2J2;+Wg3|e&pstTEA7oAELa}j#mZS? ziH~$>7d+%i#pAfoxK5o(*n0@~>jaQAx@d9J*Ao?_!l65r6Ow4y!XcR98V4Zb!a@Rq zmI2KeUy3a6^)!5gX*2(+wG$K=*Q+P@pf|#=;Kfi)-b{)lJtj~mSUTY4YPEBH&5EA& z+?uGTbo{eKB{y^t1{$m(wILg7Qo!ExE##Pn)M|mlpAw@lO|HWy|C2}Le)P3pLkdF; zF^bA6Q;6a(SvoV$(i$;WBpYLvaQ1FC9uDl*WkzyLU!{r1_$H@IDUXkY2@Rni-!q3R z@ddz+vUUZMNXBQi$V+rOf%k^$CihchSADvG=+zuuPItNS2fnJUF3LJLNAM@WDL|!r zLMZ%<#X?~@hCH2sH$n`{ySRG+T;fA+$g79n`Mb~X@e8d}r<_aSCUp3Zl7va4A$XH| zV|=Kw4cjuN$fs|>bWhrXj~b1-8TV5U=N=^E->k$*VEK0DL2wSJYU`cYKtVJqFX0gpTK)I zpb7`xL+|YDU8>Po0jPHf)Uoa#&dN(IoA7!OpaIi>3cVyD3h{6DLlkQaBG zW_KLb1Z<%Rlguc9({)M$m`ws2qNh4Ovz8Ffp`?jrob8;8u_7^?T9l4avS#qXiUpdT zjp9`YKy?O{DdG6_n`{)kvO~*8TJ!(|5Ck4|t`hE%FDM$THLL863<=gQ{o(?_;yoG+ zZchCTXQ&LLMDm?G1iz3;f2bt2Jc6s<`u*oUrQ#P?yMgzrBD2g%B{MxbYK)n|dOD-FS*aR>{U zvH``)K|C!iT*rnn?s>Qi#OK9)NtVox2bPq?&A{1-scg!p-?-6MO-euzu9UJ{oW_Ww^-YUfJ)G7P%i+abLcGxS6)aa{jnXOG+$g_|v=ZAE@%l>YQlB~AqMP7?3 zbR=#PaCVDcine@3dRoTH|6bY8b)g#>s8rGQf{SWr-ViZt-&pvO?Dmr%tp*NJev>5V zlxzT;$p0Su>2{5CltRHLi-E{XzGbg z^u`&$-Sp{&_OQ)$F*S_ziM^HJ{*qicA~UB}e%oNO@}YCm1Ca`Z(5An9fn83zvZkkY z=~F7Cer$s>5$%K*0s8*U0E@%NPg&)NEXS=q*B5;6Wu1GYV#RRF2w#uUe?hp4KM{zn z&KJ`(!@Hb=GuY5#CEiY5wza*DSvT8O3RdYMiadn&urTIHpYDQ$4FUs^)+3X8M+f)3 zSWR`=upzFkr=|ufq(GRA{8r?~T*RPP53k!Yd32ZPj^?yd;;~F-K)($;4Y^n0y^j3E zZiogKZ-<-;Vm&Epwki{DuWUB?%d$h6B|lZ3Y)q;vyhX@L*uKqXpJx{rv-EfFETUg% z+#Gp)z||9Qn$s5c7??ag>5Ql-NGopS0Co&I7U(p4Sn2P|c8tuIM?%#z)0H$m_*(kB zaI&MIvmC`X47)T^_wVC6s@=vs$fM-I6Jj5Dd})B-aY)kq=E24d4kij{{kCzPWFNHE z!r*)i`6jK~Z?gO1ehXFywJI+arFpaH1@g;xw8xBFM>QA;!0-st4F9pd+cHZ(0|wmQ zBH?JLM3<8pXS))UL{L?~2t#h+{+2QIAd_6oT(R?_s8NfDi7q1v1@D79WpLtruNFlY ziAZPId|H3Lg2(ws89B7HZ+8bKS^qT9tT+*mt+CW%+HpEQpo*l7f}kfjKwILei=YD+ z0lE_q@CWG^@K9wp2<5qbW_NKmo%0*k>MiNe<~%Y2sm_U_Nn@6s1@b?6u+9Oih@xQ8 zLlU4yJYj(Unwp*Xk6YQcMsfQuZ>y`U#ad-=Gdn!?s_A0cWwLCGWBXC>k3X|oVm&Z> z*T^vesk_8cMstQmO|N`2IZ&Kg!@$A@A8%;ud9_rhG9ngGN( zlW)57)#!<|F${4_No<#T3Bd1mj07wOz7OdKR4Pu(mZIyP>6WvL^F!*18K$3!HkRtt z?U(6zic=CN#DUUJnV*Dl_c3Ezrbaq+@*BMQYOXoa8;2}O#1zZyUByNem3}#?O>%fP&MVzO z(~~-LRC2d%Dp4&}EP6A-aB&?yG@!(@%V~-&VM+0qS;}EREuFRLoKdv8lFZ0vTOte! zC_r)`FqnDsJG7k?!&(u4 z74VuA_Llf&M9lrC#Z!BEs3IH{^TUPaxY&3cr8nliFZ7J;pHJ(K5bu`=E6$h|{TrD+ z(to)1wr6ops}G6>Loofay2@6?ciR@~e9P-+M?NchXkgwAG(!|^viw?RH3npeAn)I7 zDS}-aON>fk&I)}TW}!#DB&!Hjmi+y8Hz(8eOBDHs^W0j|<1T(qS~$tn**R9B7vK%Tb9A>^XW z*2xBKo+RSNca6@Yhk328Ms^(t z__2s6EuZ&2_egv7HRaVI5Bt5OKjJ3f4pQ30e<?s(LXutcH%h z=aap$H7mzso*n>OJV=hnFnX1v^gnRAePh5Vic%M?f8jp!?vw{|I#}mqGcGzu+$qp} zmgBSZajT6-L`V|JBB{OM|H|b(p0x+!yp%$={a{4qb8UQD@gFG)WSBT5SCaB1^}U+| z-=U4BNXX?!5~4yzO#C~=DuL!cDBfMK0jYEt9F@$ub-ZDUPdj;k8o~ONTv@b9D;D*F zpK|E9w*OLPl()G_TTQ<_IkuW4McM9OQPxm7?{6MW=^jt$`0)-X^nc_(G zQ&-m>e@xo6OogOtfKEeqD_Yfgsg9SN5V`wz>G zYn{UtS}{^5hx*wi>K!C}zI-jrTDe%#ov}-}DC6*T{i?$qqqmRkI;zKX#D`ng9ip{O z@^$G;1U=S_bgO;B#lOR=D!((cVZ%JSLGKpc2aSUrTp*7dp(rdr8ge}e;;q6oT_1}0 zUWj7&2lmgA8!=v(@C~zf(N*6=Hvlh;tWK)~5*s z`Sa-Aw~@djvM4w|?8@}yB!WJ(!ci33KPus^W1X~maojt28YMx*M8GQbI=f)`c*86+ zVN?y%Ddvr>^570DR;OICtIAe{fjJbkO`}~AZx`Q&BO}n{s1yal`-&skmN=(!kx+=& z&xy@+o|#H4hFmeD2eqjOeOgf)F<71=A0}Lyfh}Wy*zc8#opJ+grKLLn2~fW~BTGX2 z%Cj4evhWyY(aT`uq&F_CU$u3;#M~B~7-|UXy6^sKu5W@PLAU!gQGTb?vEd9iSaT~Vf6Ki#FO4@P-x+1DNkNp4imBM~(TvUpHLHvs=h0y>7jo}v6J8#Jr zR}|uo0*D8q&D*7HeAw2g(Qnj)P_{oy%W^qM?v8wN^-`!#GZ(7%-UGueV`#4rhl);SvO`;L34VwY1p@|>)RfT`! zjOvY?zsP08Y-!E!j^8aTeOy;)OuC4;z1AZ5C9$BxH9-&s|;vY#M2ZweR_NF97s8jHY5{D8X zpA<6$ZgW4h@Au>ThK8PZ`mxT_ri@SufL_-S=HX)s(4V0OLuLmRG_ba_bjYaw!rQb+ zl~b=Ea{^1!jZa<}#gzt%utCdr4~|MZ+-S9XkZ$nBu79E2yZ^S;N_ct7RAC_$+H5&a z(yyB|twE5w@sS;-X=9p~YrlAg$*Qf6(!W{lfHVmEKaUnYcLw6IL>Ej+wN=JJ!!; zHuG*-5TNw6o(!oInP=f>xUCWYE7AYju{S8k&)>?{ZD$ zWickU=(LRX?G5e6g}){o622@`>^@_+TGgtp2I1;92v@x@!+`=f#=S5R*I(&9U%-ej zW{5K=V^p1`Wxg#Awyix;JQsL3qDqNOukJHpII5+f16pa-s`|yg`5?4Y>d@^y-^&2# z6HN_v3@E}bs!o~E5U%Ffzef9 zzow$PHigxfZ9|l9bbIIftKyofp;%l@R)EL*N|1%_1Ot0Dh+cBtU20GrgW$hDfZ^6v7<=k}s-*R;-M_As2xhL)qO`T3W!13ep+ zW(i+w`9*+0KR?}NjnuH~hLq&zHLv_6MP*gYDrQBJ=5Wuao64 z;+L;uaxLjS*y33iW?curzY0K$P9{quRs+--!X)fI-?cY2z2GeUjHI4q+JADD?}v)~ zRm)wc?8~mo`tR64W&{IZs~(MR7VpX7gt{{NA-90Io;UO}Z&XWEO1}m>Ml-&WfUz+k z(4<3Gf!MQ+UBY8UVzPk&<5mCUwoq#@aqWjnhQ>=N$JYLY(vcD z#;55Y9!*&rtnUUKLk~?kH{rmpvkyOSB<^Q{5FN*dlUQ#9Jz|SXV6E2Ht!b%^+3V91 zgHC;phMCXlJ5wQlCA*E9F-VyYv6%^Ea;p%vFUi7Ir_Waxd`^mcX+J8vQwd|xzXEa! zryOd;eA0&M)aiE|3!$!Si*ilevnD1}J1=?|QCgZMuEO6KW-{prV-`4wVOubrXDPNf9)7@!u%2&m{TFtMfl~v{YVGMT0sS zrfdEh{+GXc>ih?P{lCQ|6~doY8a67AAuYGX_P=o1jhP5E7H?9NT$5V`e2r4&t*6CW zJSLe4P&K~=@v15_SrpXl^t!QJr;XNsk}b_aGdlaxv80=m{%|Ba=e>*kK#h(Ad|#=s zxTEdi{eN2?aOf-Q$%&Cb?YOOV)5Jy1Nf*kP4oPh(F4^gFOS0*1x0M>|x#6$Xy%qz@ zwyK8iP}~H`b&SP-kn39eB>F^ZF(dNmlI{11A9UzYcl_#<^&+F=C(O5A@YokH zsIq$~&y6Ukna_C4CJoH5F;e_=u!k$q>_G*-f=qlb_uNB+RV3%dpHG4Z+!2ERYR6px zY*=IKwmWlU0Ox!w%r$KWQ5l9B3u)0z#>UeI+DKPGv9acG&MHn6Rg$8d0GTlkeg zc5PI)<7b2K9N+p+!R^=WiisYnh5z+pJN=BhAR28tMyn7SUo4f?1rtFGda-q4xXA1x z3wt-PfB1>tu==9_>pyWDh0Oa1r?oF@%=hOcdvPiX&~Ik_LB`-T9F zs<*cGF|R+I(u#)C*3f6uwm?Y>zaq?rP~Vg}3$sdD`fn8HCl@)k-Vtc9Ff6Fn2v4&v z2VJ_1ly+X_Ct_6cfB#{PNgIYaqi(M6Z~nl^F-%RUte>$anbjMyH9NN z4r2XW5>;ysWYIifNFJ!Pz{AYFYDc&#$>aE@5z5L70n@nzZhqQCb^E;_`)kx(JY~7R z^}%v6hUsyh161l(@t!6K^}~Tvn5v(hDX`GIuWtu1_Aae9h{^Do+*D8({XpO+BwrY8 zJm2o>|Jc2)q%nvwGn*|Jcc0-rYB24Q`(tTPWn`Xu=X%&S!xulpjlNG@SSyDvp#5wh zo2yj(g|VWPJU|8bIX;+dB*j2o47&Q7RO<{gB%ADdcU%BM;z_He( z#+`cugd(=Hf}r#EE;urA9m@8vx4DUQ%=2Ac=#GJAIA!M7Lx3p>?7G0Ug>a{ziLl8B zHte17ktAituV*IR#6=*_W?Mn2#9hau(%D?Ujwy2aXZAd-2Fpod@3??T=HU&>HqKh3 zHHNs?9OL0B9BgmAjaTR!OHGU3?uBC&D#MRz6CV%=hb8KsbhJrP-NuZsIC~VVK6A%9 z=Y^9#Ju6?*0z`uj@{Rk$i0DQ87{PaX7n}0$Jz?&-zOk&QZ_QXtA#Y|YdP@YJPkAwSxOsD!{;u&qOS*&vF%9Oh{%C=8pT=xd zN@P37>Yx~y$v7X@v^**+Gg=Ox`ysSsO}9=Zxnom#4wc;N>F1-M6r+cPSpFt0(IHY7 zikq?iJVJ1plwi|9t4Q3LZe;%~$$pXKr%Q{CFrrY`U)N!Vtq518mJv5o)vg^vV>KeHI}bz0`Ch)W97 z-vf?@FA4%c;4RQ@CJ#zPqDrI`r;iL z$Ybnr>d=gz0 zp@}0sVw`DPTluqp8M~z5>fqlF@P9zLm3qzET;yvDniKn0I0WgEPRr%CP8oLw(sjST z$Z@cXYOxyq8r=jVz`GQb5B|(abF1`QLEZDV1!|?m1q?S6dI;UulCLdVXDcjP`s5qbCgU~#}?I!sB<#8zjl!EigsfH zeZ&^)Bc~vf+B)(TYozN>N_y=?mDy3i5-k!ZVfE!YWH)jNMr%$AOCO(Pbc;ZDii#f{ z%+bNVHR%I)t-ZBhaRZ4X6cR^;84|8aF@Og;t6B<_GX3xtUS>LHdl5sh087;?dPDdE z%#N(F(JoG9C*gD0nn&PYz zCkfkUDj#QW7-xTqD?hpWUvKD*qv=)&Cf=Nw#+$ftn-kO7Q+A?b!$?So} z-p_D8oTC%tkMI)GRds5{R38@T)*96mk%+dnx_uURjQ>_ObdNn4n*b#5|4#EfdQ1)` zc^<+)+^kZhj8Kr#R8B772G<^dRDM~0Zd@Y|*IYxCwfwlLWmqsWxrY4FJC^0wHfX$d zcS$sF$<4A1=fSGC^wEWOTB*IXXXsmQL9Y_R>G=zRZ^Tm08_{^7sryphih zo;zarO-ry3Owx95DN-3Q)B`Y3PzkQ2^`E(+YmO&SjC@j?;_BYVk1G>1#TOT);+v;7 zcur-#Id{`LtEug}ABCQ^3@ER)Fx;sG`hUF_l-?2T`$T?rU$`DC;abF>$GSWu&k%Mu zfbl5CTJ6{UT~_d`9z-(2FFa>$Rxl*$<0&w=%n_t3qh1rYVx#hdKi;LT&7%?a?I1aY_|`-CBXhGf0Q`}3Yr_?MvTaTH-;3B7NW=bl>G?@M?>nX(8-hj zu2QO4DFHTym46R2coP2xd zrx!&y?PP8+*9XgIwXcSD#1JnR!lX`=E6Wm z*(lyUs~35HG$WlvOZsZ^i52w;F6Ru!A{pO~;01rr;ZOC}M)0^Ztzs`MtW8KZqz)^?`9l?uq*E4 zj@`Ra^aGl72nfpQ;1^&dM0g>ev~C&wzGX^;Sbi2}bN7{3N-dEuT2}Xiiqp;9=ldkp zOfoZM%z&uU;?UL$1Qi#>U74E2($xD4kDr6}$Ejz*0YYK)s8a66C<-f^{k3HyBP*U7 z54Jsw8ExZsOU0WZz-3`dY})eyC3oD{-|LB8_C+RQRCxCaM?Xf_y89LOpp3Q+Go7S^dgFu?pG9C<8U@~R`0gg* z+AG*`%=%{2x%%jz9~*XO9>n#c4)YZnl*HWgX1 z$ebww4gD7T@ckA--iT3&RqEiaM0jTIRz|4M)dnFQB9T;HXc=-BIos#|38lK!Zu+ec zrUC_==BlCwdxcAwociQ`QfqY5>C(Y7pI5*ddr%ieg?et&%ui=w%(k8*SNe-!y6$5! zZgi6~4TAN~E)j}#L+@8NJELoR1~Zj8>;2;>S%Z1O$8Qo!)7f2R-ZZK$>j#xqIZoml zD=K5Fbg-DSc`CoWg|WMmL2EM>aI}gXg#1v(Ve&Co^K&=}c%817`9#*H+~iTi8)Tn=NsVKAFv&x)ZKb?g!0*Q9A??*k zWzl9XZuAIyWqY7r7i<;Y$_6+!+QrXD>jP+HZ@>_#8RB`&C6s4M^17TcIk#G26Rr* zm-v#G452TXDT{1*^DKUA@_}Ih&tE`A9Hp+S+ptXVra*RRfc{rN%~V_?rPU(7P?(Gk zRZA+iPtrrR1{)O~`h7mMPN^&71~t`mCvnz3HDXE01)N&bHx*!2N$XFP+>w^@o0BO~ z=5qJnez%)FY`fn?n($nr-FLf`wMxrgmZft2>m9X0t4t01>}K}H9NpO72gP2p7^}*4HA%2=Mr5>2F%oDx=t^}65OVk)z%z)6R?Uy_>o{WVJKd$`- zvpF@O`OE=K?jfW*Su__rReN!okd?4GAguno+$_65#@{(m-T$-!3DKB0J|1LmT7j>ErZR_ZhO)O%0vsYMt<;9}{BVmjqvX9UtV*I(K zg1O6H*7uh`w_bjoa_17a4kh-UyrVYzI#kGypx1ecFp5r6mK8wVGePN#>^lvPP?%EF zihJGp7QD3>Lj3y|5PsZxKVrOUAbck4B;481+1JN2MNJmHu`@Kmas-KC`oRj!RALZy z&7~_qbR--*>YnS_U4@QiXHBI$q7Bb24Xo3LlZFW{-<@H24oT3|_`hk(rIMd+_;&jK zO}~yh}MhEc36Q9D$UnkjCDK zY!@F~8&B3!;@}|FH*EW3yS;(a!Xvo-zRjbp`xLi zZLgoOyNi&*^0wdc%(66{1B>{oIz+$Ssnth`AYG9pXxQpYRa=K=?|dhsSmDGdZ;S`| z@A1?p&07gI0+B%qmLY_{nWU@-13bDC6t)7P;1UP^V;Yz{l@!nXfP@e`M;bl9E5fgV zPKtA$dm>SESXSt!b&bJprU%h6ybmPrklP>|P<;V1KE4Wzr`_2|BOsW)Y3~QW+gMG{ zX2W>uJsG3mPjjh52u~WYj+KSB@Ri_AshzVt2nHiGjo(t6)B}*lKt5>e@Zh;jxb5 zw1sQ)ivHqqqe7Tfk#b?VOMv;tBpwb zp0i!+S~900lQ}dSwv1xUhQ*RT*>o{&C|#)>a!WT;PG(P2C}uG5K`CGcw={YnzM^l3 zteUO`8+E!CV6wjs=P!S0a@*_V^?&8^N3HGkPY;5L`no)z#D?fn@($s9!t}qAk4Lkh zYJ`5rgj23~?XEN|atu{)kaW9V?@X}d60C%7m}e1{N`ACh2=Ugml!vkI+^aX zR918$9F%)KX`^FUOQw;Rm??Dl3hh@kTP7|9Jr*q5wC4J~J7`@*PnYhDGtX^@y3kG% z)Txu}o}1KTCs?Q2c5)^P13O%F0eG#JUppe9-?{OLu$8R@2bD? zgZ*P%1=KNh`jcSeJp5?=S0!}E6a2l`XF^%iUL0K1>+k9ihD{!0?^%Xz|4|KPjXxu{ z#SZ#!4bVOJ|LZ3hCg_||$9`(f^Rspw+HbjEr7eN)@-XriMwul0qBiQ3Txlmgewi z;5z^&T59Obg;MHDcrq9r)tk3CdXD5+SZt-Zcay){96$J8!n#TSL4Qx(OO&E&E_!0o z|4cZwR@6Ck(6|PhTo*YGr(V92J^_((%Z2^b4$IeV{L+~Db_iqdhjQ_at&xSb37jx` zBv6@a-tyRHy~ru6NSvpgiByl#;i88t3KBMfm~Z|dt-swi- z%d`Eyrhysrsj~FY92q4dXuZ!Dh&{JY>5pGAbnIkASjOC!I$yqVz9@%BV{JQ;mdH-%@2g4QEU@ROPbHZV#5{b#;IRh&)<&bs=SX zWf{^6F}-R&J+46twxk7MVC&+Cb1Y@)O~*5?ZgcMn?T%xXmTbj8=xWxa9;7$0{x+cA z4>?dHH9#$Z^NW!5TbiV%6B6<()I4i{qo8)t7F6j#)(eG*7QAOr~>EQH|h zPKV&`9w1n73$7i4dvJ%~?yij`xDzC}yITX@eWvr?@7`}}W~ydt{-KIfO|wt$-utY* z*7N+9%nQEj9_L>J!;$a-oSq9`SrE}gZU3i8$cCgZ;Eo7T9vsw1@Tc_}@4NDG%6C--7(L9NIZK(F2S_uE@1rSIXHl*+Cc!<9D`DS_>mjVvM6FRQV=keMiH@qO$fR+epYZ{g? z=R!O90IOt&$G_w&2;)?d&9jdi$wwuYTTANY*ZI56rj0Y=I3z_h{;vl1HgR(L^8%fH z{VtlHP&x16)Wn{~o*8!XcjoPFo*hDFaC)dlsWJ!3!<+q|BzSe3KGW7*@u1Mwq(*o) z&MN^TGBRR>w#M&aQmqe*Xs))W}KfZSC>@JnP8$Tc);;IY*UVYF-!34;@jT`NPiI8zYy6y#@ zmK8(NL1me`E74C_R8EOtehm4tghgE$mc!P26RMOYdR6o`8Vb`_dg4Y}Z+;Rf2%m= zJLr`}=-S%p9+qcmW{s>coW%f!@H<_M>kCpLlmw1q2nPPgA)uvb}>)uz(!5fIH%*&j&aliC#w2z|=);#YiyK*-Gj?$k^L4&?q*Q`crve zc8H%^(zf=D`8}dqh)MwQQrkk55P6u8By1u(SE@YX(4(!!>Jq1KcsS>%h9q*m3FFN2J=^v71c zk<%oDaL%m_gW?mu$}FfPzwWi3yjg$Hs*?$cfffsU)fY}F>KN{d^$CFc z=`mG*Gx(oawJG&c+b~+S;TRggqQ8r#4NVfEyU|I<0Pan>h(Gb3Tv#Kq_`%$ z8%+Q3PuoKGl~U35jfy5MGUJuBAByxUvH0^kLbyW?q97Cl&4poXa7P1c@1r07^hktH z!v!!tdHf|$!?+K!&L3rrk(qzi`Ax@c3?DdLW1#c(zm!?By29D3EsNNn9Eh5<_w;kZ zte&H|Iabrd;O)etLOL{vpio?j8!TAcTO;1>Gtn`}9`@UlSd41$-&hCWmcr47m# z_DJE<)Hk_({HW6p;>dbf^8W_U+&;3ae&jjdTN*eAQHf=b2c*DhV{3bd+R{{|Dor7= zNJAFV<==s%()5=npWlx}Fi}2rjzU~|rB4JO)#bk9$Nm~JJcfKVFj>mlPjnaUemM|A zT~Yr{^pwW&-{~P7fegRMplAm$eKNYT4q(Oif(L#KR*3{CfJd{`pdMx~5KY@9kWo;X za;5Mc8Zuie;ku14b5OE(z*JmnuzTCM;-zVtP zci539s2>7kH9|Ih^qc{1SLD$feMfiR2Lgum&+#n`&b?RGR0hjRGtOBn4M6-d8SFFu zFYIGIUmGcXdi9Z*bHhNr=4M`_A=vn3KfruG;u{KbmZYnPrhZ+p$m?ID0CjIq7hhzt zRN!tUeGYCkB`to_lb!cHMJ@8CSITojz+hONJgx@$5CAf*|U;4as7i^^V3-Yk{FJVElKMRYQn4|IvjMgI^L(Be-!g&Eb8(Z}`3sR1aOhded1~^RY{$uq} z4-U*4wy^zzd8{TP$6x$fOjChA)93M$y}D_0NnWH-o~aHe{|f(_LqPyki$&r5c(Mns z9Zol)B6*59M-v#&J_jKt@5%i;9SI=A&AN{~!YUg4c+phRIB8pmf-N95C9TbxGC|^R zv6pa)spM}L-+@<6#SR(87#*7f_?mvVdrc5TPvW8}&2D|8f2NfHV>zRyoezY`+?M!U0*7dnkyeh2Jw|1{RHiSObgVW57=*5=o$ zLg8r3VwB7}g1;KPlPK^D=;|e%WRmw=CfbIljk3>kGyVQHJP2{6KFEV4Pt1BkX&%pTv`pOoViPe&XW5C^V`e$KO8f0;b-lWB)U-I0btm zlmfa-Sq7X483pHC_s2x&+&vI8TUN0}l}PFdEJinmT-alJv~KL^ZaRA?`fnTOYb5^1 z-fZsZ)OShI@?E3#kqK4z`X=2cq4TE*(u_^F;LHCJd`6o7Y*xa1JoQ0hf=nVzA^iVOefo_H9Bo|g$0W14jp8`ht_5UW1^s^x~2g(3vk=l{5#1im6AqB*;% zgPfCa*>32oo}L*I^v0Ru`IZfZMvS+^NQ@5(l-8?MIAf1?>v`tKXdZ!(B; z%s5ai;IkJ!MoV>d(TG5Gdij-=^E&7#cg&Sey|2kZ6p14uzx6RK`t&qb2Pt>$)TIk< zV|ebpL{NLyh2$r#cG>h*w&@;P9CCX8BO)ox`U^=4tFu-X6)%#vzPNYKkRZlEiaSFm z3&m}+uI0bci@6TlWnLUk+e~MjC0OHy`2Aw|&jMUpL6)Kfb=95?7}UFuA;mml$&>N+R3AyYsn&08YL#T_Y3 zrq|GF$=%@ERGEKm6Qx^lenPp0|4)xU{s!D+w;=5ZIyJq|mw!XDVYch+hZqpE`bx8P zFM${SPn`ZCWc-egO}k%Qec3Zz;)R=Gbjr41SA)Z+Qzd>Rrf5?IZ_#6O!t0x$)I9&2 zA@{NsHf|Y_*>s%rbfiuC!}GCoeY-^@YA66AM*Jdi1MKCy?^1dEzZI|0|GVO~*%+RX zf#FN;B{oJa_jWMgAn@yLu;w4$%?edVx-V75t$eXpWOW%t^oavbyP^L zQ04zG*wFuXvFmF6txn}9TJ&xzjlB$u_SbOB|KbA`+;tMsue(Uyz3GJ5`a`X31?)KB{7 zuew>$_+j3(q^`#Ks)GX7;9{+ELgy~Swu?4(&LsH`uQ0llSb5=2 z_bK874Qyg;y!k@YN1>nUe6sO3t7?@I$C433ukmZ6@8>Tk|BP&fE!Jk^Zdc=64z z_RC=~{;ep{_urI#khWWQUF}_p(iRUL5yKjUT@mb<=49r8ukGYTB>d&xb|Wo zoaqt=J-BFU5R%D#b_%Vh?R*$W)g}{)c?2o+@R8{0Q719~BPOBz(bu(p$B2&<*CGob zyli6<6%`!}|21&n_Aj*0V($6}dz<0$HVSMEkAi9Am7am9#NYSy7Y+B(7Zp7I4y;95 zOpgVr)(j#4Sb{W%upnc~}Y*|v;sC2vonEiGtAKbL9V%5lytJE|ZIkZ7Z)5}HQv zrOw*~e$Bm1>`o!6-K@xPCd5lT%E!xSfvcUca#-XI3+!`PlI5l63)&{`(LG11CR7!f zmz3|Xa|5JCx8Edm$N_m7lvN+j!r;utqEfJ#t>O*`-;}?`K$~28208NN0SYl&72Jbt zm~p$p+l%(abC#)UMrXF4=Z%c7NH3|zPzg!iJ$7UMy>8U|dscv#EAJ{?jpU!wsLR7=zUs&xYP;t@F3xq5TL%V>1;k-z?EXMp3x~_~erOJZSS|A@*z-6P z?>d$+Q1s6D)oN0ptRfR@+O6Gx8r*-( zWqtuM`2vD6q^V4S8yG|$e{)9+V-$&L@}~L+CRZV zw5^V(vpbm-HQ;A-WuAFEv-2^9VwsDs`(OA{JbDlh^PfLrC9sN6H`R}WXPUnpG*ypI zVX%`WnL$oPHC(qqHyR77&&L3t}(%+h4{q7*WdC?j*~@ zsSIw?I;5HDP{*Q`$~fJ}D$~%JavQ}&lN^m|)ajqcHFobqa%M;*|KX&N=zZwf5yE4< zOzU;P(Oi|m<-Lj#Tw-~cn_j(flz3;|qh9PFclP7Tdv*Os0^os`T927#FK2G-r;e2Z zI?UzJ!Mx@cm;E*tg=?PfKU<^5W*+*asmT z5Bv(96uvX4BTragf8M98)nD}F%j>&r@WQ;0T8{<_xi3HpP3dT(hn?vd`^Ht&Z~+b@ zbAS}~mkmoMyw)m1xyDUGQ3J}Q0{S%{ACY(U?(Q6KIt$kb#-zw^|1@L1Ba8_E-*}QE zbbcw|fBzu`69fX9BI9PL;3ov3U6LQ#|c zQ8C_>MiR_St^*!>`*a;K9(%Mdzs9$uw_)Iibkg*!^!ae6hSn`%7uS<#+^*XiGW+NB zTe{Z{>hi*4tf1_CG7y)Nhi`^?@T@aZ0We>cRb*zwC5;ZU3UWa7Mv-5Uf`!G8j6qT! z{*Kty#N#s&_#p>112L1oRVF5za>i!*!v$7lqGv=Wc3qNZ=0?khQk&i#E&Jjr@nd*r{-EZ=h*1F{zs!iQrM`QcUa;zLR zUksam52+5^$f?Hg7>_xAiVPop{sMi7>@g4$Cl?Mz9{HzbmVxEQM=A=m3-?w zzFVbxJeI!g(sJPS{F=%?9l27cjjgDU$%02U+V2+gm1VVg&jqCOI}K zj)r>4buX~|=B+b-@IXNSCrzEoSwbz_b56IFh#1wvwt)-qGh}h|&hWBWfIJ1p(uS0h zFXoM};cX_w!(Qrpx@)W7dD!JKndN2X@evl8rXcEQ-Q$NOeI7;bFB3qk(&%szx*&gx z)Kgdwxjl4{JnK6~d?2Ne;!$nh;Vn{u5s@Dr18sCpZ^KAH=Dj7*P2TM%>RcVt=dps2 z+N&I4IrPt$+hN5qQ`h#X3tnpk6gT~xLbo0R+nLQKH`5ki5jk}D@(a4~&wJB?Z5w^{ zsbPBJ=pa{Q@rA;Ov;X~cX?4!e%9M>%4(qRj`7-+jDSgttArLa^=e0SlZrT1&pM+G` zH+lK~_K8iKA`UPHy7ngAl}9Zz*H{^>8EHKWo@g!U$0<6+j`R16+aX?AEJFTBF^NmI zgXbC6A&u+0gv|cWN3M8Y#FBr+nOx7fsK0;eX}}P@7?1(tmY7NPY+FOW&ByB)8xR8d z-@m88!t%P@i&3yV_>C08Sf~2F5hky`_xl{e=jWBI+}}#>v}U51Y(h)?AOd&1z}!^p za~)bVIDmpEi)kn)_KI)W4LhT6LAI&Nut3hVpKTAU-B+#4lnLKce=b28eGQJbsfFOx z^!;K>>qCY32;8*-p_lh&WYt6&y|&T1tnSax5w}QP2gr#swwF`vOKQ{QQ&PH0Y@cg} ztgs=L+r~3d+n2A-KtX12ddzn??Daq@{AOHd3ogI+vnP6j^7^RIndXD5LHW<`G*KHV zEr=v^Z|M>(MH$;9V?4iy z?KQs~|6}wW&86jpeZqO%1bmg2i_Qgp=*|UKaYTPrB2QcT(u)CX;!w&}KXe+;W%j$* z4Dl0re1>hP$&U9SpNnXfTZs=#RUH84zvXZa;a{-*Mnq3;3w6weWoWAHr^{nZj*km9 z#1o2Sy>ZnG&et^HS6C1ALw18!mA9_Z8+xrmKgL$>lxTDG1r^o}I-}ihTblEL-!Ji(&3-k@scx>R>BD3O=UBZH>-G9X=HC*B?!#gl z$5+U#9as5}f#(Wd1o|UND@O6oqp*KJ@1Fn#OkPCZB3F^lYyeN42czI zhQNHvp<<>%4*mVJZfEjq_TT@MuZjd?uy#Cz4v}>sQ#$_I$a)A4GK@asQG7iVV6unI zq?z;kc_)ttjdM(lY{2;a+?46&#$jtBj65uReCSwSJIVGsrkl~mY35k>`KR-XcU7K$-rHdh-L*n{9omU5U7Ds2_H%UX4e#eQzFN_DqE;Ih9Zf7a z^p};R1Cd?IEgLxx|F+;5JU%wV#^~QMB)!{uJ>ae4;)Akg#TmafF>&Ua!^8H8MS1+Y zH$CNX0#gkaPnU5OGZA#6{PmD}SnSw~WB0gLvry28()(-WTkt9OF`60LKWNpG(nT}U z@PSMLnMQ-KB^Pm{!<<2gwEliU>Y9m5x+fI{C+!uzYGsw}$tK{~O_0}Oj`l4p?+{_U zZJ_NyientIc}?fZ#nRyy$-^(^!uKkE_^d5z3p(TksxRMmDlW`#=oNu9J9%C+ovV0Z zS+V>8djtcb8&brrI2C;e_sjpXigiS8@B+43S>VfbgOi2iRJBI*A-4zVe* z8YwkriXHgcaM*k~nIr9%P%kMe0=JOYvZ%hZSp_thU3qv4*kMX*s79vTbbaX9N0JJs zI*-7rqg{S}POMIMcCb!&jaJd0$~2D{!jF!Q+phgtbuOGBK?~=B#7L))e+~k- zHQ28ih@Os9*)ncaxUJpX|JuRld6}a!X`;Jwy|UIF+If+_7&k#VwuP62t^jNx4)z*y0MQRHp zG4ev!X?B-Kv>daGSanRNF{o55XGBc;*Gh!8DpN-{!kO$2egrvO-5tXIS3oaSL{4rfjQdO6`QhsG3d(lu zY9lcyJ|9NtP}SNB-Ci3KOLu)@X`i1k-uIN!sB!kH_hN(h_n8Pt$XKn@w)~R9IxjnsNzs99UyKN*KIfT+r4Ru0#?mS?;dD@4MuX zt(G%}f1{6m^3}F5IEI>KG0;WL-@9GsW(yCYL8KkGBuXzO>=_E+& zCCMuX^;UTIp*oruN~3MrIzSyOuEG<* zr8wuE%)5a?4}$~T6?;+#_nH>z@o>kGYq#!r@J_6!)kp$L6ux62@Ab0|uZOt=&hlQ= zxUHl%kb!up$oJqD%I*R-?WfBr(eE6Q$XqY`;~M&?N!p3NyLcnP^y70ABqEQ&Jfrxg`WI7W z_1NUot~DMvWUf1d1LIm&(Pqdll%nx3)yJhX5i)$c3G!SsqoDb@7GYRM23g*jhy}B@ zCK8aIS|ZO}Mj2+@yQSidI37#5jCc#d9=N^t(SP8)aYn}Xpx#+gaC*;C0I|u<+};=K z!{;Rx-OWX((K-j`Z8X)&e}P%*2R06o`=l*TUfh8Z^!OOkM7xfEY!c&6&GQ(!bWk$)@xccG zvon3Oing-zu2|A9n9s<6e(;K_B|vLxfc`9sZkppsCwQ$iIY`5*9Y7R5C4Vhb`6oU? z$+kv~ngd!~*fY0~I>*Dviw8A9y^?`han|ebXVDUC%Bg_$c;6s z`X$xx^XZ}`WNy{Ax^cYgsH)L@kzky-o>PxA?U->lg#;pnDIoIk5toI9d{Ff3OQJ8q;7W73+!D^KD%y#NF|^ ze@F*bbsq3ZZUc|O*6XjtH2g2M2MsOD^qdxkEaCGZ9`qCGLGpE!)9SOgjLTaBb~c zqCutlBe+x_3Ub%29ta7wZh6E;x-9`c9+^4n+ZkKc@1I9qNi#aIh@{qDR2HH`jMeRVEeD(bEsiP&^_xxh<{ARm_qYVQU zK5xsWBJ9>o8CHL8t4k49MqTbIGdXgc%Y|Ne-6&9b$5Z8!r9UgY`u9lG%RH-!A3WCjy3Dr2&u)7)5$W+p03!p z2^MVOnEpWZ;OmBUnl3<9)0#rAy z--1)&DFNn$)-|$gWEzU=cL^@N=65tDOj*IIW^gOBbACaQ4iVph5(h0a&&d3xt+kn) zJ%}oj6SSU$7^Hfxu~+^1)hmIU38R&TN`sK{a39b{xz#Zlz%8BhCSGQP27OBh!(cI% z@S0)9p3|U~(r`h6!zW&wK-_A=*s39uNX-edHLk!7ef9K}YK)LGG&**BG&*M}^#Ek@ z>0K}wi+(RF(1&bGffrtfUz#K13!?6#zcc`CG){IxF z=cF|A-j4z2E~-KlOdoUe9sDu@uye1`m1FJ)@4DfrR{CaG(a&s7k$Fw)J; ztfLHGzD|igLYJMlw>wcg^vv}b@L!FBn#(7OjBddudRfn2BpNkW1?OS*Y}~O*{O}yD zq!e(ya$E^QIqcs^elv6H!7%#fbHHs#46l=*IjlraSGeMjVCJ9)$#5Hn>TMRl&yu=t zg8|L5{I(`lww+P)fiHXit`os-g9R98OeUF<)wx!~1y%;wpwAH?!_ zu^#;UqTF43*sp@V9UF0du>$3{L6p0Y zuxkPZZ|HX#@xTFa?DggWP6>vWNLsiZ+fZ1_{%dc$e7DTw^Xrr-b~iY42J5R=fs{a$ z+AoDUsw1N!2gwSJRE3YK!;{gBNh+f<7>O(mw{gbKufw8l3Ps|QQ}v#dpdzd@*XP@6 zHCRIEy5E(+1LFm;j2y?lZ|f?2I~**l=1~CpjdpE)5o>o&eTWlXW@lA z>zUs8S8HMSVD#E-fo2?q-4_I28ak#9IB%c-G3Xw6z;+qYa3T!)STTtIlB%y1ta=8&E|o6#(}X>ay$(!^ z4J)Pz`7knV6s#6b)R4>whAJ@DLN+hGG3)yK-)tIy*(;tL$3Jf4>xq!G330D50UaPf zxUgcPc{VTNoVJRX;Cub&gWWmf9|ZUNIB-MThr9FI9|hbBSLv7s#@W?*unQ=9NGKzM zJzF}eECVmUta)VkL+hfey4!GBkWPN3{^Adn4j3X*7FY8cW}-&lEYG9eK*|7fl<_TN zU*mnn^5k>Sz{^XS$utP?rNSiu;2X_dU|gpZS}Cc!$D5RC6$8*8t#@3o$$+ zZ;W8FXpT@BvHKcXq!+H3m$4(8U{xrK{Ay+VE&1tw|J}~XkwNx*yzE|*9L^eYcQZat zvRssQ*a$VNegS4=fA(qj??x4jG*OewaC_*=c{27O+&j8*?c=6gr zVhd-^Sa+y@l{nb^+^vwDC~RBy|G;o*UMsDf$SyfYXu8{&xD*(}IrUM%^Eo;t_=Js@kI5E> zT-m>N(#Zoa!`U)ijLLWyF9wr8=^DUa9-$pIkfZh#2b8P12+T9hT$`^hU-CR;q;MKK z`G~a8IbIIr?(0YB>UeAwfSAfYi_#5qL|yccWbJMnM-;vIW%fmKF$zI`j>F8sRQ>|! zbVNRC<&x5#(vs$2K!S%wTV$ti*kiyw)S=-=5eF&;FGUdQ*qZB*n1L}Wz4)^Y;b2}4 zw0Bof`kwtA7v?@mq$?ug+;iF%1Ah&x9o-&?3;wKgTDE(Xh86 zDyj=j-m&1w>#|;8?x++j@Ff^P@wzb{=lPxx%wv1pA$@z2Z87wr+^`b^;*7`LKO>Ld zJnNY9DR&@!E(AaUxJxUTLU)5{8WLLVc?(6S3|c3kk_bn*pIS>rm8GC@x-#BxS&6-~ zNQ=TasYy=6V45jiJSy%2j#{CBv>hMeVR-O#yU z3rxl$fuh{0$`#T2rMpKiL`!vl-xq6nWp+4%EsO?_ytDd>eTUPC1dnqLzcM830t#zK zgs!k{x?2pO?$yzlbjriHGaMo-5-Lx`fK9K!R0AuTc9LKh!K*Wo=v#i%3RSK++|6^r z%*|&N)C4NllbX{oq+5;tEgf-12^)GBZjNHBCGX;N@h%*u#$UbMc zcp5YEp9kH%$32)8%0545g81Qdm~-hlI6x?Dw*k~deGQ1G_KyP+D&(EHQuMRPcoLv*OX9bQSQhz@0L3p!Xa%ii+K(tWHr-DE8z6;w@2_VWygjgAT`Sxz1 z;%HZ{-NYkN!8%z1t;@*H9KDHNpmpO)C}6Fv6@^%!zvQpLM*=fLikejYC6m7y(XA&^ znU^W8U3;MA`Lziu#b{=z5$`B;ts0m#25vRH>Yr4BAI33_)Hm9PJ6mM;5s&ESsAVa{ ztzBc`M3F45IJa<>nsF{C3LjtKZZ0x%ROhs;nP&ezkh=yaWB)wN-yYD8}=K zBM3XCCMj6_=23}v{AhCv7GJCO5P2(GX^ zW8zOqEJTUyYYPI44yNJ)zDTbPf5v+S!stpS0lcX0h|qWX-Bz`;Q`?h)#sZNf3NOU6 zg;ja9@VNyDtKVzubI(U}{DF!mr~Di}B_N62^iGE))MlE&;KJl{YZIVtX9(gQfz(_a zl?XhvVWX=QNBW+=XVzLRnE8j9ug8JJ4`#yUP?kmjfsCVEEF!of6+<;VJfIC8V=;eT z5x=X5W=i=BzD7sfrr;{VBO6K%{Qw%DH&IL^9@~$WuL1O~Z|)HeA02=MX_a>}k1fFE zxm%JbLJp&s;A4INfNDM@%SV57KE+|i>slOvph7_bfSmSx_y2Cwc5I0L%}{G9`>yHB zjL#XNy4n*pT(Z1xrcVwa-{W-|rdi)o;5~baA^Tkx=*kq?97aq)yd4%PBT#4WTO@_L`A3{vVcZ(Z z$$dDdju)|Ucis0g;s(&5gn@hJaA&twmi1O!_H2kL)SWEgkOW|jMP!4mOUb>419M9P zKP_d$>MII-%Rwejj6a`$s6(syWUQGu(|fC269VrLnxV~9{NY&E_`T-D49bZxdx*Tp zsYAuNPJR#m9ZOaHQJGLnJCT=mDq=*btA!^q&15V)4oqwr6Tme*sP&OEl>39p$AC16 z1Vnm4R#XGPVDfwE+QUx zwRBGfewesCw?@R5HGEMP_cPM9M%w=1#$IRj=lT=ajfcHws%vtx|~vHDid>8 z1<}N-SuoIufO*{zQ)del5MytebFj*p^ zZp$SFQF0Y8-+Y6-MuYn%NyaAf?O92cC&$0v^LdzJXMdk7d`6Q#v@GXn<+~0k4z9<~iQ?@5KRji9j zDU}Ep6)#QF)XitS3QU%MiKnlg+Z**u&GdgwJ+k4x&V=qSRr*Y~K&-h3&!a#gm8&2ID0qNQEI`%#{$XRjh`J33N$XcoUChx`|} zB*iB0rT+hE$VcL@5|AHI;QxF;8GkKHON45S--18x6JZj#3A-RJikq1Ca!CBco~+c7 z0B3>^K8QlvfV?t{Ce3$FZns94MCvcqtI%G;T?^Fmqin4k&8k)j+dIgnlKIP|g(0IV z=n{#FEyY zCwe%L&6g&f|2i?f_EcB%qS`#cWBY-4)ODiQqui!pS^619D}xJ#Nb6_-4WBWYtfhn#P^nNm8fZQ*vujpXHM3=0U zO1LSzoZ~I46@{<8%3GyOq(ZRVYZTD5`xa;wp${|-6ZQ|`1F+PYh=wR6=PpY z1W6aAL3qaeuLDQ!Z)wyZs6kE&Td1Ci^_I;*%kJv+<3|{dp?eI@p! z1pw~?#`J)z>h8S5MD&kwBu=pkk~{3Q&l!Ks3JIDnrL*8fh!~}`Grr%V=2m zi~clgmjobaC=%^&YKCb5AAXSYQDV5Aj{soh)?|1m*%n) z$z$L*iiW{8_%D|AxPph;Z>;ffRC2ZD3^*3rvP&Dp8OB>}Y)V`F1#Z%&Sm68n*qN8c zFJdP>o`Mlc){NVdAx4JbwRe=TXF7%NQ{;yyZJ9?C-Cf}2l;iRzXZ2hUafhk_&4D)% zL{j3lNUmZVm9bI9A6q_zv2c}@{n`Z7AIsEb;6~ss}*>%L(Em&pxVDRXwt&J91 zniNvR;M=~B1-J24j`vX3J}()@|LNH!FwuXjTpW%&sra-;d_ zgGb~>Iyqv6+bAXQQVAH6FAuO#e+4_XM%ZG*I)?yGUv=k1AmR@68zf*toDFhA2DCl1 z5-bK)b(bTFWH90Tb!d!RR=aB)bxr0Q5%aKyO6w(ALnAvU45{bim4Kd)En>)~uZEf^-?3&|Q)g+J8 zb>WG8Cg@fQN}mmUAJuD+OYzyFMIWZeK81cTUg^T+97SEx7Xr}LD}E7 zv#wkrIQONfvzvnwZ7Ivxs9VT>L2Fq(t6&(vKPrLNdXDg)n`(<{;9Y;oC3~IUYYn#j z07WXsIP|ADpG8DkR{qGd5n(>jh-&v2pFC*Ljq%pk%MGAhZ^*^rRpduUbTD(NY7&~i zAkgx`M|>~Wh*zOEA8b_46}M{dLTKUa{VW+COqJ0Oe#s_JSPeetuV@e^8BWDXgZw_j zgcUXy7p??gz?j!)pzMvnV)Q$1Wvd^`IYFj}pGOI=6BgBfJa~C&k>3cEDtaS~El|Kq zOI~Rn*7C!`bOn2igzDVy8B2G(7NMp_a{w>1C`6lDRCzm{!Z4hrg^x7@k(9({T=F9Z z>Dp~1T7>C~&%p)rA9-NAOpU|x)#C~)6&-&VY0XcJxz+iF>HQ{3G1qlmm1Q%gMDAs( zO<|Aci(hrlA;kv}0)!u;+&Df#4_}?@I+@9un_OVI57tZr^~nItpz9ce)Gm7W57@(N zcU*|(o|`jlhBEhC*iu^&FM&o)=64_C`BTHB9n`E42V}uHgYQHu?YV`Ph7JsoI}nU3 zO4;f&RMRD3q1Wpq`(9(Y&b*5Rm=HmUWMV3FI*EbJTZUhspPL=(r|Qc?9%ReH7;*GC5gu?D>ASj}nYCG< zC-1NU{gsa7Ere&y3cs(Vsgbb<#hlUcDR;r0K^`{RMM6f$Z2H9eF$Qs$ly1WWPnJz1 zCyE9|Fh@lD(GMvQ?cskt{x!s$kNXva3Q@B^mTLFIn(Hr%T{+y|we1Wc^BBg}289+dTQ8zod+`?_B7ynzjM*P_w1FtN_s2 zWmFhbSs4f0o{2vOV~0BxqPKh|-jQK&@`&kn@S(IsKR=@Ea778=&4g5P#XF}q~3%IG?D+_IQ}J6T(&HT zpcy*|)p89(HU&7}@mdQ4PkXTsvgm5IUajdBW2MZ*QWXuan9;!uwJTQX@T)~6u}SB( zCUP2T9uBsfEq+(HO&2Kz`)+?bz3i+$p|33S9A_8=A)4js0RI@Q(+TL)-1&KC8*|tNP5AzFs9FuoS7f&qGA_w?j1B%re(WSWSnk1G__D zBLf-p^ty+wm9q zCZa?4EzGOHN-j{!&Ynb5TJkprcC%wVh=C2X5EDPYe{1q4gT?=b-J6Bk=5u;(;wBkZ zxQJeQN)8|GhNH9L51iLUl|!5SA&z(kL2o0cNq~Q6v*x{R973%`GmoA;c^UhjOBvQO zPn$k+zk~JS6V4IYm*&^&Rm|qhD%w6-3j-xh-3H`j&%75@)+JFq$!S{TyVrzh*c(;M zEsiq0ta*8;v&4+pvSPax_9EGdSfA?m97b7gGZ;Ae7p? zBmP-QZNXlp#|+aK8a2~`0ri+0j!!aqWB1ID35-q@Y9Je8;xtD-GY(0 zow`i~56ch9zcEU~->#S~uC6mHd^wmGqn{nX4!Bx+wPXdcnp?_U*sMR0?nZ%+fVem% zVC3kH_Hsg;_j-{QgzMlc>#MaW)&+0N+fO$xmvx6z6?R^)T8`3wbfwPJ4Urz)fC;Bh zQJTyY>R%w#)ubYs#eC}yYcWYrF~~Lh z#!%P54VUz*VNwk5(GsKED{{n3hP=rR5=02F{c})${tSL z$s|s*5Q<)dlYu!cb@!w}!)zZEiQ`ww~lJ#i@Jt!ic?$)K}vDAQYb-+ySqavP@EPg zxLYYM4aMEvf_sa5@!}MBB5!`rv)*sL-(OiPnRRF8X6D>;_St)16Lk>?2F=?Nd>gx8 z@LTL(0kq2H+e*K9yLh;7RdC%pG2R0Rvw_v0OCOW`$KU@Q62JCi)WJopE}jf_A#FgA zv_M^aKwJE!>uAzoo#+t~sD~bdH9!;|ZYOJ{Nmz0K37_cH3>^m-Ulzs80G%5k!DTtx z67VKrYLojJ3Nr|}J>Nwl(v?{^BPEfq3J$;+KR^=LRom07?wIf9=e5IHq;TLkSQdI>;hgs;WLYoXs@cUxxhLQbXgjeO zKi|ZW!6l@e_1RpW;Dq7c6qGq0Is!IhGT4+fy92CBm;7vhbppCkzn!0oaS zkISq=FJMiVbBDy^ACjY`%4ROJX1$ItHQyGTPMXgQ*_wg^7MI=TrbRbE1vX2E2u$RC zN9$C}k&BLZ25eaJU(W~x%Dla^A~#`}3M)|``$u}kb+9MARKkXfML@FJFr!g;OeJ}7 z#F$DIcS)2>rHpfgS)K{U2m1acxdy*fK+VI5kuOldqtO%9ftMBF<_Tx|;f)~V9Ih9D zJefLQcEX)_n}du^E)8RVg5_);Auk`7NSAx^Cl{?4?l$Y824$bAduvT{GujV|bz^2O zckLR;U92mA3Lzim=BD=yjCeJQV;|W|6dXDG*C>v1;h9|>8Lr%mJo26C}H*F-p3 zJ$aPNuZkyT-fl^`*Io5Ac}X_NJoO((X`Z0k|GuZ0XQ`QE9k-n@(M)87&sef4tb!QW z@qU(#Z%fE7K|0zq=U9T>smNqCqm>#ipYWm^g=lwK#z|)hF7rK3P_7xuGm$zGqpGru28GYxu^ak#ZH zGQy0|M;rb`M<|P5D2cXbr0$_v5bsxKobpg;iPctMT}DnOWR{=mWN4}hJvf%bf={=t zlOqY_p6VM=M`b^-5sz6?b+}?=N@)$lTJYSEW{=mivY53qHRfUkyO9w;3-j&|N6bB) zU0CT`3qMXWM?|Q{k#{fo&bMxOgkQWCWB2d6MP0d@3^Sq!)>6wE%m)jh3pyBgpCK(G z=X*U7bys7qCVAhJ#6r5Uyxq)XBTdmjpXMo@`f8{Xqv=b*tm=`@n2aAJkONb;gT-q1w%Ud~Ke^pLr!R?6sS23~8}4fzZwRNyEEIp;NG= zZU1MoT?Abr#E(~=+(B~>W8@&!um6$u_nKzDBMbedSek+oX4Y(BR~<$|?Y zzJva8tJW96DT{ZazvGtZgAw>-dNiu*BgpN&-nFcQmgKnQBqpB z-<4d)&*5E~!-No z@AU~4CaVLR3pm4nI?QZ0u~+YV6BVP4m7ASdtI%2ZY(UdaC@a)iwGLQQ4S+D#(#P_9M%_ z&9;M%9W*!X*J2X^kY%L>z>w2E^QLR#BEZtXN%~pEGAjp&VAU)i7$@D z;=qQsYibKijqyFvcdSr9IKea1>>%T#ig#f{B;0yenmh!MtRCx+FkSUMPaKTZnq*8> zBpZ%$k)v@+qc4Sx5uK+m_pRNy+{Qq7Rp`+C_-2XSP2hr~+R$xngn;!Pvlz8-xw7NS z7hQMXxU6;ix^R~Yz}9M+Yr%2Vm9K_Pf)wN(5y{`t;kK))2<5V}f>7I|qAL83D(!ax z;reguo;oBjIV-#HdtNOn0e&)-F=OWZXpOc9dj66L0KP zpJmIWlt%Xr1fnU^zFF1DJH}b=s}NH=6cy zPh6~VEQH4W6P-22YvS7}Q7&JBs5<^UHTi0frL1*2prAC5lZCLE25{wJnS}^oII=>; zfP<1vOfnO~Nc z9e;78CQE29fN@$Ph|lr-B~SMq9o`Et5?o&koQShiM^fokTiFd=PyW8Jm^%P_M!=xDJq0AZ91>67n`h!IqKZMv+JnXinW_c5E)Z*4GlveG1B6=Ro+b^ozpNU zdZTH443f7GbZp;pDaz>PcQ&9*AGrvLW7~0dN!meN@ZWm;vG>augshReU`|nYs({WO zmrUWCl-pnoIdU6a*iAo?a@1Enf$b55{&CMUDw8@_G;X_#=^TU@6!Ihir)03J-c5QFp=Q`br2 zpnpwJbZaokw;rcNJ(BP%2k}Tvv&In;k(6iM6T?)U$FCv(U7yA#c1qpZUgK#@J+Y9a8CvO&dtgM9f)eu3qgYI#U6 zXp@2N^=I%-06rj^(Ocey!bokKtLkpX=)Xfv{=Y*9FX*rW0@75UBUs!WXqVS8zQ6{M z_P1(Z8I(_rjyM3i$%G^=8ty@&cbkJ{9v1s^3bC<%xS$_tw@E|v5`k>XUGRlv^20p3 zKibVwBi5ek`~;O`frweOZw(^*Dy~qKqDO(O5Fi~cQP9ttk&JvFD-(EQhft#O60l=A zp$*-|688=2kg__(u8QmK55DoVr5;VzJW07B`SzJ4Vo7Ui?luW$viF)Tn)Na&g=ZEu zFSgMctUQ+Gf@SRtTsS=*K!08H5A%bfudQC55lUX;)kf^#)mY2sS8au)kuCx28s5XJ z!{rueI4XiPFx7nAVMhtR4u+{2&2H#_P*e)sHCjo6enD?{W#!1zR8_Wv6ymC`T0Z{Z zJpVoFXlR@eA#T+`&dSn&q1^c{UU)~}Mp|gVSode_Gc7pb;hbVj*3GMF~8U>sY^Jir<0{~%P9pL`Ai8)ZqFC_up1!JqLKm) ziza`-J~A^fU!_C77^|2MBZf`C3*;6)8S1)=4H>XMro41Er`VS?AEySd9-p&jC50S#R$S$WL*VzVm zR#*JspW~1HxEB&^gF$*M3w324&;v5P_Zq?!?i1~xq=CTHAMu%N_vdP-03gpaVNEIl z-qqEeH;os(O9s@j-oB3b1~k83~jc^Y^&TF9SOIz5n z6>*Ym3IRnKrU3(-SEnF@@u0BPvEg5JRFUHAAKKu7wyFk?hhw1h4l;OwEOZA9L4d>i z4-e|%{qXAxYO)?W;;H_a(?30qkTvI=2zWfOgJxVb)WhZUTsz?1T)a|RU&iah{)Wye zV41j$WAcu!;faiil_pF-=uxDax=%P=MU_wd6^yz|IpKZCH+`Hqx*FWf7!8DASB^Q7I=;toP2l|@zVnlge*;7?x8OMI!PM0z<3z31%8IOI*phfM6 z@3!v+jc|_`h<|>qb9U}@^D+57(?mqu*>JeN=k*qLsVqc2AW9Xo^?_*^q5w!N;mRAl z!5-V$4K*zlk{$N&iQ6z!H_`xgk*M`R9$lfL$awmCL+t1`#T1CrZtKbZUey;hiOTb0 zn^YmmP#HVmqRs5~EA5x6?TNaD*YzY8`PwuxS=19ZKDVA1bh}Dn&NG(NNuTo2sf?Xh zZAB0E5=e=Ko=Ms=19KMzbFq`^7@?STW#a>MlL5C=y_*jK@)YLSEQID;)Q!j0wKE+f zVSp|cMxJTWi7hlk9>GKnMoZDH-hWe*adrK-ylotKPT5?48Z4CwBZe%S-{6`xOdGCs z-cIEvN6O(@+vPcP`7vGapH)O5Z$q@2KdHCl#mQ8a!el|G)yrFL)S4J3^5{an4SEoP zscEu1C|J8#0;jbb*?nU?n=^QsgtsU(@ss!wCDkw&>A!woZ1+zPlUfkdhUD7=XpEQG z!aPNw>9lOAlVid;rWc%1Oz$XrCV;^cz7gEs$= z8ZWMhb*@fvT*e5?;9Up&Xz?Vee>XRy&(8_wSr_de?Ws6=vwKp^X)Sd7Zaoesj0PK$ zJU;NASl{44Uom4!4jBkApB3XcHbYfdKUw)*JPMC3xGkAJo9fS2<|{^2T2!LC0VCoz zG~0f(JWHWHqsWnyg=1R+UP06Di?^6w?9u*VrGxSI2;1Flr#lj0XxMGkfpxU(4#5u= z*Vu-M>%Z$Ai(J&zKZ2JSo;QuE-RoZ=y4|&v-vJ2jXLLC0KyKn6KG)Z~

#|;x31G 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

-?qL1>osNw%`Hmaqd{toe@< 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�MPi=DWv_To#wYj5K2x}#r0jq_+d z2nJSnA$sFA6+SyPr7ZT-jlDI3C;BsXd^;_y69H`R%JRQMLiP<31FyC)RU9TL44{i@Rs!625Q~IM& zu=+2#6TO#TEV_bu{7Ug6N--Pa6f$Ie!$`~4w6>dUm#2nT#&R(Ai>(y(xm`PwSn}Zi@av~MGrzpo)V-eHsnAe%c&sIY$ zmENH;?%C_usch6e6z=#A#8KaU_{2aHxx64Ff5_4vg(FbpU^iZTrkzA^(v3`labh@Iw?x_p_E;?pF06e6BKDHfsGf}u;qyu+gIh@Edo3g_c(d|q&p@x* zBQ6+KZStnG0?m^9%XcSd&6{F6%q2#O-@Hh}Po4RLQ7yoMbn#fw7;3E&B`U6l_#XXK zJ{KDLu9@s3&%A^0P4!cTuX3-kVP?Tv5*!+LITzsL1(d9n{z?*3;n7uB*6(#kfkWkw zExfW=%gNcO1H{BP?W^ZJj)`mFnfnf;M2#8yRRdia<*qJ7BCl-GwJU_?`ON#OsxA*+ zHKK_>8|K3AaK`$gpf{V7dfd$1K`Shc922zo7U;WT94|lT32gTmmm*KNEk+>7UxeE` zUb&S?cM=OTscG+uq1D1A2iyF3f!vwyNI=ttO6^#aW5~I6{r3ErWVss3^XzC}hT zQTk+h1{9vwlD?qqbA9QR*!wmHR&X1^6+J9O&A4~7oOV%3{SivIe(@OAIp4uR1{pSU zKmzttIlsa7{_4OhL8bggB_TNPSzv)2w;f;3!ACAS3&YlH66z&lMv99nOOZ7n?iq&C zS`vS^WRH-fbr9*fPyG3~f2Ux+DY2_)!d|yZ2&Q8+d?7ao-Z=&-rqsvIy1@tRNkLyZ z9%9x2vYMjUXs{YC5FbxjP>VuFRSClzALiB`q@(f<&VwHR6n>K!B#5f;j-PH;s`w5) zRbp$OS4z^9&yBf{LEXwt)t?%hL{J&-P}S>+Zs2|U@W4Qi^<~75`Ktb$9oK=%JgHT= zUpFKVCeOl;XM$(H06P$LHQGACVIfmAe7rDaWJ*{<%ldjacogDPcS`U4PG<7$Qs5nN$5c_blaHK3?m1 zgz6!$@~93@i|5sr+gVLQsUy>9R9~cNGbqEypbMXo$W!{?tX_|V9nyt@jI2LB+Tw-S zz2w8`5y)<+*vVDbP0tX`&9C_kd9poWin3Nrf#<%EcJA8BDQlL;ezi-7GBcjQ*= z<{;*lwomAj8)jg2XzuHRDcZW5ufqBw)M)8KpkB&@h{p&Mg@p$>>0<3-A zzvqDVF;QriL3qm<+JhP`4cq~``5D)oIw-;<=iVH)Qj<9hE1C{lIxd3Vg@&PQ%OH+{ z)TXHM`}7lr{pA;9@o!YA@<~XWiLs#HSdh%1@%pn6GobdeaLH4jK&47d1t}YI z#6CZfg8ghJFeT)iq%C`Fg~Jz*Ks)2@gF>!V*PF$pB2JMZ{Y+$;bKN-w(zZKFIe+&c7jEANB7|JGGf!-AAKUBpe^|-UmHuBZ07AA)JE9MD ze1<@60V?+ch_bHrV^zl8^0$(mAr@_88>WUdR@#tfI8}WvV?SB)5~HR>=s%X| zWZKkw&jrrbZ*Wh(R?e?#b`WkLd}neeiRH*c$|doIr(dm*kAGDj(UyfL9;kVuR(oq~ zrX3!vdu(8G-kCuIFDC+|^)ix`>uSeC1-+jF zxR*E%h$K*6`N(lz^U#3qSaK3od?%&q%n+T{_2UbCD?s8*`?1yYGp0v5KRgvyl&t}1 z9#!o#Sdi40&bPcD3@l>oqTuO8e%*|Y;u{q9WV|b8KbX-Q7)p@(UIXv_B{UC%ij_RRk-4CPvT!KF#!E1ItV58 zsh@?H)q=BM=$0ubSej&mCm}NFLNhpqmo9?SqC3G5bq;(OR_kjq491ziR6Vek{fdZ% zR^*8Rfc8%&JiXIX4Cjj6lW_o12+gyOu3B5kAXM;jD@@$qBbc6gJ$zW{FhxFL z*Rns#&TO+F)uHFnyjx%>LDTym6@{0H#rg40O z`!(vz*)RjXSy=%LGMbVBg1Wmk&9~v>1T$Zs4Z}yE{gcVU74jz#oK+Rl55CO2Wfg_} zTOf@ct0G}LXOL5m!4Hx_)=ewozT$H8R-!#k1gC-B8#y33OrWkbLh)DJJDHr+@%c|c z#L$vq`2<2t9gK)~APP|mZDX4CA`j8izwuzMi1UuuBE*Gu0!w6aqF*C^M4W6!pH4kx zp|^P`C0%orYuz15PCrkv0$H6OONf}*R8iWy?{t+YlF3tA{I0CSYRt+wm~FPgA1CJT zmqtwe0nh=Kr(4JG5WMB>$DT%H?}-fr5J_a&Ug-HYL$D{jVJ#41Tu&UxPDze7L&M9n zTRjdvjg&27c>%|#25Mv2S$c{Iun~{>1wBT*iC3wp)U@O8Kx|e+cLGVAVyM|o-G8h_ z6JpugR#Qe_+V57+_IbbqSUT|o@}kcvKJx8KtrT`|vj~GGN7mk(d=hRJM|*Z#z>Ccp z$g~UhbW@QS+Y(+#*uotHsHk4>%~^*hvIH=5{txLzI>U7S^Hym}# z5|~coLg;9{?B#;{2n}#LP=~Y9x%#jPe&!ki9|s`Y6EDHD5N#vv%g3-@U|F+M3WlbQ zzx#8pDe`P~DMme`Y~RDp^G{ei&r-)LVbUb=VQbV7@{j8SJFy|;3FN`LTKU`~6#Fsh z{PFT^)Ifnod?KozKR-b&t}0jsDR#Rq4Fl(;@BSfN9t2H#UWnAVVo3wV<-(pM;;)d~ zh>g<5t7Z!mu>Hr1U>G;cBT)T^vTYt1UrPqlqJKSmrt3`Hn-Q~9*@qD&XX1TajBOZ^ zq8LC#e4z^-zzGOEMt5#1EiT%s1eRryCXdxE3FKxL8d969Jsf&;LB)c?6MeA4jzS>w z=m!H;o4_P^wkol|8<_8znD|}~OpbFxpc`{_bIyp;Y_~@Z_%a&0duD$ro%Gt1eWMXm zRK@oayPycaWrLYdO1m@Yl_=H}Hj4)IQpk;S5g^V4q~v=9SnZ?`i8~#b35v4ZcfVAG zKn^lxRIL~O$A>D#>gSDVPM_gj=QUa;OCN7n8QgHq^LgwyuNdd&b#TRRt5np2+r6cb zI=ewku8qhSmf&jx*lQFPu?`rctB4aqVtV>gGmxnP%S`?WimDMoF~{h}(?FZeeo>|* zZKOXJ;u4!==J|Z?SynJ$3Kjb&D8v4&#AwLoM;#wZx*WU-I??aV(Wcp62|%Sez>F7$ zsTD^$Zu!rvFKd`^f3jo$qQlA#v!+M4@n7Md#iB!i(L&g7(1Cdz zRw9A}2r`Oo^M0%SmKA_<`xDj~C>z~LL{{>6+IV)dn@D)jl^S8o>l5KiO-=?=YRMS@YPSzg+g>Q zhKCu{IKt3z*Zgd9STW72bX8FgyuVWL{vLL3b7;)ckWCa^1x3ojx*VU#90Q0KGPR-I zi^1i?(SnHXc#cj(;G6Qgw^O(!WTs0mMHv-Lkp$7b00EA=bqX=axC{?=AWwWOR5!6_Ln;~0QiuB~ZbqV^U>9E03kEk^ z8eC{Y#gF(K-caFP1o;a4$ZJlMYMxRC&xap*vUIq&j(+dMJ-t&ScR-n^wPkfFz2HYX zEZ9(M>bz(Ps&_K0JWw=Ox%~FQyIZ@y)Pvq~S(G}q`9wp319j!?llg^Hj>wLBUzCX=Z}HjZO0qd-Si@!mJ67HsDB5 z`@o~=1Dnez;QF8u)Tv}eEoE>8C?R z6tW_=ZWEARjr`pK0YN8BgE#8Z=R7bYgur;zUCKMc-mZPA4WR1q%>o0|-QO#MbFA`WKVMEtiV0*Y^T0#=a!&55&I} zWxLmxX#vT0a&_OIV&6|kpk>O8lYWh}G}>pCn8HB@)cps6q~@0`B)F|8a+mReYMlU! zX5K`7TL3OK#L%)L{-!iSZKk$Ga&L;iiO+OBRVVh!M!d2#<{K(TmWtTkRbnGazPokV zU`>fH9)%_Zh-%*j(2J~pci4lsyo(iaIf*K5kFy;mG|+SBkPNa!??IwL|Vfct~`Kkg4N16+z;QBm6c<4a*f zR|xo0JpRX*g1!BjZUI45?SC9LW^240yuC%+uz8^$4%aWm_AOx*Zdf)%(#rvdCe7>~kV zOKCS$|Fyt~0Nf~G8N|7Ona7uZ%skKyNq|O%{L{!wHB87WDy@H= zRPa3%G<7%7t~tZngPy5WPyRJ5dbfq`IuC8Q>wxgQ=)|H>`Obnmrz z*$23ey(_JzIC2AKzDWYqn1BO@7;MVvl#$~rzBTq4jY+luIdNKN;%L|+Zee3H}C#doRO2>l0=)F5CRC8_Ksq>?b?zC18F1l#A5HRw`3e zv)k9ZOO2rSdQA#(38^0Ij9_s}N%H=1w^zD&ro$r0e<%1BKHwcvXZ8qu7I!av5T-9L z&c-unH2m*lcI#K5FE|mY#9RIG0mwF5GrA;_XvQbeu4>YUJav=12?Tg-(H`}DRe|t) z*_09}V)x@|YMa|(ie>*4_tONHp4>!Hn@qz5Onr_U*lR@B9;-#cn{9>G6*Bn2O7l1R z>Ngbx=3kw9p49<}eK37>y~}Lx^Vya5Zzjz5=$G$&@y*eDqj<_x9HSe6!f!|oXGBYe zq28O1Q~(BlJ&oa<1n4|kb5sreOwy*mfdV4|497*}j+AjXN_I{H3tF@(a0y-JKI`kG z@@XewdMZb{AF4OwC1p`|)eN|}-A1!c#z6|dkn_X$j?%%BPUh?~VyZ+!+-~}d; zyIe7?x%~sS%-xRH>P$w}qJI6x;_EQ`OeRrk^9@t=a#e8jt}5i9u5yH@u3TI^uqW{_ zY~4OnR}?M10<2>g3P4zdYyr%ixKQgumYZ6*Bq_x4Wv=6{?}9dW`{PCUe*GDCm-2ww z(^BX&5K8hEW+B>MGsp{l{~qa^`oUr~E(`3X&_AKn+43-oEnK3N1NmF*lPg$~9c-rE z*WidqHOb6k%242W_;~XBlStLZ36%I58m%&lrpnu5lZ2+bA(A)S3^;B9OeMj3_AfnP z0~pDJNq?5{#GZOI0YU^7)f<~&eGDsMXjc;qrsB61PNS{qBlgqleC%};Duo&?S&c_q zQ0XHP%*Y#rwCdT)HY(*+z^zck=8TY^vMh^F{EMeziuh# zB#wDD$&rrb-SZ&g!K$uv%R@$I?s7(jlzfuhDI;!C$7x23rN~QQxetED#1}vOtP#+V zLP5V>@W`d(dlnYn?o6ib2wcwZAq_*c8bFBF@35z35D9c%=wl`&Q}gyLlbn~iu#lV< z$TCjZSI2?W#-bS%%O$&b193!*W(t+QI@@$=M2B(~Lv|jW-BxMP4%KuWk)C>|BR})Z zE``VQ^@zCa`7Zt`8vQ{APhw&F1Ziwkn z!yq$d8(J_$f4AYigv=shW%1j9T!U4KbufouaPBOMtTF(0Xf%=7^{ms8KD=`ZtL%uU zbi0y9{%aL8@h2BQGH}+>VG%hnU}d{e8e}7g45HM@ZpA=eRF3Rg-f+$=xFmBaF5TtEs*f#4q@do z^?ZM{mSo5) zKMw?v2`E`}&Ks9J0<5?K=(D#+w(xxg*L%N!=hbEg6~@%E#|eO$k3Z=NtP}nG(%%c& zb6UFAdv?vXD16=lIyDzZQ3gomj*&daT~0wNC9g{4Gn)BAde^^}QpNe`k5esvU!}Y- z+tz-ZCKauArg=8e4$gFg<9h)`pcPOJs9V(jR{TuugcJjhmBF0HxiXOCwz-U754<6G zoyT@|^kpPk$afa|M*;Zn5o}vB+Bax8SabqHO;_; z2Ppz2t5e6~!&4NIk@Te~lwO#RHe)mTF%`?~PvF}Sv7 zOGrpy>eZmOQ7^9$3%o43+bDpVFG4XK9ak2BKmO0YmJ_GC6bxPxtLa=GZ7~UUe?dGc zKel;%AN=OUzz4$#bd|9sdLU+64xYwNjXNL=_*BY0G83G} z)`ja5!sCap`04O$T|b2!C0w44c#Aa8+cN(!HZ+@NtX&TT#XpE{d6p?zWD!*McI-=}XsHp~()?+2 zemJN0(biq_OblZLZ}64K!TQy~IyTK~+5E$oB&YD}s3zMn`a4A1wY+8$pneE#B#%h> z&40BD3r<8W$)K!O>rri6aG!R+l7@fBA3;N?n%WOLGT_ZGiXUm8ZdTWlaiw$O^nPep zBX6&KE`iJCaAl??^#J(lY$sP$-z7e;=`eiV0>DjllNHMw0*`ecU@>#y{W`HyBq@8# zX6DitZz5AJKT?gQdQu@XsI?6*{6!RJ=&HIIycO=SdCbDXmh}jX*UM8TNO0d7^4&KO9k_RlvjQ*=F()T31X6SDe5$R)qOQc~ z9wvjjp_`})*E-Keksxm6{0<7!5`j%`i3wd2WeWPs-bDSX7z}DkP84nzHbLK+3X()f zTmAG7gX(7cdg>sncYDApCAuKxGxjc z%+_0}8BB{z8GaXydk*t3%-Gbwk>{7LM&Q-HyX1=r+N9;FcXb`%hB-jlD7UZ8Ek?-x z!KG~Us9537G-cWcT+ew8nd1n{P>~RiNX$o_fSU{GAV(1ES$5kX5;hQ*cfOlmOV?z+ zs_r!@jdK6Nj$(BpwR?^{^64lv3m8=3x7vCvIQS#R({|AT8T-)avHui&Pu-kZqlg^a zzvrI+T9GmuJAGvd4PQVSJbli2%VLG+EHQ+tqTD8s3Rm1|p-e8iUf)J3o!u5Ur_W6~ zuR%+@Xeet<_Sp2-d;apkyA3vYn=j}q<#J(az(=&+{zUv1G33=%c$l{+J;Gaj^Y}`W zu{056U}TbH$8OD5WT|DKgHL4jTdO|VcX;D>Bp84(S%Ef@R#Udc79f5OeS~HUXxaRk zyHfn~&9i?LQ`RBicty@k+mr2Do#L1C8*gcV1(A(4H&a zIDT@I<9)R>J1M{&gxm_3H5ps=F|M%UVPE2vI=Zb4@Ec+XLqK+4N0{rUH z!pJUP_b=i&H@K3WvqQTSU_4vY2V@jZ!R<9j zNB$#i6XoX!2ahj0&v^)j7=NP`#`E9}llDfkJ~bGii5UAAeQk3tOPkC$HM{F!tejW= zxs&AV=%GxBg(HK6s|C&kB0)mU+1=gIb2@VsBPKW-{1dAT(tKlk6!whMwH-N_EOYhm2Uo2gmTJB6 z)9GJY87h6#7$-p~j%s+UQ*aag_mEj#AtH11{<=b1X2Oght#=MYO#b+azVzi34NfB> z_0KK&8qwHuufafX00h6CGViC6wqp`uao{nhMaMBJDO8gS{Jsas_05$Uetf(HJ_E+M zN2uCEI7tV8Sa}HrfdEF)UWdw~+x2a566z-l-1QgwpXhYu=rn7*+9iOJWH+!m_(LL| zF;P&VgOf7^)XQ>vnbQ8Odnh9cUNn^Z=tE)hLkbL?$Dg_{{IJ7fEF_R4CGg8x5eu$D zTCwO@r(q{2Kmj(PQUFW2(0roQ-N|kZ_F0xqahqq*#9VXA z+ZSl*LQz#s(CKaF?1BzJPi!QASJr$_T)S&%3`q?XH`NI6e(ya+v|!G{o}XF!EW-Qi zpI_!iLzWE`ZmW!K0PERLR%M@vn();V&!Vdt)!mWRSb3e^^9Z4O$4SCw5Ni!qSpF(Z zZ})NqpVGkV>tB8TmG-@-M5Zftkx?S4fup(cUkEJvzaX%xJs`Wj3q)n-WmniHuzLdB ze>tMr1O!mM)q5qH+dB)#TsC*-Gv>2#4GwfOoizV~XWl6TKH6etbar{{e(8B7JZHya)- zY|4W6^N6mnx$aFLMUL z>wJY(B`;HXHs$}{TwzZt-Mo+jnb;R@0L>fL!>jqr+Zm9rhsevYhUl(a0|1Y|4qc?}+7Y76Y8Fga* z`+e!${tG)y`ER=K|Dx?5wr_FUE_1QWP8r7k4gE>~AE7@aj0N(hY-k>-+9j``Nu5SE42WunHv@}u|Kgh zJ;+OBtYaZwYVa^dpC*2(;{v=~hq*tit0DYU9aYr_w%7o9^8N5+busEd$B=7>sDvj1 z3uQRT1?z2&R58V`*0JBmNX}UEu|B6>Q9J*(j9*wC#+mbR&21%T99EhDeya_LIEd_E8myekGfv@SdFKefF zqx~&B+?MvNa=9+*@%rZeJAh3} zL`M1tKTDa+Sob2+kB6dMjFtbzoPg;7zO>-l6K(9GieyQgWTJZcXb3rd9`B8TqB*bL zkPMlkSJ$%SLLEjGTFx|wrn8D@o6jY;xIQ_GDfzbZrgcV&(m~BhBHLhz?xT|_pjKto z@;->QSC5liknq?;-u_A~3&U6=(Dq|FRSFIdHOA9YPQZqzHzW_Z_GI9Br=jfzOiVjD zRJlCYzP0Bm$x_jec>Tnw0_Pb>6;XPe`*GY`&*XWk3MZoymAc*cKSIo>SEnq$i`PVb zwAPD?OA4IWwfpRO%0VGK#NsS+4Fn50$T=UK_5OkC;_9Sf&g@r!sz>CrOW^x@O4S0N z%QqsEcj813ytHq_DD2Thu;|UaMHlNo`I+BQrD*!IU$(({>C0#psBjVNDf)5w$T*wX zmNV+_S97#hOeyM8ABT%G3w1x8l6X}VAgRQ(!7C~}C1rUvQxRHAbz)>Gv5D@)b(Oiu z6fqs}Jr7TLCn0EV&{zM;x|V(E4stQvtIX!p81YL z-`S<8y&1id0znhdS-jTdRNI%)pD zcpd2r4VtFM5X`%-^bM38itdbPjIb_xf|HN0f{OAA?YXc7QH4BW5) z)iCS~=11R)h=Lg3aD9qhvCkHv>TY*w85JzL+*t`(wS>_o)Y;ssx^e#+(p*ba`w?YM zK$=3IkcOG8niZVygsCX&=|sK1enJC#bH%`;fL7wQI`t|(ud94Q_j>wRcj;ye;=C$I zP6<=!EOCZc>j`fCSsCj{oA|PPCY2&OUYH1r?Cq*-za-J_OZF@YIBS~z(k|+wz5Y$I z`nwY|hT`RH$1XGd@7D?(-ooC8EO%>-@5$_`dDO8(G!IGZU`DEipKNnourH;2L@_M4 zAZ70*8i?NO?Bu19;->p$-^--TtL4{x(zTYfJcdd_0;VJJQdwz57ZrYL2GOBQB(vWr z8s*J3`jMr~Gs{xdKK&%Cjl>#0EXs#}Ff`MV4Ck?X0}H1G@{>*Lx(HoDhnX*XTCP7| zK;N8-&pica&SxUXV5Ll&-u!EtTR-3@o{&-pYHxL^1Y7t~tw``gWAi`a^js{88M~QE zKQEKKi&j@pM>m%H&MRYauF2**f@?z}I~GwGWsoyd6vlmgz?ZbO@w=Q{j-D>RC;=O2 z6~7$c*88Xw|6vz7|9;e+83$6LXQMU3lezoj>@c!bv(Xf0JfhoXBe z^)D4;XMWOwy=)q6k=5|3fL_}G3q=3AZt1XH@3V?C;`3urlB(mESG8~_pw9Eb;@!Zb zJBcB!B0E{-)$SXCq6EAARU1SytE@Don_3UC3DhkRna}e|0qOB_Zo76nlc!?3ZJPm) zK31_xiG*jb8No-Qb9{!%A7+=)D4f$RSYo}szSdc&HDu@V;t6@dS-PSaUcs^6Pf#ua z{dO6|_-idrc9I4{E|)*uubWcTk<^@hV~7=9#IAM8iWRY(fWp8~rO5*qAKZ|Ah6S8O zlP7Od>0|yGDcMWE{pCrof8xmXfsdI5cLm4Kq{MGLB@Vp44ANeQGC=&Eg(!$uwe6*s zmfU^j{p?tTHzs>XAyRdz2>ptr#`n7Xo;mPZM_9jqweb|6e)WtTnJc^} zzIqv&X`&I-7|DG(6Q%@KH7#aQ{TUmf)z?2K;ypE2cQrZ!A@m&gwnHA7L+mbIn0R09 z>^Gr9d`|CQQS^m&(g!uK#eqm!289-P4i|aZA-4~;( zc{(SarJ_B>{Lu7`Td?)fw*8};`iPlwTMJ7~YD!7@PlrnH1nwm@G+#R-BXM~QE-q-gwW{c_Q+ zis^_E+Gz<3T{Kxh?Aw+6?rgM*{^_Kq_y`d=d%0gsn(ND(qAp>4y7G%(n5XwXm9CEkp&3<(McS0?%DK_$g#uIp28{Xid)tfGn-g7ejYw9!`b%tQO*p##*llas z51szSOW;VAbX6!1@qi`Fr4(|Xeyr8kb=(iF%=bc)O&$7eQ|uo)ouC{b{aN94{$je< z(V)C2%=Pd&s|f9dE%Smz0%!ae0_6d}8QIF{!(1YV-YQ zTW!r~754Sl@zy-|TJ_s+Pt<}pnA zK^G)E-+%7Sm4v;@AVw)Ln-SlG?kI$K;nDC7C;A*UR}pEL3fkLM52v~iRWC&#n3$z; zFS*|tx}Bgvtj*NE`>k|me#Ld%!3vg>i0T`M7B0G6 z;v9U9mn@*)UVkpg8eQ3wYB@4q!%vNnu&UcARXTO_Q)3s>x3n z?0*zmF(8hPWRCGZ-xKq2%Srfl#dWYvH0{Ttl3(O&McHycH+EtT2Y&$tzCwOYwI1&6 zHJDR=6;bnqj`sZJL)9mD3sCU+-TjWYYo~_Q#fVtPtvVeu^E>h^RVK?<6@&FRIgmN+ zr|6&Ehs*VmshMPo=mYPx()R=l$7`%DUQ$;Xzuhq3Hix^`>DBWJ$B({>LMXE6q^Lx3 zCx4fDoskoDgVrk^&39$^yK>Q-cG48CSwp*`n>NF-NHnZawC$GbtjG}~clo0hEr|Da zKoUw{nmpR^1#~G-aY7&od3-u2#cXx{XuisGp{E*c+KJHAU5RSmqM}cJ?&xZ+V`!>g zC?wzK=S1&OLEmCl0m-fA;KTP^mq+K14|>D*WL)$c#=}b4>A=$RpTl$BF%BJOqSU^u z-3s}w(Abbi+Xt>{*I(JvHT@x+_8Bxks3_`uK=U1}{`eEif+Y0uJnb0cB;I=&ZcwX| zuY-jBk3+{ypuYE4%j1tMo$`!v95pgq3idSbKmECNTI9a+;PWF7%rEWdDhSP4n&}hV zl878x8Zcacv=xse8Gj)2xNQPK@dUz0tS|p5FT$N0t}gV^Yrg!r2^@2gRVG99=eUz? zZZ*O+rRn-7*ZHwA>*1C3Yv#ZyhC2hUk0Lp&iTw*k3%HwRR$IZll(3h9!CWbzyp6p9i&fU>;S zPw^!$Cu|vHNz7f>&?MKH>L{N9r4&X_DX@8pxDQHWMA-rx3DG%!Auj?bj9AD94+XR3ONsE5%|yrj+t(1AA}I%)1p2`9pny!ayd zH^}Fn&2uueIF$z7x=~hI zx=XrYLAq-RX{B2M>F!!!ch6nFzt6qD`|q6DbKaTRnR(}Zo@d^HTn2!(86}C_Q%yTN zb8WrJ@$aRuWPJL$RZ{i%x>Uyv!GYpcc%e`NUtNbJfnBQ2E+pp@QzuxdUi1`RO4w|aj2#M zKX&a8f8J5Vl6GnM)jSc7P@0lE2CCjmgwZOwd-Xk>3m3c@qP4L++jTnpD<&h>ezqmf zMdPZgxr4CTi{)rCL&UnHQ^04p<;_Y{aS6s$BNU1ztMAWZIS$MA>1skbnjq_Ip!J7v zXEO`}^8O8tn~2(&SN31C^=KvaFwuLvHY}eSFlZx_l56t<)202q*(HB6sEc}XWBr-* z=!m4mn^%HjZ!mxPJwUhb{oG3niRBgeYn;jK$n?_zWHiXsh$oK5H4(p1^4orck-Bvhq_Y=?B(eMVg$JLmnx>jxR zr22>%(*AzgOY2t%P`mw&W%G#D2tHpD|I0$7w!et`5@5MV|6QxU${1^RwYPB- zS4;tyN~$5?I23oEF3_@2l%0`w98IC3C-%F%y>!7kPb}E70R!s^aZN23Hh_)E^Mv)? zAIz0hVKlY6=Cwye;#KG0lazqN9wpBn+zRmp<(Xjd%= zo{G#_QSUE=7?my2Ax$TNqdZ6`SPPG^LHHUt7l=iBCB3YhLOnPV#Jd^K#!0Tg29Hey zsr`vT6%;j*ig3*5C>hiQA)D${Zk{ZD8QWUM_YK~Pv;%kMZ5%4UqBrV?ykCniVGe#| z8p3Prcd8)skphdJ3Vu|3o|}W{w)9&!Is1zl-inTP7`-1zX_WI$+ zbpuX0cHvwwIW%@47OFxAxmZ^GmvLG7!2?Driq;?4uiDFV)2&fn={(yLcPe@BjaN&4 zbdUbv3*tp7o9U7q*SMj+s>XgFc-9_Th7IFt@kC&Gi+TQ~pw%f^x)>zCW*G=CuJATl zH+2S+|8lv}`ZL_HcocpZrfWwl=JLYd@_tZc1e3?_q*v0Q7AXouNGqQl>Z?85);d2~ zsWFhhMOR7Ep<`rZlFb@xyC{I z74sXdn7j7^b~_L+QlLWFjB|h8N%~c>P-_D^JUj_mdUt^+T!7hy`#((~{*2pM!ZN!V zX4}6^4rr2mRhrVOg0JSu_M?851o=%scatIkb`)#byNM?YN@uWm8A?dgZ+Ir>hpCa5 zq0ljGjv~!pSl?L9w7d=u6s51^^Cr!3{mxHJJK|`9X|-p=mEIcBD-NRcqW9Bz&>CO) z@5J+@uNU2j)%7;(c!yqSWMI5_O1RfbUGYLe6Axej3LpZ`5Z8RD>qFf3;*YvJ^nyG4 zB({R-K>@;Wm^IM1t;IP;kvkQDD=jmLdj76dT01&L;&&V1eIg~l0=u;LHQT)Fp67G| zGnG(5YDVHDl&{kY^>ggPkS}o{YCQ`>%5??-#mG>Y=eq=;WE(vF9pZl}p*m)C>(=Uh zNpXjBUddzzo->i!n#TS6>&$hq8%Zp7oy+HMw>O8# z$9sA%Un1kH_cmdjzfIx(s{)S4kP=5uq(8@yDeNwMbcX%Mhg?TrL5awgt>GguOPC{7 zQQA_;^)r{-*R(^k&ZOw6r>X_4binJ~7P6ZAu^5;8GxuCMz!#KSCL9c8-%30Yn#LlW zuJ>$+B&1xf@h0ro<;hYE@M5R(E_)r4Z)t@X9wfhzw?YVYx;#=qi7E~ldn@T}gM~rW zPguSx2Vc6KSznA6K$2h2@TXC~0g$wU^$aT#8kg0(xyV|r9QB<~e zT5Tn{pSf=zs(Pk})V7f*jg4s4apkD%<1{v8p_gX#R;VR^amLTStlV$KOg}7OSfhbz zpwq#PdmhtVB~`1<)$d^E%BX0U0Fj>ydf*%hZ2o<#!++~;leTUC{5x60e(XxN%T%1{ zh~*k$u9<@Zvt*PQ%m?pr=vxY624p#eZ=w4X% zb^PX*{5=IQ@l3Y4CHIEH^rxCmf!3N?Aj9V8q;NiyHFY#tv=BWO4fn5ayAyK@;5q<_ z-0I()27)iGk9-~ii%u&`aJhmB6i%#wIYM2~&BL(=t_#;Z^@&7iOB$02%R9BsU^WFeN%!9#qlOvwQN!;Pxi=jo?;Qii)yTYj5|KY}}wvVV3L zI$G0lh0))7@EcRVS0_Uy8z#W^!pm{4zWN12WPq8IR)TeX6?-ndGJZUNgexhdqo zK8t^Nu=OYCOm6F21YfK>bW{F`9j@)7*)#8_0?#Zd9(9$$(Wg>?YYKMocs$KrCl|j{ z@HsbX{@pV!o&I%U6@l1*RLoCbxHeQ-$VoJa^vUuob9y%jGfkIFw;@(2!)>5`?M9WR z>61&nK8Fp)VxiVvHP-f+Bxg)UEO^{9UC;WfH8Y3pF4f1M$?CyBcvgk!_&~CM0{idL zD7nwAD5zu)GgGKng@a(^ilMW_ON&r+{X^Ercm5PMEWds}q!g$sZ;7u8rYybD;V8!i z=qvuMWy5B+ly~XHe{Vn*XW$Ohw9j$qkkRwO@DQxU$dp+nyM*~l-vz6F z8d&_0=;l#gx6~*cYHJ@a9ac5zw~|G{bcAqT%Z#?9$0iAdoE|CM%$aofB^88f|5&EjPKZ~srLLrO zVk>uXp&(;3vu5%-BzGMpVjp@; zIEw99Bq*6TZ7i#7=V^4D_u!!8o8S+D2km8vhQqnuTHOBgp+C}!igJ%TY8{S}De?&?$O@ucc1 zF@0^{5%O6{f&ASQ0fEyG%ST2C*j+kXJw2$@UmyCcs?8YQ3g818i5#goHQa#NoYi8It}2HS}@is+PzPNez0aPV0OoCY+M4 zAsh#EkF^x;H$*v_fAze0ND)>>JA~&tvCBh{E&a?U<1!{qSXY4r(v*P>T!ufyp{BDM zZRlNA~vhUKp?N`*}FZb~p`#W4+eZ-1R-)S;l-*CpRncGgCx8^Hy&}a~fds zO}RdK0)qs-@h7_a6F8F_R_jB1Fe3vbeTYPnBXf}lASbwja}qZRbc5Suutb90>Us}` z%5L;saQbMgnS`JAZGnMS?gLYKR=Lmn6zkCb(V1*)yfJu0;ZXtKpC(lA^=Q6=h>qoQ$r}cZ-%*lzM9uLDfapMkEU?cu)4(^(7v0 z()?@T55eH24;V84%rN_(7q}{$WpdG%{jU`y)A;sDSfp3U=x%vVzztWl9}o&e_gmio z_M7s1fih(>wHeJipT|0{8vb&YQ_f>H4L=O}*W2B=;b=>R_L z5>+;1zmc1&OoQDeykUwCXTlhFK_}2QZ;w!@!-d0O9mLzsvTH@xb5puzZTLn$svqu!jYSwr zZB{?(IUs;Ug$sE3ApgQe_kImLi0UUZ!svtRB}*PBq%_h$+};d?~Mu}R*hvkxP22k#|3RC0xWxb=MY#JlMgQp zw7YzA%J%rVDAVRG`9{oJQe!lW#_ydh#IxyA0@-YJi9W$^-nADMLJ0R3@1L@DsLGz) z5@sxXv2>5h4Gt~XD6%{r8vq#%(%t62uSC>F$5kdAw<;Bp>={SpM&TN0%RyYjJdV7g zJ$U^v0vc*$87yyt2Nz`bR(6y}Ae*TW>DKD_GxSM4VpfD*d47FI>BgiQ3vi;m-OAwa zLP_l%W@E4TE1U$J*g671?bQibunr^i?I=8jkHm+=N+m&fnxi!f^UVH6*Su5ra7lhC zn=X9b6-_$Pb5i|J%c1;IHF|z?QVdAKKU@yENdChXF`e5AipH)vkm@_sVO}iGZthK^ z>w~C?(&!4?%0WT>9#URJvk72Rh`8DX@oExo=VW}Gi1mB@Mw@t)4s{R;*3HwIG`-J?%YNZD1FB@ z?B*B&a3YL*lT8u;#|aq34{qCPgKs)i33eiCotm=~bTTO+;CEvGcL=MF24bu+AF*HL z3eTw{;@W2T0U^EyNZOf=`!*m&)?D~8wOWjATq8nodcNj1vXG_mq{3i~=$9VBVM8@d zUnmEX;iHzwY-3XGVAfGclMUoAEpN&;{n;VHe zgL91u&*261rCXbAhQ;0hIC<=LJT)TbW_ajVZgT8OsNM&^F8LD`{_E4{daHX_XyqF^ zp>lCOgqPC)uf?8`Pt9crR>|Z&Zz?)RVQG|Z_M`hD__y3qI3qYA#|F{lapci*4(hrK zp1Nw7SGq||GZdddC5VsB-IomIrqH%s#}yYk5Wsm8tFj5F@1nmWKzpB;4%Bw6_)+lj z50}Tzc~000I|Xlx@BokJtG}Z)?&#WeyGB$;LtmI}gv@0Gm- z&|B~7_-tK7xZ@w>>&2S+7j>@HJ0nw|0ChiIFk6!GvR=oMQdp{l;hf|~zX7YFx4~vy zSKX?|A^AJ&HUJOMX9u=yXd*#qQYskNPYIm zNeu^c86bu;e9~B*uCvoFcULEOJr}hV`yY-9a4Xmu>L*dNj_Nxs<&A<^@9c)k-xis8K6!kW%MI z8R74nWveCNe5V#*0PPP|Qzr7>Tzi|Xi;CKzQ!80QEv3OKZ|E`S+G~L_FO1u1{}jllI?my`i-fujqy# z5=LuYUcKED-z?-8Z8HdSf*bBFZlp|g-k-6}Zw||p4SO~#tX`n-E8DDgzY!{oPpfnX zk&r>(n8pl*LcwacgeDh*Q$jYnd*ZvDwMa%7oYlyFDXPC=b^e;r_~O~#B1wB=DxJ-i z?X>1S`HEX8*AFLX`|7DK2Nlt9K_-lK@2>l5y^H34i$-E}4qonnLlkU)}9+ z912CdViR$|e<0$7=S=r4HSUAiqGReC(`TWl;fbWTCoArG9gum4Jdz38-H>B9jjaep z63Z(4m^;&HnAi1AT5vNpfD5^?ltDq0N;39atqW1vt>;!P75fJ1n0Ft;c5)TyzTo~B zIkG3VLSgYOXx01#*dkvgi+xe+;RiM(93AGtGYg0-COU|bLq|E)Tml~*24geZ%GtQM zP>>o_`93fHEB5d2-GN+>MQQ(gXw?7`hx%NO3(r0v+3y{@$!e2)?xU>HQK~0esrlLv zYw+}~2v5*yh#{EFyGi8gIfS?|I2Hhg;{g z;ozK*@LP)Y^Y|?z4WAK1@cbvWyP85M37)pZ-9S^!-}JT31uB}g`?rQ6ZDcp9M|T=r z?>eO>|9Hl}C-|P+^=P&5GoQy%uKfIQbvzw9a*MrXD@&uF1oY-Iyzi`I9ERLx$PMXzl$&k31nO6kn0V8nT1Z`my>FqcjvfXP}LUiXWX;QmYr+()U9hZZz@}rW^ zL~aN~4+DDp{0ySyx{!~)RafFZt<4qIGQCB3M=cBkkM zHXykY!74jHI^+p~mV3OBz@4uL+KU}lq@vBUF)77PNig6MgStZt!MZ~~{stT9&Hs_K z`gHnYPyfzsZ|P$G3(Qp3srSt+2B0gpb5y~fVdS2Pzj|HGztalg$o?#T&^8K(KJQ&t zb2ou|^EaKd@_UU#9-;+yi^ZQjFszB9Ohi7v@ykK_zhY^D;a9=GaBCg;k!F@41_Q31 zn1M)DnbN2YCgHW<{Fe@z-GK7TxRV|nG5B;9C+gi7%MnHh3Kg&RFt@wd zQoWtKMaLw44fV89wLo`N%w(64+AWDLyq+~j>>L)7R=$D8wU+L3UtgfFs9^mV3h>FY z6@5o-;X_^4oTbtm!+m28aV1`WD` zKXV{z;US?p5!&;Ho$_(GUdQLerw2Vg{S>Tq@+S9qlx;_#zt&t@Jx)#zWJjQ&*7)# zkQ|F|T24(0RyRLGJb;(=263x*7A!ZyM&5I9Wzrk+zI}Vi0-_%&DvNz(hd(Z6pnL^iZq^t&5$HM|uE-6PM?B7AdS zS_t4l6v#PmH41^GL-sz8Pv=`-q(1= zw#>-=jY2%)Af(LejfkKCLY~C|>CMZtxIX&Xmy*%51F&dV1`-86j$JJ$&finMHe*GmPRz*pwo8x8BUkcd1!jk1U<%OEz|k)~Wnx z*}?VjJkNT!w!~TL9OBM&F}D%>1fIG%AW=>%`k66{k$MytbC#aZ_GeP!#X9vG&7z)8 zifgu!s1U<<0$&Yu1)F%_7(TUnpJpMFauIIfCNYHMO^W`4fkPTdA7iB$Jg;*PChK-X z<3^C(-dHHaMk2^qyO8te>$>I&5%n0C*h&&R(ZD<^Tg6YaqhE18`Y=dZN4y@=iW9f$ zZe|iNWSklqO``hm!}Mj3by{EtR5cdyjpnK7Xmru&5 ziZ*34iZ_iq(6%{pRgAQ#RAo^m=!8p@KO0L3g;)aE&svMPF4H4gSwxjLr=A*Pvy47C zw0)B%+4Ot4)=|PfH+gbe6L`+o@ja|68zR1QD9HHC08MtKd!LUo5uRs1*juf{i2 zs(E}jziKvq_E|gAC>KyQLP6i|l5pZ#jk}8hDd!S1b1I#RUm1fD3#BIL}v)@4RVY4_fv~XBdBCT~)^m zQIz)s&jHf`@V5#AeC~Wp1#{Ifbr-(@SnukV!BffYDOI@hMv1X0D1I= zSUKI{d%u|XRWL)AT23fAp0uCb?62IJs8R72v~V4~QBk`aB2&_}6IKW*6CsDn)~cZ+ zxUQOQ?_;Y6CAD`RK??b|o^_)SuJgtQV-VsSi>JW;sGf%(rmt8rUVC+sGar1_22Y!Q zMjTr6pm^}n+k3g=SA;k>8?Opzk<|XD8kGKKqSOQ^NL+l{fbMVDDS6sxhksQe^e~ z1YOyYp}>r^bx zGl8g0nBfh^d0?^bTfPdNhQ$p+1KnSXhk*Pv&WJ2f5mcVaPkrmW`-$S?ZfYyZLSXcD z&C(~g^ja1G_+SfboLlkDbZ==`y#sP}x@b%vY?2F33s4`KHj3zQ%?iEIES4!?$rG~t z@sj}^AS679p`D(H(<~N>XVr2T_{xr~wzsL{IOn~?R{l%Bbos8(PB9C29&KVI(&~JL z|2~S}k?gbl9DR6Cgo)^ak&+fZSiCV3?M-0mY}eu66F@Hi#HsZhzmw`}=G znMXm_#`5PO@!)ft!ndQ%ZAh*HodYx}HAdit?lojhRiO-FB>1}?@Xhd>rqwnPA?zG0 zgOjS}p&P@k)LBV79wk^=>Z=E5RoI+@_6EuZ)2y6r0W60lVn*JYzEKrAnrGnjzo(8FFMSR7V9qH0e9G6_qJi88z*67a+~cJtLz7D zbcrZ*_V?zwPo);ZnH!MbjSzSE;2DH^2qFe29JOyPy$L@*e0EqT3&DDd@xh`l$MG20 z`_p2Wv>ASqO1YGO?9b{ns*Ks8*0Pdrq2$vXUUqNO{G7 zb3Ff;|6d%#kz%G6xl^n)O{^T`w$DLhD>$^)n@cQDEXdaH&aU(S6`L0- zGE*e4`?AkAyi3Zi+NmizVnW+m`Ejh}}5k zf!wcH(HK+YBhRdSUlsaZ6$aGSQmyAU!lB-(nRk@^u$1-n&#Y_-m1irCZN@JBi9?U1 z*Fc-EGg^w!bWM~r`6Y2}M(uwfo_*&cvvxw<5=)E+bkI{cf%W~AEhh$h{SQE>nXOus zP4Rv$(^?fcNrmhYE^C4yGoOW{!A4F~`C+`BW(l2fUl}HMsEBuv#9F z?3T2_RG?JPbMT|wc$*l+w?ol83(d3$g++(MCwtjO5B#Wsk|eOhu4?2H9t)qG5M zQ~N-Q5s&q{I~H0z_fGgPP7`{#@8i2VmtgFuG{R4M16J~}rrxqOu0t}^1LUDIT|j9& za)(FCBu5-Be*Oo2VI8w|DntqpbKja=&<V%D9CEPi|wsqV-j*M(S=-UJMzq!`1mV9O34&1Kk$ z7NgJPuCSb#BVYesMWY^Q@h@iE107mG*n;)vJb9;%N!wbVTlXoodTz#6^+Q`*K>HCW zO|IQJao*BKcN#8keB?X`(cA#8w;}!A*j63x?_*6NZF>_s*MLU@kR>xXeDPQ{b?0g4 zcTZG34lufO_9_pGu1g29d*8A`!~S*L2n-JS`XV-% zhw5qYD{6FNwgf=a62XZ)L1yX8O#&8xOV(xfu)nZ@q863%)@Uy48Jy%7qwo?nHD)(A z(4_Uq?wx&7^fu0$5%aXn4GE7=Kfg0374M4^$x?)5uCKz-gvOILBJJseu}0hNog`JK zRuBhiwYhz?xo2QR6b?KvPYL(6rk&Vg0CKYXp%3PxsV86tLDqe}B*HgM{ zYVaqU{oXLP5MtSP5QO*@_N(`KO6QmC$H3c*o#`Kau5?tzFg&2N0D<;yXR*`%DnVw_ zBT?pob|f2wCl3xc;e81TgABA)l{8nvC5AI1Qeq`*zs~SiS6_NXHf!y`YTb*onoot! z*L%Q;kHS{;D1k2V6Jxj2zrQ!bT5X2a=IyzxKR;-%GT~^x36OKzyAP|}@6hx^-_k${ z)+6{0m&y>Sr8Z;%XZwfYzdzA?e$nkr-)y}O?=45W#xT6&4 z4(>vKW*D(44H71ifAry<+8MRF05cJKnzE84_0^eua`s(0Wv?6Gb>*L_)j-)CgGc)0 z`+h~&4Gt-7o#q2k*`^ns9oC(6hqtv{wBlM-+4q$CVt!>b?Q0vh;KAcf!hk7&Jwv25 zv+}q_$vaKb2Hw1BcDnHO93p&^bgnkuSZ0|f@p1Es@8p2DQgt4J9*|RCJ-8oF3~#SW z2(=uKPs0y*T}1_VXgFeg#o_w}Q3Q}oNs7vu2*P0-1;1!J(?(<5#}eniBO^z`(aM`0 z*;cxKE@@_pU~B z>>g<9!kd)a8Q!nDpUC;VHIeUaCbF#Vin_@5JqbaqzPPzIVZZT$nC^g8L7$6hgyG?A z1%_Rnf3>*S3Sw;^{e~d!RKxs=WTwk6<2no4#A5CsEXU9`LT~N8OZ-Mx@b~9eLGH(&))r?F)1y!Ixix*n$NCf*TD1;gr@ZIkVWem-gPc&_bhjoV4jIXBj+s{e ztoun6AY{H-_hdcd+)hz*@96c0>fHlF$5at_rMEn@YOZBsJXD1GIs^hvgxdi|)V0XU2XeJKe{K9D3B{P+Y0lQbVqS|+1kgHbM39vl{fs0Hs+>vY=VyEkCHYbJHGK)y z!qJ$&q0Xg+q#`qrV#1Dgk<<23%dO^-G9V9p>~dK}h{weH2Y!DpKR&)Sh=j0W6LxB+ zMoSXnafl3acao2ck&GwmZlu$3x-E9!Z`B?fs(orc6hS=xKH%vNj_Zf^)uKtsG~zUg z7vvonz68lOPjkOum1(=ZT}>le1?|}kElUF2A~)Hb)NOPLZy&2B84u=iKGOSoyNwW0 z(3Oj$d4*uf5UACw%Dl(g>#OVVATt%xyTn__oz1^+)?(D~ zmuV5l+gs9Rm)mxOcZ+2v2|iy1aFGp}pfiegQlmo)wXd%U(dl-8)D<8Z^c3+ut1dDs zIq6*fW_+vtB0$$G!zcC-d`Zp!r`4e9=)O|I|MKa%1sD8GZ~GR{BrY^J*adqQNAI;^ zXp^**<^3q9a8_V{ORgElzG)4SaLLtz_vZ69Gh4*O$!>eC%8<{C5ejj&97%-OpBGmY zu^KtWH?g!Z)O%*6FCePNg=mnVz0H;SlqE6K{?HAq8fy&P)Qt~K?v4RzI+{1U=jnd)r#=6XbCRjK>#3YOU~*08pTWa&Ebf+duDh{);gkbZkZYg`=&JX;cWE(b<>q3g zPc1l!K4sWy?*&$RpF&?l8>0 z8(-~)p-H&3F@+GO+N=!0Sy0Y^*l;|xFfRGpUGEcQ3!2A*Le3YAZaNkAmY;=*!55lvl zT!U7LZ)W1HFbz7w9ef9dIBV10g~?o`xChPitxhJb3{>M~fP*8L$BO?}j~WaWVVv@J z3B{{->i~<8$>@y#NW8VmPR{kIzT?yK;AVzpb#K8KrCz!|4{KE`k&;X263U^*{opYd zL#OpJ%wllL9DUFQ>k00sS(OD#{RKu>oJZnzP}x}>ccqmCJQ0B8A-}&`0Lj*F@HOBz zCQ?IkqF@w`R&{C#8e=+5US=waJ;;z-p$ z0px1Fz)jgUo*s;)_FLZDtuD`ci+U9rS45dJ(jL^tUp*e$vlX?Myi2b4lF-FR@R1cd z$t-sTUPolr`(*qC`G4y$N2aMi_Ezz>UG}T>xf;33)%oV`d+Ch+#?ww((Wdu6!%7d3 z1P0B6XKl3{94-NT;30ixe~|Eo9g`g|^87iqo?&tuJ-_Bdj(0FTC6p7XCn%08h ze0KvDklQEfwPf!i0pB_#%9VVmtN7S~m6K@WN9ZOl&pRUc^^b3UAFK>0Q@m4E&uR~~ zoTOUVg{NMI%RF|Go2{Gf!qU(*3RsI{zth^KjffwJ#VZkW?a@MrQrls;OclXE4~f-{ zeXU4IWG#spmwy;()!MXhuXFcVqJ-JNl_35j|3@cDp9fRdY&WsD)&s%a2?NY-GhwiIlX`U+fKax#W$ocR zUv94??w-jurCPPw7<9Z@#4MlV6jpqaspoSqepq(L?&T6Us_P|1>?VmJ$Nj=t>hHK^ z_-gQ<)bBvcp(sk@b}2|#0odee+pq@>*`P2tlZF9)uE#1K(Z8+s&E6r$cR+>N!R7cP zKBW8ue2Q}s7rAn6RY@m50b}3c0mAj&ZTGjv;+u3v4G?2sXRBG4dwwIxhSw-8+Y81M z{W4GSB`uOU%WBMMIH2fa8Uf!KC%C+IIsc%&W5u;nqk&8>HgRrr* zdJtGttAs4i=~zUFc~0m7pVO_NK@YPSuT9f^ZX~AK=W1^|FcZqiIO2X@5tu`_@65nBulG-=BfK- zmlgel4i3kcv<^Pde;=vEnj0DLVxkJwnE6$nIIlEDVi@fxaQk}_R-+b*QDvEoMZM;f&=xGoM-utPaBNhYDmkQ!r#V9%W7RR zK=x^_N_JP@FRT{Z&@nSIwiHJ4moA*~e$i(Vv0#3*9J>c}T(2m8)SuhM=Q@h(eeyb5 zQ}A~eplXD$6a92t?t*284|%z~K}f4Ch1y-%{+QJZEYNDR4k@`@Iz!M3A2KPL@vb^J zg)eHtZh<`*OIQY%%!jVeVgkI;RR9`R+u`^V(;yIw#gjOzS96y=3w}fEw|O2&XeRxb z{PRZoH!6BK06np|4FKe7)vi8sZT{?+RGT+Xn;di%nWFu>$R6dgI&I$KY+pT@##RCP z)gKE*BT6BjrZca+fyxsZ9RX2$^a;r1MI|(ar7P z+L}DAx2mzwDPjD0bwg~_U@kjv(5Gt}-w3jMNuv^}Nwfld{L5E$mA3%+A*E?(woyg9 z`s4jN+e7_@+G{!*&rh{~=59XTnggaG*Q}@&)O>XhpEQlKg#RR;UWnMN2Ythi91;@T z-tUw$|NWl-{KAKx40>4sagIa#o%e&ux0s)G^Tj|+la%2Uy>p$h9 zSa^ig@^a&%Vjaa8$IMrLMeOB#fB8=Y*ljvmy=W1v4SrK1q@xg8tEhmazOC>4_9ZQ# zcl^Mzz>GLoVMbXO6!>-iP)}p)yUgs%s({o~Hc}2W?_2xXDaW1e8Q6(Ru#~$NrgXWR zYh02e&R#F!U;h&`bV271w0&J_z*382sV14T#r5yxoH#krzx^UXl;*3U`oCg2{<<2< zc%W(-dni2BsPKIwOVuXAv#aFU?e(rVs;Nf>+A4(W@)FVBqK5q5^z{p^BoI1UFXAB;(jPVLGIOM+FW6Q6M{vi;=uN<5viz!t)pTfS zTVSvqf+70?)_FtR>h@Q4t7ukteXOw6H9uTD@p!LY!|AA%2v6o_ZDIi}OrEFeu^4ev&CDGhdC_wxy%j+P(g>cTH4(%?O(f*W-g!cmlDV_X z-WKYo;R}sk`IRSMKDlHilJ}SngmU~*-!etk&l%A9mtI#NwBg+ZAl00XI$v9TV)%fd zINoh@L}70>I)Hh_RgXcx`#LJ!Z$9wuPek~S)aZ%A35VeAKm5^uPA2#~6Ruhe;ej}V>*uys`2qWnj=LYNDyye;>DX`LOiF7KO5fvH@LLF& z0qHV9=W5%%MEOgc*r_fpz~Q$sT(MXFwxr0?N9Pq-{$+L&-D*$=}OD z_{!+K$-2qW%P#tsho=QpQxad)&t9n!N{0Uv_n!4r48FW{b2GxKdgjwW=SSDKp=xwF ze!h;2?9P%eHD0GH{ysF^sQiUAEU zuRH(HONG1V?@#2fChg#N$&7A={xLO$+e`9zb)QBU5DmgOu~E3D4-vw#DC3Aii2D|< zk&aX>75vTf16Ti({_{tFoIR)ZPb^Dks$D=cu;Eb=M2gAW*yZ4i$#2{Y5ZZrZDgy&qqI*a!Q$mkhkb8m|L_J4 zZfQ0_ZV@-@Q6YL|20&bGqi%td_mv3?tnseBj3oAH-KWFUb-resr=3)TByloGFh`u% zG8e4t`aoXh`->s}QyJLk_Gb!jtuxMG-ek^g2t`^SI1&z%xfNJF>Re6HbiIrlpRW;c zF#Du?C@;o&4#77C+Ue5zKw@z0zwOdh*_P*fmWGqe9a%Z#tuPBD>!w|cZY0{zRgN91 z5O(2M>L8N|SffAB4; z6~&%dJ;AdxUMAIeo7N1p^|)_kX_ty>JJ?1ute~~vIRE|;if1tKSm4SeDvXloD&VGN zdPmY!nRCN=5)JlGg60p0k4l*SIb5;?vP39%{q@WsZI}A1idk9=jN(LnZSTCUt`8|KD3z47(NmnGK zwNMX8QH|{H>eICh`0VhIKr9QuY=s5ANB z7qx1hr>D;0XU-brBHM8%jB?I!yy!qlH*7MqfIrTrE&ikXO0M`W`74b-@M27AQAxI( z{<>%=tlf<{7Uh~Bxv_PN2QkhOKIcb5O+~yojpOi!A$&WTdTe*Xu_VW&XgC*FJf*8> zgZHGj&9>)vjl4VQdB3%Y^*&?O-3Qz_xRO1wN9GZ)1|3!hKdZ$USZH{{;e zATf1W@p+49hn8j2G=GM#M3Efp5H5si{P?K!1;MAi8frX$)2a6Em5y!kwu=L7z1RLv z$O}O+{awZbH-o*uX}B|aV__ulx^-W4F0)Y|sgd1xlp>eeSSzdXBGviP-UI!65GFzo z(_qFl80UR#ha%n4ZK%;C@B+ENX0G?ra`kg4o_1fU*)ue7toJGh%3V5z9M`Fl&8oI1s96cT>jt?%Ls8}W04$2s`3yxi}y{TUIz0b z38mA2rGFnkUWJtOsr$R9gsG(6%AG;_0l7k3VG`w7h58v_FNKVzqwYBRXlj!4hhz50 zw?2{SAh2d#GFVtNCg7j0I*{p|2I@zEJN#mIl^@N}ic)SPN|_&^rq83U63r&oaXMwGJJ@*1U|{ui-v&zNM5~ ztAIGzwOGTdAPwVrX*drRzQ$K>nH%_6R{)k*=hs>mIeGbV9HhlaX)b|9psm9GnB7ni z^?!JK&uF;X_wPH=yA&ll5k!v~Ax!jWL5waD(R(KZL)7S92!`mR_aICVUGy%9-g_To z_Oo5r@Atp&b+7fjc-Fetv-TUa?b+u(&)H`?j^pz^f{@8s^@d$c+QVv55NTkJ-ik=h z8NJLlZ)_Nr1EV_}M`k~jk;bAN@k&Ky%Od#)r>!Iq-N0L(A0-<=I%ucHZk*)&_>Ov5 zTJO8Q6foy)Jo5HCe|SpKto(u)CSP#x=j2ffH~RhGS#XmiDWJQzcP+J-D2^|Y=|SucQ`>Vv48WRQ)=;?dFi=A6>UDEhq9 zHC><#evC_heYO8nH=?TZ+weR_1>fnUJcroR%7ld!yP@D9Y%T^L!>CBd6k?}`ajjh5 z*gdLQOyPv-th8h@Wjinh{$cDo{Qm6X^^#-v;MG9VWC;-Icj}mHN;-3?*-(DY<^D`U zot_z=tVQ2X>>$NO&;wc|c0kia=M0~Sas@~icIn1k&R#Sbhb{Yq4y$411?)?w#a+#v z$h7naDSo|{2Qki}lXquC{j?9k)&BNgv2J?6gwdC}k#Q5fT zLW6T)lcu+K8ZkhDYD00^{f5$P9ddK3ypj%uYj8)$ka(hw+xlsCiv5PsXMWTBJJ-vPSL(18f(95GkEn;J5IOv0V4WwaRMl<5Vi|6! z#YOquvSd}ZrVZ2tNP8h@Eu$lkDRUQ*d@TTCk;m|rgu;6WwhrLMy$)c;N&A>COlq@> z=``w+yZdKkyBn*z#|K2E*q7vl&d+HBc?i)5)(>EO|JGte)WdZo;~S zK8uA9`Xl~6Sk_umXDNI_5!>H-O`RO|z{@*T*0FE5==2P@7F^``GRd>A zZb(?j7NtMi1=e4DkUsp)2!p1msx+q?0Z=AWEdNbLFz9~Dr5fF!aZ1VqZPwW@Y?Gnf z1@T$$b>pu^umaE?aMe}Dk6|KXxy0u(J4Eg=er*%P?0-Q5N5S!htG6GcjMw1i7&S*~ z-khFOPKUZHhtJLJ<^ZAs86K$W7|_#`pbiz3}>lC56P1hd^uz?rlDB*BgPc zH@<4R=w~&v`_P=0i>%87oEb?H7P>2cwl@!H+YtjPu3YFj$Mx5#%|{StlM5_n5liAu zxEN}pi|KKi?{>Kfy6?mhYuOmz(*yBZ@G%-5hVF8(({Tr(ER zf=!b7G8m&IYHiSAlz?F;ToBWCr>=Fs{LfS`+O#VTc5zYeYXu3y*0WXQjhcU?%5b#D ze{B3ROG(fi?X|S5e!`m{AM>*=A7_9?dO+Y)YwdK&o`D3jehGqfcdAVbH5FA>i;Bmt@Sun=(hR8{YU(TUut>^ z@?#?(2W6;E`rJskQCt5l`Q)eP4|*1azR*-4RX(IP?iao;%NDw|9cWbpqji2+2g(9` zIU}dt9{lGy>g&Pir*X<^-S_ok@8(uA@*XJ*8=_!JlYU3pb2?^C9{Rct9fYOXOJK(A z){7idO{*&0Y?5*JpDb#(dFgo2U$WV$z#W`KJ|?5`h|Ptmk_Q*;{NG3CEc*) zgeYXsco4~OZ{*m#a*_^l)L8XV7dmxYI6msy9{ z5$EIOn8Tyv7YNcZS`!Y+sBdp`HBp)(iBvF>il{oVyj0<8Dixkvw&nv1K|OG4u(gmy z271$fXDo)1G<8Uo!4EVoC{V}hon1(pjL_;uv`6}Ar)r$)as4sG0hsLrC@~F|XHvur zNbD29kq<@fb@(Tt{XO*fqMb=O<3mHVeDgRBycTBL$&{Sa+x+>k9Q44#cTt`qEhp#u z=n=S7>w)ah%7_xxZs7%tS|Kq!eAxI7lm^H@L+*W5Gm{5;(Z&6coCSBt4(3r%2QZ>+ z)6%xwQ1ap^@f;besAm!&EM`LL(zgl?sN|OMq|uJGf9R#pwevIb!*lUL(K~mU>pwyE z3k}Z7i1pJb_sp@|3F`)=he`;aY~w_UB=6RE1jR5|qT}*u^aXMT`qom&?Wrk8rL*PZ z$_{j$DKCrP7H&~qe|5ex^kb(+I4M%XnPH(hNN0w;BHM@70e^^qes< zOWh}qDSOwe?J7EED8)Py98HP4=PVXNT})f75!wBzDNUcAO%E%^&3gQY!p}e1KS@&T zz0Udml?zt5HwKexr4mj{4d9>#$g>j<)lVO7MOwc)W$=3{*IbkjruqZIuN%Hm09tFX zAzbZHK};b$5{ds{_7~Xck_;?<{I0u5F+gW9Q)E?jM40NY60(6QlESubF!-WhiB(=` ze2-2B?SeOENG1KJ{Qf3kGXW)c@T1D!Z;^zH_2oMLsA*76yQu#C{GzMMaK^C%RJzC| z5(pQ5sYza4=o9v2HHaCstVziOs@5lJ_j96fe>(%!Y-hUqh2L5hK?r}T?gN9ZwNF8! z8346gy0obTVp&#MO}zhk0=1K1yLesjMJ3l}T7v|}?Qoc@`zH+>MswiR0JVg@1|q22#bq{vE-*jxl=5MN$3Ow>NmX z6)vtENT1Vst-S!@@uL3)kGt00bx6S7{NLd5l~imH9?$(>@c8d(h3{%qxs(5e$9dg3 zJ+ytDboUT4&*@CXJpP_Mp(45!O!+7Iu&avMmh1VRS?_3CCsXe6aJs0*jWNkNx;keA z?zb7^skOQCn=&nJSG^+2>|th>3Ec_%$W{Z`4zxM`H$*+}>yPz4Scw0HrPp?PX<47P z-L#alHFyCrfJayZX5`%d2a&($0G^`zUhkqL_wP0TuCr4>keF>K+r`d=-8Ot#Qb8OpG#p1Rf6w09Rmm1Sg| zE?6e%i8?g4{g_Awmlbp=@1=23j|#jELQR1x0R=nYG##qb#_ozqAH(g}VSi4(wzn;0 zRGlMxdphm~Q{5S7&cD}Pz2X#H$hMSNjRYMaC)QqvKRFNUJ*GPE8D!SOj=PwCYtsQx zxnIsA#lJ5Kgh9HV5)GFk^C=9P(n2Z-3vIe`b^|eCIMC;EE#} z12fO&TB-G}HaVl-tSO|paE*6>ArvHEbcn%k8T4N)2fox4(EsM=J;QNmcBje)bHIfz zdMb~Bk|XqoAy4nqsywN(H-r7r6bS+42I{dC>s6Q4bH;=Ezhlc2i4FpfP&mJH0TrYB z&N{8<)9(RPnV_?6$qYA zkcvjc;Q0g-aei4c(#V$PdeefqMZxj>$Dr)`iM}jP{arWJtm^?4nyNw#3-GDb%{AvZ zQ3Y$+ou*W|@u?P9qdBl2s*+(6LWbrGsE64e@e=7T-*bWjG-z9T0oH)FgYN1(GwXZ6AN z#P<#6`fxOBzri9z$|cb1rE>Gj!V9KzNWm>pq?1uQKiS0-k?ywX;=^oGCJ28>L5L{ZEo*@(e zL(Zf1+(uB~rW%Zm{fD8Bp`FB0EdVqn)dwm*zacI=Am1BdOK1ouIT@R{Bd4_TFG5|{ zYwW4b+kgj(?BDtO`vJ@?Kp9_ft*6h4#jXwDqQP%_?zmWfKk#P1GZZR%3{Ravs+T>N zVf;G>?Vy=gKnAwa<2z;7%U9?nC?P6~a6anoccSFh*1=(YT7(68~$`=Lf}j zH!a^OXkc^mA@3F46;j(@Z38b3fC^=QYN6|-p690tf^0q*pxsZY;^!+=L z+oN_)IoINSQj+C=g7j$M-H>J{IqO zd5_ZUQ*)lu9Sv!V@R6ag7Ga^R^tywBl1qw9>g!p?GtVME=;8+aYo4K1qyz}@a;(9i z)7N=Y?3;k<1;nz{WD&BwJm}U3Z$gm4KXO5<#WCJIhdD>6?4?+PZQzC)t_G=Lw-o0^ z^2^5Zss2MyTp!g_8s_*>ygFWYT~9 zI%|&zKoMs*xnCb}BGZQbb_$n-#}-W~`v+qB z7&ygSk45tA7gEw8nliB}iJEapE{2Z3X}_L?vGoo_3q24Wp}G$AF|yHYig%D6Oon>} zMUHzw?NxxBx4auaCcA$qdsAbKJf=l4K+ivx@e0`n zabtE5Z^0d&D!4OQpBF8Mfq#c*HS~L91+)Dc-BorFJ9@HY@F%jiX^|Y zhU96WkQ=Z{SR;`Tt}AhmN#W-)W3W6kjOnS_?m?keeOf*W>tUw)A&fngIiAB7C}>f1 z<-Tj{#~Q6fnc;!R$9k?NgxkzoR%XR>A28Z~IZ!|d;)zbKxG@-p>jB4XF}WRepEUkv zJ((}j*wE(npE1jRC^M3V7nJ$H@DhXN*^)qUir?MX(-*w|Zuu(;`!oB0T1;S);TXX` zn!$Zz%d(j4*SE%_3xbO`pz6BlEoC{vk2yTcqYj8(r z{H(}db`r%nJ;%tWO2HBbV-QE4ye9)*BVr_?Vi&$Yb13ox`;?Dz4mR}5aH?~%k$HQvS|Gz$*q;Zep3Fk|y3(xS6NXNKr7oE0UI z{WGic{&V;CLj0dE1qYslD@QksU=9zqw8+5{Z%ImA-rCJYJfKZu@-%x2Qu5wn9U?VY z^uTi?C3(-fM!!#Az4ur_42wlw@-2$#({#%Jd*F4QRQZ?EWLE1i?mmqD&RLuUVhs^eyUD+3yUN_K1($afp(i z?M*;IW3D4HV0^;=ebme?m6Pg<8`EW>&;dw^pdCfA)}wDbT_w_*NX~$?6tp;fp5uVA zJXk=B)Hq@WOnIl6^lD@Cr;LKP_b1wS-enQ0U$R1T5zA^6P90Js#wBuQ{_l+`-> zD#z2&gc>)|YZ6&BsV*CWR>KgUBZrSyO=Hvu!LOu}SnasK{D$#gs5%)@y-G@stNm0; z!v|3i)ndqp@Jb|bXrwz&}ATE3_P z+wcCJeLH$yG+$oz5D9MgSvIkmxk8q!oDemUC6so*9|(Y3U<~CoF*~Sud%;vFQxlrT z5%p^Hpw=pCimeD5Alw)C0)&hB3(}IU?j>sJF22Z-CZnSic#iTU*(-b>fgN0z@q~#l z{a`B9AxOrEL+$7Ex7U1ZZJd*jJXL~?l5ihe%Gj7K{+L&Mu8v5)X<_Q?ubfxQ=38o> z&<1<&4N;YCdjQ9V)Md(LtWWvyhg`dNT4*pVUXHKyUl6Gv1fAl>v0&HuwsRm>m4*rha?Paysb}h9Y}A{33j=jV8p3K3RGUo=BrH! zm7`D70Q*sp60N;{oS+KY*i`G=b@14T-#F4j|C#7%T?Ds@GO%8yVg0=46i7@^k1H$V zyF^pBWDy-fZIKIRf8SQuEGW1gQ^j^B7=h*kU0=T&kNF-koM_p&5+rFF2KyFwi-Dxd z$>P;)^|j*c{G(NJo@v()8%nfzW=%E1XA;4oNw41r75#7g(#LEoI~^AGgYtF)!cTG6 zc6D|r1rth)O;P7U_+buZE*Z?x!kK4+DLG1bAwnC>L&_yXlz%hblj0#Nz_bP?S-kJ|1F;*znQF4k#IS@p_S^>@`7SGc@EaTW zQ1E62a&+Dq;pXAqN8NJZmHKy`k}mTbEY`genM-ryaKg6#LIw!Qb80T!i1-#A`E+pw$-GJ>1NOe3 zNR3bCV^1r3XI`H&5U}?D`1<$1;L!7vMpyo4LDtSno-(($1H&c|ZA`?fMyjn_@q9&D z_i}e1!QRx!;J|G5Z`nD!Kwaz=!LfB8Vp&M-)9<3H9*!yMuy_3rIdnD-sa4;_uQuOJ zypXZ!z)0U0wE9V%sRnw(ZCQ%Vi5$DU^ptYXAER@Iv=yW^?(*GCd7lqqhSLj01WUvzegP~2?YXkPa!wR?^NpupVbqIn z9A(tk?T*P$`ut50ePq~PPjsVJonA(}e##fl5TF2%(-?^FE&lNFjvsj@dfz`o^3itPiQ;B+7j*n8xpkhq>#!g}l^R;YMH6-gP&kJ|zl8nKKiLB`4qF zATqg`R483=KR3$$Zq+(*RQN9#VpS=Pp)}5w{8rAf1*?k3!at|*dWrbKr_Z+)sZ;q( zQqzHGMhf#3)DWs??7x!SAEh72#dF()_2%eHDZT#sDPI?O^=y@5b8|15Kf^saGCJBJ zykTO&Km!FiHJ>kdmi|j0?N|xc-HQD8SsahK*3bzGspf2}#*dBw*6o@iVLi#NUk4V= zB+b#YKMu>~y?F_G$KnX=<%jRMsX5mQ^t=^558wbf6Yqx`xlpC zG0i>qIp#+nofY;KM`8&|KS!iz52poRR(5vCmx{yc78g1VHx_s5T5@X$;8nTTs}S9fMfmc3>!nDSc18HoG$!p{{`#y6WA zi#sCReX5A$rL+Is;opDkn!w6FO_z81D{~@7X-og!%WzaLO;yyf2-Ih8T2~<<$a6Vn z@(d?c(nqFJozVE z(G~1y8d+TL1!V1ZV8C_#rP)nzg)~h#0B<-P%x4gt`fe&puU)y6aeVptx@?r>vqCmS z>00zZiD>4;F&-!UpiD}D(x9Ms!x-yNBhOF5wR@;wh-64GT=*qxTFeoC_7X|3aA$jT zvHvk1Co%7&%Q61FO=8%IX&jPt1KI#;n%lrqGQAQbBmYJttS0Y5ub%p7XiRF=!vMaTA-9(JXdEYyOQ$v3}yA^D>7_&YZhu&Ya=EK`cs8M8HkbefEx zIw-gv&aLI)NHE3Bypjyzw;y-7kIJWDW%8PK4MQ$scj~|0>&){0({Ky4ImZEp^C+Fv zr%#yI(_N$OroOk1#9yREN_r%yh;V?+{FyP@STGA`*x(K~reFycPcCq{;h11#^*;fw zdq)2JNBl>FYYSyGv|yCuOEWV3rGKMtLnCkA6Zf(#u>ntJ#8}LhuB;2>7=CJ>yPBBmJ9hrSD zf)z6%J7|A_&Uo!3F!O&Vw2{c8z?>pGs4klr85Lv+f<<3}E5pG4=D-nsHZXKf;mLToZtre$fl1$;d#TWF zEMENg&ksw+)(-!Za|NhAXZQDJ=t#9%C?3CRd0E9~x?J&~V!G8|z@nDzF4mVXk3>}} zQq2T=9$}~cP{r#1;l-ayEf~-vD3tm_kno9EY=z#@yJ{Rke|>s8Q=UNHXCLBL=BARV z?ay2Gi?_DQq}I{85qaF3h?$AaEyPxtE20>2b+S7Om={hpa;Yr4?5}EY3KQ_?5~Sg< zVLv4k-d1&qQ);0sIm*KwW1F!_&}9l$?~zkg;|cbed9{JmQ=3|FIEP58zVU>rDWWxF zCSPhaFH~f(*nLs^LTrt{3|HFfWLjFjlm&iMe0z{;5QU_AJ;h{XE%?T%6?d~jmRt>v zUdh{R4Q2c!WFqGn`k|oZn`9_45OHz;kYg!^n6}+S=Dh-oJUZz@B~OFnM>rlUrt@Oi zNJ%xvDEyp)B;WzeV&H;RkxSqn$&9}O(WXz-eVaR*A>5)7C$CvkFE5 z86X=*xH^5S9n%Ip#O!n(lhb|b^-oj`TjOVWX5mtQcTRrcTriz`?KIQqJ?@Y_yKW^> zKyE;2$191pVSPg3vfGzNh2GCRpi#%i5?(a8LJQvCUKbEYdOk7 zpA5tf#xkJ>+b_Zn9gS&#--wTE^Rf@t&!&N|129+dqcGNy0;$uYlb_h+g~?Ow9MqAH zZ<+(fR6R4Z(ARH(L-czyVPU2BUSNyMUl{*lYLtuaSYmiAkB&O*3hmF7Hk0kizkiH; z9<_;zE403vG*&H^bU(k-`I)|@Q48g%_V|mbzZuQmp$4PX@0Ai08}6!KE25&0-*2Q9 zD^G}yI%#176nT^^O%=7jnr#vs{_ykYv@nZIz~%WlmMG_weaod!U(O^>1=dO)91!{l z;%Q16oBM|6O#tgkg!b#X3;f{Ro*{@`1QFrYECWWD3W10HlQ~!PVdci$8${c=u_xM^HyDd3DHi^}Jnk$+u-?sxZf71ChFDFKv%Xe#E zDq|11@7H`eAcBIeok2|HE`Tu%?HSVv#EM&<7~M)D?_>ehs=!XQjg>TwhVSr*_|Ukn_e*;oYua<$F1t`Ta~GD zf99*`fBzJ4e-Gu88;l-8&PY!&rJImn!qHnyWS~+6p3fK>a!%r4C*}q4(~~@Kvg_HB z?_>4?EHnDw`YZEORFUS#E&$xooHdBIr&cp1DD5QLmND#yD0m}h8cmJlD#7*Do9B)` z%XFi|UGy24y-`?bFyiV6>+9BV4b7P)CeOm$Tfns##hF-vyh|H)!F1Tw#UzlhBN{&* z(V*K8$-0l!NFLV?X$phn!@s589S-Fp2Gv!Uxk6N??H(1UNZx}XaCHkEYZz$zjj1gD zuo8+{?PR_D$&9b#87}c%)YV+{YipZ%SjgJy@hD_klZ`*Iu&X`S?CJfKB>!C1`gd%+ zLXC&{u_vNVN#h*zxAuouZ1q#QO1lTmtO+W{h%YtpJrja4?U=t5qdPF;i-T0_zE0Am zc#r9f!!ENY<<9M<0g4|?3a1zj2UUnJsp^|`WWZh_u?KU!NPU`XTA^{8I_M)h=ejT1 zaQoDm>KEKlh!_aP3lYA5R=<2UxuMBX^xi)5&;%Cc5l-ECL5+E8MspYT5c3QDwLK&v z)XQ$Z)(W!;SZyliag0e2x#+>8fEe45s`N7Wq#l}yIYkqPKXo@vM!N2kh8Up+`PQrG>Q8(v z1i^N4EKD447{4G$F2@WvjCW;!2YKL_X14}ie>U8G1vGsMEt-wy8us?k`5CXlbCh?J zwc=&6SE|4;APxOEAiP8>S7v`#e^^0R)KrIYL`F(G^K`_l?1g(UCOfYJDY*!PT#rIB zq9x8QP8tS%*yr5$=iW!u7${Av7W3C{Ow>f_d)Y8pZr_Df^`^fnEIWX0u%Th<7swB` zQ^r%q7smZCb3K>k?*ZMW7-I{0FA~L-e$;S(BHLYUD~V%_miC(&?iUXFxZ8`%;+k4y z#l0!d=It_nDV6?F7})8w4J6`hXqWg!lB{_|F23~WavZ|wH}Gqs%F@|hiKJ*Ycdp0} z5khP9GPdLKD`GcigjM1$%VoisMDo{r`aGdGU4yVpyqf5078`TkLEcP(ya{)yP;?(l zs}3~c^4sxJ$xC*IqK8vBm8%Qey!D;BQyiYSi$xJVKoxk4*S$9{=cx#~?&1Du`&4lG zkhPk#G-uRE7_l0@cVKai^t;?1JtU4+hXd&K(G1Ty8dTR83xTo?`=?tAsFyATBv<6u zq1WTj>LTeDVGmw-s-t5rmWA&eKJA1{N@CjST~7ii2D znGUvvDUKwG1fO1gVMrMiLcDeES)WQ1b+E@ym?V}PzzK>9RAfqaIeEtJpTPBJ_u(LU z8g#{%v)=J5(xyty<1olcQl?3*~agef0P zMZ>SYtt)e3VqQyIqz$_K`4XO25sF6i4Z)`1m$OoTVSUNGD#X-$FH_!l=o=t014|>K zjs!qC7Y(62I^x1I`raXA36P=y6uWAgx34`{eB;5&E$x$hM$RX8tZ{!L7Q3KR@C#tg z4B+(P;0Ze$@57s?1Ma|K=B)(sz$XIUZx}ueUP}Z`Z_~xU^iDHqVCcf#l!c^=cv<*u~a@Xbh zg)-YD*zBK2YW{S@e=B;807ff5ujj1;4Kk%EbiMl2<*R&k6Ge%!NXf$m@$XxuTk#tI zJvRhkN`O3-lsx$es{EuB|TOo>$w>e_ch1zf%s{9Ln{S4!@ z62880wE(gIqmE@*sH3xnJAEicg^IH|zD;T5#v+}K z?$4~m-rT69_A%d=PA(@R55kmu(w~y8pF5T+kEPKJ?EjXJ6z-VT_Y2Ig3gc$!-U{~F z2-NJFrn9G{7*96Hb)O})2vSFCo95#BJX<@c5UlTF$gO0 z$-CM=$8XNi5lZ^V?!KI-DxLkpEm2{e7wTBZ0(*hY3dI}X>quglvic65!5+DK&81Z@ zpzHCDH5>d~YmFaOh!y?M1ut*zn20UfJL(LT}5aEP+q)=;VO3mdJf5jO*{lYoqCas369cZ1EyW zdQDuCH{oDA{ZlKhvH$N6Azd7Q+*;y-T}344{oQ1XGE%6VjBaj7r;bXfMG+6)<@KEp z8qh-()$2_-VPqKe)SgUI<9ZFmQ*SUH7s-J5z7Hg(be}mLr5OaDt#5{G)tDt{r7I* zQWiXVzgReEqS;tyN;C*BxELM2c;hbrp~Ot;Rip%UR(6lhZOz@?KQV_?C%jfY#7Hhf0i?1%jcQ~<4@p?MwOeOA{Y2I`3 z!wND6s^xixf?j&0$Vlz7pQs-bTzzE(3{QT-smMz(1?wYTz`9dMpjZ7Wu(ZhlSo%L0 z#PG8OR!RrT$Ep4OxX>j2#`p9b$FfqErXzjIhOal>a`oM)@kT~;7`|Az# z%ZX)sP87_s9+>=b=Dw-K!TSpMN~~Q!kC@}Qe&*5!^%`m(21+~X^D2PmISfsM8$GWD z@2!dlxUNpNN_iBA5Hw^7-iQr?pH$p8W2Rzz*d@4LqY-HjA9|iXddKT3E&t*3Q8CeD*Pp8< z+g17I=LDjqr6i{JKlmlEVJVScX2T2!sDx_zIUe zsCaOqPXKX|!Db?I{GeOXz`FDyd$jKlkGaMgmsO%ohothq2T3BX#bl4lsaUYx5@u^| z;{mpMZ_*O+xxHU;j0LO^Ts}(<#hgoAeLO9GoAFBOQfV`s-;Z++HCVsnImm=zI^R?MjI);;lV6}JAww-(@m5yi|Rg9D@LnFGh~ z@wO*0{B2PRRvyt1wEVgym1 zVPTTm%}ar`BuGXU>t29&_&CU?z?DlmaW#ow%;qULT-G|myPE^# z0QOyRQ#h*KZ><=t)D5^RZl=Wnattc|ANt|aSjWNsu370wO$LnicmA;9i;KnYp6 zJQt3oi`d;0)39=yr z7bj}ffUhPMf|2UVmL0a1KW~hC{%a|w6RVlesOB-Rac?lfeNzzhtm(bDCoswkzir>R zTrOqO5`rEAgkylFKFq+gb;`{ibtw_wRc_-~Agtr?%PL#UEiV|n`QV+aa@U#XVcOh- z8dETuziLkxftzEA^h|tErXO~fQ~A5_tp@+5y=znUK|sxx%7$(Kp-RK8-ZFWkK6r`* zNrU#A7U|F|yY|dbA;X@=n%8{(RaGCDJ)no9khw7&)fVbVnwJLBbsSjyk6P*EXDiLw zIkSH@{<+LCiq<7K!wKmciL6z#CAl2w0Xv4)6jPLm_%--4z*FnoJfORv@j;XK3jGN; zVx($yJjYoEIZ~R!~2ZKyq**#Z#Uf-is$`>tJ(l>!fyCO6|`P3YT9!yG3(VbUuwsZDM3!hmzn>gi|^rw8={z-uE;d9{XUBG*XGHa*!vr&lDUB zcPDWV)2G0_OK=^*w)Aj2bx2WB@vJz7o7gl>`({1v1YC|;^0~6#f#D2le}2?av~?&33+hX`U}G+4NZJSezov* z2RYE}q^l;q=kh@DwNOEQnk?x9HLh&N_2ysh9F2DO0lRq>k9?N&ztVrx)8Lq9^itmt zJ<;X1WRV`99Sg8W{UUBK3Cm}Xqla(>E9q62G)pF$rT|PA-_!n$ldRix1N^Yu!?PP`ZPKX;POM&0;JW zjN2(}1KBv!;sCR3-YGd5E06>!USkyqdNF2e+04o@71-D{WAZF}>o~=7dvD-^`i#7E zJ)8Z+k(S_!Tj4H-`q1*}0E88zfX*mdj){Kgz!SHaXDCYEeZiQTgcmnrAbVto%jbXe zloBV2W=8cfKA7yD9*m=!xj%^zyPJS&;IwFD3NJ6H%6;UkBwD6j`Btf+U+Hmbx2%T8 zYr^{i;nnKc=Dv|tm*gw4aLPw%BPtv4tHU--eml_89gI-(%kD*kX+*Bm@^;q9G%}UD z&1F}J@-pL6u^ZmC%A{)sgYMPswDvJcfO#jbftOG!@4A1;BADw%J*nbpuJjbEez~Ej zT<3Xrp!*i-2Ml-uf3}yzUI&+CqR4Ck4Sp%mzV=ho&O_@vMdyE&0xJ|l(9La_x2X7( z`~ooB^(LJ$;B8R5rEo%of6hKSP-|OHP8#zk0na4Htl44u4$T59`2@@BgmtDM$$0HX zb6GQ=nCE(m=AKF|4gtim+ira+k91U>!UX)Go8WMwF4n+ri z(UfT2w!L%KE&awKM6?(SZyQ?W=m&motuttS;}ItuHumx0rYf=+e_nIk+ElK|vNsI0 zj13&5ZHztMb5$&YEsBgKvbpSo5Q2}7irxA`z+cC!BD!}k-e(Srnt5_F`5f!=GI?h} zxPIhs4pE#6IlcJd5os2E5Fe$>Zoe-6R3yIowQcU=%pc`hR^V?=Mb6fnltcEKz}10@ zK;@u|WRf+><)l=!IdSA};%mlb=%tS`I!Mwpxce2)yTgQ&k>^e`R5n5AAqXkQP7GO9 z*FTdKi3Eai#35GO>g!+K^7*7g#o3X%Q(Yk0RB@cax}!IVmcN&{b1y}GyN|p@@gKXU zW%zZ*WqeBR=qm|c-(@;u^{0PgsS(QOdy>aYOt3aU8DAcqu*e?sj4>qKV-kE>sn4Ej zEkPE@Y!R+ceGj89%4w&M_W=Qn^JeRG0qsU49e}>CgM1{MHga^Td>xL@J9Fne?*Jts4*C;M7B+E?CE?%CU=jE!W)sd}Bq+D#w>^HL*9|vYvA{y%U zIuY|}z8mAKoXuMk*wV8qlILoeb9uwUdp+JJPlt4mx2hg~<_wBFnuZDwuK&d)uFN5_ zgq9lCdwftFcL;;M^1-`$`t}J6gbqu)cKga$BFjqRJXEN92$0GFsNt92PWmmMbH8yP z*WN^Jm-G8J*fXOR+^Y(UtsdhgZ6KvqCf2}Xq5fHq)^L^@}!0)HRH%MQR_BcRYMh8RK8-e6`$Dmfp>x7$aYrW ztveJ?2Jo{(h`wfVb(2mGjEr{v#{ zLhM8Wz&OSW>r9iTwpHEh+(t|lT-e;0KOj}4>sXMQy6Le2`SNti4p%eUZSYD=-)}$E?>#-U?tnHn&*cp{_;pPdgtkzetqZ6Ku zpghWcplPxJ*>Utn??*6sE6oH2bDbKw_NQB}JT_Pc?gisNQ^}E8W#iz3@*39(&jkb{ z`oLTc&N)gA4Xru>KHrWwhi2-YuSk%Z&uyFo`?`#2_%hxw3uO07JI-`vUfKZP@92KF*m{1@TP(;su zT!QS$6|A#u7*zD!wjzlO>l2J8^5mp7cY2v1+G^7P&J#!P!icXXFdOQoS)lA!0nAWT%4lb3MZocXNzEbbqA3Kc(l|iV#PG0d z#(aGFa1+!FK-DwCF{M9cv>nP;nhaa!B6Uxe zTGoL2xVZ&uG!+Bq(7LF)nI2j&yzCHpMJq3iR0Ti=6(xN+#2IzgFok9d0^9)!}J1n?> z%uEU)2HFc?o@?qrzHW?bOyL*x`8dF}kV?W4Th`Ppytt{umpKkEXBu86^d`*{BV z`Ktf(h3x)DK1U-)V>aTVNn+V?(EB67SrALywlM`|YZ+&8Mr~KFjBF)}bkNBpc09Jb z>4^LnjW&N*0nAKO_R&~_P?p&o^Wb7nHhW*OZ#<5khiU+O6lV(5#J9xRS+kfMKFI&v zO3Bc?Id)+e01drlq}sfFJ8V1ZXm9+4K|9!Ts-kjPif|FVpV$mH7F$Z)rf-&bo zz^?K&+^>^nGnoH_bmQ8L?dmavZl&M|c*BXT!+ne{S1pwRpux0q9KB)*n;QLo^j(jg zZpxDdvVjVSdsuYJvy?53e%OD{w}bQ0nIa%WU6{b~l~OzWB9Vg5h>y8?cbMVa&7SOg zUa>Cj9mFmwg}c=vzAisF&`DvOd%hz@<_i6)snTA{Hj#UtnZx<#*hMY|?_FPn$K?pm zHoiV{c-2wwH~ZfBtCcOvOj>S37RZVE)jGfGi0UKr!1@DilzWmN(tU<+%8jDz?{|Ba?1h(ne7-k8V%Wt zg|c&`!w!Y*%_zyeZ2b!!2JsPyxoBF5grpOlzZJw$)U{H;7a)1nVra)p2#w%1Znexx z^nBamhf1MFRQ!CjAZXC^LmiAxX|t1YFz{PcmuhcIq!Rv?x^mh2SWG^k(`EiJ-udjs zLz$WJnRMm^2$(?V9%_;hSB($s57*#`>8C$aLud)5MDk@_AeX8G(lXKjL$+hsio`w8 z9ssJRul9{Lo{HscRZ)(F->;lq)ynF2m0@^r6d@?6(F;|xjO%f;zHRJX%`7oB6Z@ie z>WI<@Px;x(zCGyj6N0A>_zXvkoWq=C8@CXS2K&@ZE^lyALaKgpsPCRrFjJa{vF2c02 zX&H@TnK`NdZJExpC@Qer)ZYr|&lf`C7-+<>WbnAMq#2(1Gi%0yAHL9z$78%-@BHT?TnVIn13{KC114f^NEwi z|3lkbM@9L*|Gp|J3R2Q7A|NdwNRNO>NlABicQZ;#gOmt3B0Yd~$0*$(NOwqwLl4Z% za~?k5{ri4@`<%Vj+3T!*7K?v|ho|SdulstxuJ?VA%ketLSwzRuA_o|SHmjI*t2>o_ zR_)UIelxk0oNOnpjQ_70G@urf`bFStX7hJ0(x5eUeWM5b#v9xTg_aE+rd`g?g5-zg ziXvMdlE*lCP>yXcmMx|G0^p2hC=pfz)1&5M`T8IYj`!uy4b9;Sd!ObkqABdr1{Gx3a|W7^5?o({bLrwjZD3!D{w}AtM@gYCw2aIk*7$=7#-ND| z9B@n$1mN1wksS?6&LRBm(F^kzt(I%*pI>t@mV9vWDpoDvMaf)V|$A5p>MY zA{*`=JkzbrG@$Rga>x%uA1tj(1J-iZEUhgarm_R70hi$ild1PO-LjZ+HILhw?xB0K&na42Z3B@NaXY;(y%-vcvM!hu9ZJSlny_ z+zFRdvYry*pPHQUwRNXo)?3*PNyaLy7F)jRw584(qZ0WgX`O1m_m4Hq2Z(6m5!~Wj z%2$6PauRVNvMl`4oVBs{$r7G6YV6j|!y%eCwL)$fTxN;&ac^m$%f21EWx5Jk4E4?j zlvN!2_Df8Jm}(9S;&l$UqB}e$g|sn6r!uDsKNRzTYrpE~SLm^;eJ-{3ajqnpZbj?MT{6usoqKmb<1;Ni-*?|( zEgXe7X~xO^4pEwh(L~zk>*BrJQ@(~roYijFT)^NCI-QJ0MWE2NJ6S+Jt*&*;VvCU# zl+lCr1WB;e8`<=asHh0MjJYnw{W6liddo4 zRpDoP?4w3 zQ#Lm1-3?H1^@58Ht;WI!bRxhsIoe3@<;9XQIdt)F1WcueA)s{k@hLR!4h@@c*z)Z< zqvR^9C<;PiT%RV|>N+PwrcFKg7<+JeF&CCO3XO%tNreIA1f3VvI&lz+`!f(# zOYF?201&5u#z~PKF8ORS9*~gb)tj2L>O};IzkKrtztOw6fbfHLp>4StAy^To>eM`Y zc=ke+A`+;5Z!HQYTqg-)aGt_bA*Q(S;=M+*_zOy;3+>rMq{~z%!e)8-1e{u$+h*dc zf6VWTQa}y5^qROdZ5NzOlm`oLK-4CS8eL-{;}Gnqrvn~}58I9IKufKP;>jTAeHFhL z$yH6p;o*aD6En8wVyYpGvnIad;rQ^SiCx*bgqXpQX5UWNsDzwXTpyJ>eWTj+jwv1r zV?1}$+`?QKb^rp zdHrOv{thP@IV9tI%WCw=nt{uL)sdFwG;|vHQVCQbJ^|fmX3#Zo=>vieU$M%Mj5y#D z!@GockSEQr>=0WgvzAgeo`2*R`ZHcRx9#tmoszJt(?)-Wo$07+izCxN6W>mU&oRf} zDHyRYxRL*)6D?Mo`KP;+yVP2Zl#j8p=maFua0O)ou-S5yb+WFZ@>7{VdX_7^HDZ}v zgE0JsWE&sm)C3s$1guYQRKs5+gkPGYGt!W3CoaLXXPbh=SjyvsPtYICXRD~lVZPrE z0d9sHjH$03(y%8ggbg~p<2E5cx{ZdBW!y81s(5nG0uq-;NB)!2vb07su^Hq^irKL) z{5p?ZdLx@mQ@*8@W|qoSYJQalJPnj(WvE9>P4Sa=O3nINcU{*B!L)YnCSXwGDy84_ z;2)ymvsxXOproOhxfxW2clb~A_YW3$*OR}Sz(Bzh$!;mBfjcEa;j4)Nw_b~I>zP-1 z?k_vp$pVa-(&Q7OqFaM*))R28ZQ7-arV1?+9%X!0iWZrp%mAzR?0bx&u_&U!myS|# zgcUR~>wEyGKD#~NS0wu-DQTh%cIj``4>ByS*L5^6<|R|ruyJd9vS{wi=1UkBr^+5v zl1ys{UKjKNgfHSD6|v&Kt!Vj<`I|o)HaxM^Bbg}Um};_Z&+69ekNd+VKvlV}c<`5y zFVyP6YX^QsiN@2!^2>V|$_{?o{sOBmMV+E)5~nF&PPG{+Fu4cjw9$GMu4ejej(Ym_ z6k>2~V{Iq+w6-8SIFi%7sB({v$5TtaqX`~+sSaJvN5wdf`^LT(SoHsCF#a==4$ok~ zf_?XoCG?j;qdN;aplsG@5OOr|Y7iI{nlP;TnX#bf+^y-zv1-x@#FtI`ZaLlI;=^`b z*zmpPejWRGwVcbk>%yXr&!UG>{L^s1CG->2>^y1g=W;TFU-Y;9vmVo&Oq0r&;sPHA zG^EMit>6ANrCxVN14b`2r;h`92Mc@moZf$V0k|l=i)kfE(CmMEgMW_~Ju(-otFXy0 zi`MG}hwXS!_z=#u?~2w=H-kiv)*U!+`XB?x9sR^DRbEg zT$+Gk;DYuzVYotA_r&>jL#NnklA<2oN#!S?=ZYxS4Bm$!JLdhYp4^Uw^K=0AEm0TD z&Q-i!CWrn0#|`#by-=A!eEG5Z23Ib-x6V0JYSufeweww*6r3#U153oxfVpQ4KH(~O zGCH^W2{kYU`94Vf19OLL#rwdVI$$trR1~6LBB|Ar1C8f3DhtD8+=W}W1Kz)ZCJoY^ znjH;6@l=4`?Sf<*U7zJ*l*GBr^K2`&!yW;}oNmKQ+9q;x@BK6q>HgiN$^!G^fSv%J z=TNZHz>8LG&v^CiF9a2wJE=6jExx z%h@yrS0vvAC3ahoJ1A2YvjsVT|ETuazwzRWZbkf?E3hZu`3kD`zy7V-d%fip{)R{O zAJtx~DD<`FO}T%o_7e(a%O5yQ|D)P#=Md7U-=X`rYOl#w8v>#OIsZln^utB}*C%1c z#SKn72QIcvBy-_YiuH=tRPQNvZ1t~?rAb2l3*;ICUpNVU!~67~(qpL>i=aIaI!4~IxM~P&D-#5kCuwSgKC(P&q7f8L+@nt zyl>y@`KkrI6^D~wB`G8lE!vFlDOUe=ivK_iTKL(!AjGiq@56aNafzAyhoh(&11}&E z^7TCl2ae4@_wV^U_{q)fAokS%hHlK({Qq`?ukn(9Xpa9QPq~UigmI8AAizMo(Ts|V z%Ep-fIfIPB3`0|EoHWaFiSNH?i}it>yzQRf=2qj*pp3D6EKHQndiUnq156}#Ve_*! zMVB@Iw;{aLcjc=q5yd*shPNvbN83yKV0q{v44c~gg#p#tLxfVhe?Ak2WyU(1p#63< zzI+}Q-Q~iJ^L0dCs3}7HmfxS$!!F54x=Qk%{ju_218qE{ga1W&UWcsuptYrPD3HWw4Wm_Rw#TVE)y|6RICt{NG!>>LsWk@sCmSz2xN~I0M18~01 zc&0PYaWyU<$sM}_^@^#I&D#C|!LK9@72^j%_e`E$gAg#}YDC--)fPex(2AJtz z@ua8+!D8=lY>&;5q6>6xZme|1V@!AhLh2WNq`Guvd|6mhzEOJH!>_cCmwkhVoF}*}WbsgEt!I>{MB5 zxK(h9!h3P1e-RNsMOiBOHF|X#S-`QA7BzHT-DX4m+tNFMPk7f5FOk;T`JC~ z-(ics5a2(0`tuGw?neq_XB?(-z66Cj41ASC zGyW3uGzI}Icw~}JoV&F5qXGQ~0Hc{%^AJ#0A`OZbofotqYCiHIU*UG|_Gdtsi-#0X zR=0>DX@EdKwcyz|>6kN4XK6QS`f2SWu=h>luOahFVnW+7seGX)Zv1aX8#OP#YWCRg zYfr&E3wTolF)GrJ2IGG@;&Rh*G4z__68ME}jZ?jIxPJzcc-O!HqZ!wN$H>CA01V|A zlxN-RfR}26XX^qDh6qvx#%?5Kwm%A>q#n7(AYjLM4T;=aqN9ACKf3>XmX365p!z3K z+YIaw$;P3V!F4qJ&hAMS8MAT?pN{du8|G!B-$#fT^)*NZ5si+H>Ym+zN(YQv+L7uq znGVsQ^0aI}lcg5gNQ^rDXuI3bDR}?T z8;=+X1J(Izpc6KEQu){bai2MA@?ByEApSPvCdr5;iD0fSSKuAu;l+G8a25fyJTBFK zWdRmBfpK~DwL4#1pJBQ5D;{wh)rpsF#>1~Cb}kK+S0A>Ln8EZm<{~{PeDQrv+!MBCFLBPM@O@Z$n(&?H*wR_^r-H^dY1V80$?UxB5Z&|Hu))KEi)3V-}866Z!BX!^W34`YDE zlgjdXKIa&dN4R>MXoJ6iW=aj`^+4RVC1I?Q3@wvGg~Aa?Za^y+99crUR};bJgRLVy zl9Rq~9cCszv&=pU0l5ITVOX_O8c#A9&s=j9KL&(s0Ts~ct2eb!$Zra{)83##tjT%P zRDP|`{Fm>*Pl8i7{+buvjO9E29VF2HN7V^4j8~(l#`|wqr9Pm_i=Q~ysp%2kf3^W8 zNSzm%^zRP@LN}H=e)6Lco=1{&Kn{cy!LJyK@w8p$TU0Ah34-iO_+qcT6#v#P^sTgvy(9VTH2*P>cBRiRb*ok z|C7=k z`Kigi!mN)6h6qWC%Por^=C2_`M**tDM?o(%Pa7m1lJt)j#O?*Gn;Mj@f||G$G4)aN z&WSyT>rG9Q4V%U=E`b_77Sf%%m7*`t|Je*Y<1A2wyNo1gkY#kCTWq=3#k>AX7ccf% zM&X(z&^dB~|405zxA0@oF?jNXbrX08RWW%|d5fX{y3ljQs{tcRiTuXYnoKbXwpU-8 zq!FF7&)>NdH);0P3YcW;S&IAan1nu<+R*;E5ttbkPIaUu2bQ8iIii&XyH$?m1{V?* z8;efm{KY5o@y{og%0#9IRu~80g1J{uHX~9;*(f7PTzl4*G)7EPz8r0=jen!0Pa-rH zW;|jWUn6pq-OVzZp?=HJqd4E?o>B@0ZUHt(w|AnU74l(%IOMnp*D>LQ?b@LZJ5Q!{&9)BmPCE^J^Q$#Vo zY!{`wIwI+jOlItx(n!6}oyT!At69wb{11@-jNxp&{VULW#3WGDyCQ1QJceqiF2Bzf zE&|rrp51NRr=b?#`{fxfuXg!0+*CMSRo25XsKTVu^z6sQz!g49RObUWl4W#(MGsx= z&c^$C{HIIxbh+*`Gf+(k`i+eyAew`+Ds7nk`JM_2vP=5^O%n!}@%w+swDRDVaPFs? z18u4QmTo~oI8l{AlYm2Wz&Pf=i{1TN25O)H&iUUz3n)Z`j z8hO{Mbgg22nf{qF$E0lw3JaPVd}7n<6%l3&cA{dhVHHX-;3R9+9Q0E?y4)euWGi9-LPQO>ZP<&7tvCF z`*tD>+xRs~Rl!c|IjjQFa+3+oyE@WF3k5t^(#LYoo$XhlgaO&HD&>4*5d+c1%+cEB zu{T@@ikasgh6qlt*vDvnuGD$cd)`Fs6b9Dk+JRZ(w~A%;omZ46l>>{2QSCU10^0#4 zqUY~G@%na0?SF~a_$Z1iP%D0+&vhr~$ebO_QE?5HFZgUls70bFu;-oV1bnT5bZ%uI z)0`dmy`r7CweeEG12~HHoaN0*ij##dehh0qh1*jsl{uhm8p-v*3{TIQx* z9QAHkmZU7-CMe~3A+KCkbesQroSJ6bC|iLx^>p9DJ^BCFe@LL-^v#->STL`?|No;7JpuNh)ZG&B2(jGh&eYJqZ@-L**xcMABpSXX!% zt9ozq@7rY|rwHq+IP#W9h8-iH)O9?RVqNv4mNAgNNp~cx{7vIm0>?c(%P4)k{}Dek z^pNLQP%pWr)z#f62X4AW3U}{O0(ei?BEw{#L6VTF%q0(GnGhV3GC6=Zmh>#W@bL=t zZ{i0C4eMFjMG0i~iAw{;WB`ei7zwINHsZF!fV8MjI`&=sOj;WhecQRgc}{-cIN$#-IJsQv`DrFTG^yH1PTjjjTO8m^PPG4oRvt;8mUO0u{=<9Yd*D@V!%Z5eHp)d+m1YmL zgVjH;3=Eb12fREyzL=E@Q~z0ShC>KkieucvkWX7Sm|4y3G{E#1%o=Tm@SmDToM;w3wMm(li-S0DIj{^Lb$Y@FQ?A%*6p=08`OeR`+MyC4LFfQmfT*dk2RedUzd9ug`9kd%4yI_2Zi z?2Ctsv+72;nficUm4gBqlGm&|$T_-VnMoO_Vp@nwe)XQn@>suWT;6-S0jR()NHN-oOXX}`HF8n4ap-kuLVvRk~xf|K9kusYIyXIi~B&`-af!A8@lE~K?q?iAWL zw3*kTDylY_{fsj;GYKY}?xg(b+X~7rK1EUjO;oXjd}8wkInQBZclPp|Xc@<;S9{N| zkhpJmyO1UkGLorMtuJMApnUNa;MIT!9NwP0sz|@(shie+SVR$L zM9Y2gAO-Yuy2|Xw!n-|HjrLiHGNifLhB`9p6W~;b|eWmC)-I;mj5R}hXZ^J>y|n1 zyFNg!oYAc$HkxiZ_Rp{eHp!wm-GFG*OsLiyaY%=O4x@_dFF+anVo2WEzB)^u$Y$f8 z{iJzxUEi*NMu2=k@N1@+2G9F$-xQ%53gIoe$rLRIy7Ae)4Q&M^R-YYH+nea(|D5~u zh%l7Axp6|H1);6Dg=nUrJG1e&)E*lUd!P+&t9rd{Kn#Yv6U>s0qQQ_}-b1a$iEc_* za2(o~66gjcT#gI27YzAv@d)qNsjVk^!~T963C~xMvqFU_zwMRzQv^7+@LIulB8a881g6%PS8N|>(u^e;ivbgn@IMO@@m6`Q> zih|(Y8GsgSY4*qZxb+4LWZ_2lAxpiM40e$psA@A`JWKlTdUoo=5ynHvg098?{W`7^ zFe@3#Ql|z4T}X~>(8a)@%xN~cg|a;+F@pPe2Vc22^5eP_?}@6%{p$+9&MFZlSmr1J zlV4ACz>DD1!%>#wuE^i1UlqP5%74=qe01zl;}$`0%34X44`ZIVV9qQe2B_06Yk%?% zRd_3NZ71#2-NC*Y!&(K|4$Ja4ByPFZ(R#F1fduCw*m^ytRF^KN z(kN6yY$+0(fAgDQrXk1VxSEeQ)@zhWt}q$q=B~=6#CparRP; z1DH$%i7%J5j#V$`BzA*SoDth|+mp12__sFqou-xZY4Pk{p&4-)Bm^Jdt?*W%VXGAZ z72GL}qutjlw;$z9EXufl_v+JP`q7x^pv(L@IZdOtP+Ln6R7<4+dpdZkIs1)v>?_&= zs=hK}td3x%!&<_1^CaBMVI1VDINm!GZ6oLk4%Wv7bW=VNnTiuV;J=sn_(8@1Rn*i3 zhvx4kI?~Db%*vU|Q9?_xs+Zb%VS!um9QQFY_o;fLt->%r!`p!;@z0!XUq)Y4Cv=;L zyfF$sRlR%DyC@doxAg%9)sESgA+w~cgmQOY5i!5#Q2HG*@I4sN^F8tyJ2nY&^Pj~} zD@l!h6xStw^e(1%?gh{X&0-E9{1c32E)2d^zJ@q*bU@>Sm5ZQ0EJKrvQPYM4H2J$e zicJ*OcMR3N8tww-@phFSF1^y&5sny&dr_je5#GoUO(9&9!}G1KOKjqYl3^iz8Ql>} zyH<8onlzwxk6HY5tdf?j0}F5MeNdtPp)efSkH4rkm0DD@O?2 zmxr^=gPw~}^7X~!ldbAQ#=dn!OJsc3NTf-p&!nQ!3GXAJR+i>hYiP9UU1llQJ9o)n z;;Mo%A(J}_>|hQDn6zzAK3p*0)S|5`IHKaN^R;?}$Kp}jNyt>27;lz$aOI4f!mvyC&(UG1n!;pB zogm=mtsr8*Rn)Jip$yL05WKS>nZA_G1C*Q>2u=m{Q6H;xFU?9v98o0(bwAdJ5j@CU z40q#Po>Kb}&BfOkE-3rJ$V01d)|%#^xcgh;(zPeRC?xd}oGPdfo?NPBp~1FC1g9$= z(01eE8?wAAfnh-)?N6Y-pSAH>=dnrE<(}vC$Ix|#SCY=Shj-+@1zHk)~+I!V5mi5Ko3-28l?3nbs_g@}^8~ z8?vJhqpnO)6NuAkb*~vbO2+e8>{9DSmgm+g&aZ(>$Cix@-7YK5eW*W^Qop{*Ct-GN zo{yj4K?)61qS8OYakwYpo`LsJ@QLdtWnYR`xeWufk_bH;TJ`j&{6nP8M&}Z(q_^Cn zx~vRiHXI}NMch$Qo0ot1!`uzZLq;tVJtG?PoUfvil!{gdFRx0l2?prFllXIJ&h+oI zPR4QT30{Y7*hXi6U&RnAVX_!$GQb3#LqbkqPPow(7xndXOUhG$Oc)HTrJB^s-VKCH zFI#TE(B9XA8%k@~z@;DTObpz1vu#Jo77AD2=zi7I-s&wKoSQic3Dtv~?y**fVXTht z12X9Tx;69YPf?ubdqpy|f1oiGJc^s#V!UN0^~NJbvmIwXeKdifL9|qpX=gwm2J-%w z)1ZnAMU7--ynmRo(h0wKi#Vb^FLiUo^3jtdq4z+IB)l)!E2Y6yHa?MPVfnE1U!@*8 zGAau9&P2TzD<2@Diu+ecpNXYX<#fdHEGu?Ece(qwxGz~i5r#KK9Q*VQ4RwCpo4QgR zUQ%;xx)$v*;-Ov@b^ag3#fs;w(qd^^l?)P>;$D!Vn6=GV)4{igBlLVgMqU;j(Dm8R z3=gGttJODP6}kmAsYWDV7HP+4GZAH#1|1EbS`7^w&!DWK+OGZSjTwA;rlkMq@$Q$8 zvp@EY-nDH6)%MB03s#Ri?va5-4@0YpSau`)`H21g89WkH)EC;(G7FtqvVQV&M%O&S z9lLFQx&mi0_@lR~G!+bEne#?R1IgCQ3nd`#48!)_zIXnE`s&AVx{<~=VJv%MQ+qg) z(u>XSC3)LS^%Ra!$JddD=PFH_%W5B0wR=5>TnSL{it8EYe9kVg0!0a!M=_H?UlFtn zzPktr1s?E%EsETa7665BID-O7pmxu8$Piv<`Ec6gqM&ghwAc$&PGl zu$w~=Vaz3L;e!QXgYzq;WEGvOZ)VT2HlB$r?{Xici2`PVbzgl$?9Ch_eIMUAhQ1TE z8PlZ%bKa{^jL~szLO!SDnZYnNCRx*juZKjZ6p3h1-XN1BEqt8Ivhs~~Y$XfFI`U5A zXxL90jSwxhkIft+0@URbUV*Q+R}f4vdv9_Rqt{+3QsiF5{^;*i zRB#`d`vn+&GdGXn4_*84E?e_~dWa@}amK&;9j?u62G=hFm?4;C6HM~xlHnHSvOWH% z6#fsguSd7Yj}x3mAT;4_DS}%1#?-gpda_b{xuxm+)%qJ2cG;4@O@KIo)CFK=9459O z9E&&h9Wr(tGwQz3sTSp!C?+--MNOVvLctN@aNw-oYoOo+_b~Wv6z2}bj7W3>+1J0n zpd4u>t$|X-pZd3${`Q&7NH~-2&D|>H>@#KkLfu(BUUkE=S7(7N|HJ25CGg!M3g%CZ zA`86_l-#tYSsjta?ku@;X_j?>$)0viTMPZs=16Axui0Dm!wOGw{XlM*4%6dn^J3k$t7H&&e|0s{+waA5c5J`lB8##Qbgg zx|<=>C>#@&8wQp=Gq#bS^Ni~!(VlqzrI8LLc8?!V*N9AMy+0fl&{F}QeKNq{yD1)a zma>0H?sB<*65;{mQ^a7Bq8=>XQ@2i<@g9ceh0j0O54?2@bF1Mja|WAxj%KtzO9KL3 zSnRsQh!PQC+3L9)-wEs~S`+Vd>^w#X@EU)p#z|JEo48W#R*!0pa8EXBNo$@SEPebt zG)5bimxvdR>B<`mHWS^R7Z45|KpILU6S$_K@Zlpn((#6iU8E{Mq$jNcamp! z>-l1)bK{@1n!5l)@K#Rt4xsdRduc_9u+uzc_9pG*&zr4pUW#Vk%_l7qhd!o#TX(w? z`la|Cf)UT&W{-EhL`XJVt=`vT3z9j#XazN3=>F6!m@gtXy1LD51~!Y50Nz5_r3<9k z7#@%2pS)Z}27?FNM~YFXp7>!1l|pmzjs|-UAdY=p2fI2WDi}BMzDcIB2{~%YOnutK zfn4goRc_YR_w44$Q_Nv6nr&T2A_AKeLv0OZ3|itGU${6$%nmHVj#AXrFc(V(kTb33 z_ut2^wf?V1Hm^X}0*CScuV}&lS>^kG%{NdhUDq1?8F938*C4TG1kp z{VGRCdOYWXFrp}(EHzH9b6j|Q!GvPD*u2}Q=Jk{UPIZJ5cusd>$;VM|no;4Ambx@_ z|6xyFjVRNaY0mSUr^#+rZdg?Yp^#3lbq$@XbnKx)Bg?{>iBK-k$c5X{E=89t{Bm+H zq|R+R#yVd^^4W_yD&l}qtPn&vLmN0KIN3^=R%NHhn$OQ&?Jt^kp$Jx^W`W!i*0D5# z67>*2A_#?p9e_t9lITR_|7Y>5H7Kub)%xXd_6KeE$!WA$L?~yU-2#Iw*636w1Qk z`mXeZK`omR`ZSt26MZCtQlNmGQ7C=@bOuUEnj7lbKErP>iAL& z;sg{R{0nxbC_tbP*Ntv@!iR&s2b}bnn0Qc)&>7Lrx4hVd*4v`o5*a> zcfXx6jA=jWGqR8e{=5%yj)sDJ_W{M}W?T!)<|_VQLD)pd_$hRW++ds@aPl~SP7hd^ zo7n~Os8!bjL_t_z(e3)ppNeNKm<7yvCb*4-$7iomUD1u&>aq8#^h%M4*cgSD7pm(vs(D|hvQ5tfIFN5Vvu5mG;dn@5N?5)YrJo&L6tH};ozEtrTf zt1!(9D8!Bg%`xWLWS@GN2VsA%f3Ft-Rv1ltMG~u=`ZN;k^1gq5x827`_U`=y)LM>U zQpOW}l)a~3PXPoT{S2E$cDaPR4`!h~(i8ezn)|M3r`N>CRD!tJrkj|qLX}=*-mQUE z4>xV7szTHnk-@b!ri~Nf2%}sc6P@(TJ@Y!=j;ylHM&2$8c+|kKn{#yb) z&DZu~v(f51AP|a&8rGQiFQ4_MbCiB5vB&YBXi(N`Qh2hy`>cmEec)US(?R@QgpyOs z7n=-u#zv2ApYb~ds1HF|*S5vFUl7l^X0_+rlIqE9}>cxxv$Toyv z_TTS~+YQG#IDXVKZJP)}d@TcpFY>A=49?ik!jAag3LW5=3=iNWojphVzo6R>&&^l(*RE}H{Gxzg?$UB1_Ua0VA$5TIRbwbyEcfEPCpO{mC zfKXa-tb}yuKCL`h=(* zlW!k0;LtZ)2%m$sF#w%)P(gVtHSy9JIOg6?+O02GTjCd6@Ia-VTqLlKhs0PH=8j}% zGhh!UJr8wQ$C!2JbGqm%EV<~<(?qsS1211+nE+8`+c{wP;@cciG&sn9a~^D_G<%es zLg=^XtB>aNs1#FF-mheIQFee-2}<~n-}d%aE@TjASpi`e0CFh2n;A0;W3l_)x#@&oUbDyi` zHS@@dEy3h74>R82iu-YKH@K>ZuGhF-P+%bWyTi~2_*zZ5(Ie0$N}<94UYPvaMV33# zWl-UmQU-Pb93YlH9^^25O~Co`{7XF0D6&1esWxR{cZ`#4H*_T=#hYx`S3aUt4}f&^ zUxEh8`H@@m$1A*Dg#4F~F(YU*%YqM>8IU+ES68wh|0s+vBwdtX8!{@wXs@b*uoR@y zoQeR^TZtk0$mJ9B*6sCEx<6C``#(n_%@?aZg3T3!c zL8Dm7Bdm^>B*sIk=Y60yw>|oWE`2_+G7Gc&Z}@2m zk}S46s}lwZ^qn?36jpEc3iHb_hU`?>zhW|XJ<=yLe|GC*NbeuY(!s(HawUdFFO2)t z>ExLhcS8H6foFuX1WtE=-FL5Dr)HM+O`2VP++qs7EVNaML%Van-rsDo`aQ+^`Px}T zK;sWMIK34|enKBD{m6|Oemw(RT=?p{qTQC==*?ZDAhzVBG&_h=_WRAVL-h4a5hFM* zNukqAsE+C}GvVBRwzHY1sCC*J2uXMFU7SOUS7^={mG<7rOZN4{$V<6GDEL)l*(>^- z8UF*NN&!p-ntJ&EoiiBU>*yY%;L7`3{z3IJ+i&{^j7F)1CsCVENf?eJ~@u3LE9W!@) zOQ$g77w-uI3o$IGpU1Lc-R+Aerc(I$nz&i~N}kQsGT<_-w5qD8kz)kkpq%sP#rTlEuS3wf_R_}Rv5B|VlmVt z7d$gD%o%GYHhRw__g6V*KtxvvU**!ejfxy>41L^=xtI(!Do=%61)^$X4m%!L`P^zBqkX z*f)Wz`u>sWGAwJ|T?pyVI~JcjQusJP`7O2VM#g8W@Ic!z{|A^u^{eK6#slT_wo3#1 z9P5I()-g|513(TVX3XWa1!4?tQ2e@jj}DKa$p5269dnk5kr}6{f2$v-dP@}>hcmWP zUVuePa|CsW#ei)Yu(f$`6^RdgI>h8?^k-xy`&X-8ZP8BNAWg%qut6moj3)zs_t=Lj1)SeC~LY z4`selMg0xjd-OSV5{oMEJYRB3%7&-{y)88>qFh3l$u+y-`)k`Zke$np%g8r3`qk>$kwYL5V??%4fG21v1lv=E~f_8Tr_9dIbn4e9; z`}o!6FT~>0O-G5faw7R^q8>sPo|+&BC7R6e5gI7vrqhZZk>7CX^N3SA2-YdsldBAs z9k-pNHO+T+Jk1v&v}x*gPzSW!7fTnisHdQu+{p8ruIx0jhM;CCP=9_FLdniU?l1>m z)`M%-H;g+h$W>bGFmZj#hQuF#cio~y2MBmeVwNc@cfxG^#$03|ARy|4-M3zm*wW-` z!StbPPzQY{q4+QQ(VIn6gDOhF7S6NoORx03`Yh~rbJw=>ma>xLI|~zDU^12MI*95D zk{1Pd=}{beJ0S;9bY$jO;NEkw4T6S4W~xEdNLs%Imih9l^1!+aQ5VpvhK+;ig3w60 z*CCD&$x9y7LCC1n-@a1HKK@d?5Euc=n%na;$dXfHsYttWa=x-@cm=Qn%wK~9EW&SE zkFirv6YyU3lMG8~F2;94iVQ^WoQ}%53uzhe6QTC6e6~#JlC5>d-c*81>UuGM!5?{= z&=`a)EGKc2rW>!h<`T)cSM}5CK|7(F^lff3PaUX+&TVgrHf}N(r{I4juMtjLthOqi zZ+9|jWgJ8gCJqJ3OJdNFpRq)sFwJ?BfOy9;GMQ4Q4cBkGh(p53>ce2V@4zu zV^f;pJV6unrbD^=OX$v{_zWGyHgS!7X5{z>3m+=?P_Q@soE3#n!2p@X7PG?d^*Kbt zE&LAV8@C0^gNMAk7$<+_d$rK~xv2Ku_s`Pv5*Ys8#NxErq5#3H#dAa{_niVu6JDO0&I)wWtKint5> zcd^Wi*o*Ydp1*wzkeFtCd^Lj#CEGqkMrM2`n{PenDblK2B)Vs{ww(fv^vE~eBry(f#Yhv5 zb+$;QU?-JX^ysTq-hIC8OJJB2Hn|X+{RZ7~sG!Rw_7K)z)-64uT2bUJJS&dEOv9gt zW6HaSiz6#a?0Jx=ukEspKi(T%-3)!@+(e46csMEm&P61+_9Oxf zDc}vc_H_8B;-9|2*d$5CzFxG;0MNgHqp}0mh3+o2*V2C$HniCU+xyXkOmDEV=aSgf zxELfhF)@ZF1&5$cfCwAWD3T}nv`})frmt(H*gKMuowsHa08(%GihwN74n6w87JifH z$)H{pv$8Xdm+#@i1u0e)aySAx-@E|bL(vn6Pte$S;6w_>B}DTbe1X8X3lGpi>^)n* zdsc|j(GDwCIZ_`1n(Cp%V(>){c<#m%snlRJ(|6n28~yMuQGkXVm_1j0t+J@zs?lYe z*^-f{x}aG`W<>r7M49$t&i-{26&>rfbBw4~z6J6oDDNcU*;ROVp57-2YYhrR>;?tc7rOCgs9H1@Cj=X+X*A8J9POVyRmb25w>)7R|Q9W+X z#iL$NWb`6Q8!*`OZ@=8zhP~ggdSjEW2Q4L> zXX$giD5Y3tu$Q;LryzyvUxnog%v!^HlP}5fKfeusKHt3RX&;Z$eaG)$!$Ty`_V7`D zW-uuXSiv@k#o%ihx;C8=G`u8HMU9FF>PMh96 zI(8d1K7;anbt8${=E+j7C2a0{V*PbK6?o3|2I+yI4PJ3WF4$noamEbyVjshT(&RCW z#{$)38_ld^%7|KaCqq^B2_Qk-!&`KFNou6J9bg7m07sjg@`1N|*7n6Opi3o=_}C>% z2To{@+jsW?(s7*9wo@SEmOymZx2aqAY!1hm4{a_XphMh9yR?>q+J`V54lU1{VV#g2 zP3Dp=6ArzTsV&$5r!xus8S&`%u>(yWCd!o???8oRcN7wL6R`e-2|5Wv=>Wgyl`bB> z`1Bb2ylsrE3Ws1t-hNgyom|d=1)q&)CR6Khb+Gm2fDk7ery@;z(()gK&9VFQ7a3Sn zhTw;bw<5LK*s%M?DA@>7txnLG7htGC;J0~Niz5HXZJAG$ls~LbX1DhFHtw&;wLyx%BsVfSVti^hL3&)fFf}@r(E~rZ+o5SsgOb=*ZkL~_yz?J9U z`nRA$`cV+W(YX@F!XSmNfKVeb98S62s8mB@uqDEZ=ckO}m@Iu}XrlqzM!M4bJeQMu#x(${=C4n|2XtOG&lMvb1NBmw^~LozZ;feA zU>%PV{*-Ma>30SBn}>XU9#-i&fY^+$h^kq(vB?iV>@18K2J+0@6l;OZ%6F{zS{H_g z4fV^0?0LJqKTvwYnK7Go^ca1v8}FgJ%)-e#L%M2UD&E4lY1`^sm(rLU9hu<~Io=9e z`na)DaZ(6Sdn^8=K5P!G7RNa}?t~V@)cjGAS&~YUE6L#;Z{ER9xBcwSa#mZmt+~Fs z^~^@4FB4z9uwPIJj6*H^xavv})ulquE*mmU(C5I8xoR9G6)Uwj`8N z8WZnIFeS!*-dS8cy7ltIpT!`+eNbl1u!I^GH5mk-CVUA?5eQkexNXRvwV}-);XL#C z+HCFgZqn@6Yg$@lTHD%Iz==+0PW=>j8eAbg@S3TvdjB8jdi8$~y7pB!v zYc{Pp2v;jg;_RI$Z6WS|+Bkr-*d*$y8hPDcdQ_EbLndMHUf>yY5$(A$$MaEv7)RJb zSV21mvC{*s2a8UUZTNEI73Teg&@Ah1-sA1W9&c3nU`c#5o;0 zYK3$0U?}>?5%fCh*laIS64%C4>IIq(X*}Pv4-KLHF*_#!*h>bpxYFTkU6w!#(YSl^ z0UM>Bn7QJZ6bc!L+?s$q&obukR0Yn15l@<(L4#)z$F;1k##0-f%YD+#zgo82YUEB4q1v)AUb_}#~UxjBV_&{XC70O zH5~81+Pk;5i-Ythe}-o4{{#n$xo2;AbwjUY&=aZvX!h_WJ?e7%C&P@DId$#ET7s~W zivGug22A|P7IQ+1P*^Ef?MjH|j~Ae^9M}{9(*FAF3qo`g*Y}Ycl?Q!a!3MQ97|O%hfwq2FLH?bc;U!_|8tJ z8z0V5jW9TlhofRhDe^Z8a1o6n67D$N?k(h5e|h%g+Y3D)-DW%ICL&4k#*(bWf@nwU%b4CXNeK}iU@1Tzn%lx|=HqGsI+uM#Fq_%bC z*Bo~)V4*5Jt31_6PYFrP+RdFpY@uINb8bWKP94z1HzejQF0s!`_~Yhb^0pizp5Erg zYIQd=>p02gAVsUQVN6&4iy;LzLvfv8lBAfR8ib8;KfTucgkTit2)Uhe=+brTw;|W7 z72>mme|{ws=#}JJX%OBQy}~E40iC>LUyc~vx~GpTmLq#QRiB3eG9;Mm4z?~pixD(s zI&7fmHb+8;2#%Ue8-(f~#tLxjRS9P|T;zGK-gl+CnB3&O3iP+cp=`B-(kUf2*G&MU z4bRro#0RzW2;a>sz8C?~yX21bIx^Cub1Mv})j>djmhx+Y6E=5Y-=FqF4vNU>gI66J z*310;G?&F)`j=@9bxK%fqWLuJN-m;E>-8YQdPL$`_7x{gCcwBLlHCK2qU@CqSUWye z4RW_>5%J60o&cVr5?mTyEO-q}*!5Kp=kFx;6G%@O`A%&?cMFuaVdbbd{zv$W-@K<| zplu@(Ee`7t5)2fqbms+3Veg%}G(9$@C~Qpa&FNcwQMPw1SzoB~f6?^TQBl3`_ctOX z-6$Q>-6f2G(w)-X-AD}}q0%iSAl=E?7yqNN)_U@mL=|M-Y?89Pl)8u>&X-J$;dLz!NNfPQ2; zi6eYA`S%NIuWt0Zz=y{yL|3y}<|O50+iJhYNxi;yz$F z(Frc_z(aw4zdSF*d!dNq{VnMHt?;d=2z>+d$G@}_Ac71%M^3yw%c;7GJ;9sBIg9UJ1o}K6bupJ}H!EWSc zrdRur&u5KIQf2@2Vwq~1YbW*jhFY&^sXQLtN_1DDLw!hZajhM0|B>uGCcRNp8x3+Q z`h!)iqY0-|dfaek!*;`1e%$ksEpf7*%)CU*UTqO9n~5f1je#9r(eVEKz!e(@48FFX z1_i#PI{GN;3p)SBnN!Kvt*hqsCJwOR8B6z8^&RWWCT!+9qkXiIPVi&nMC9uSR_|YQ z{pqIHM}Ega0&fMU_)~#E5#P&qhse$kIMY`zWP!CDhPNg6`D3xpviq>IiHskoyiY*n zdH_7CvN;dELk2Km#4f5tO?%z-=*>JLKYnxmo`MWKQH`apEX%|9bt$Fza z^qoQrx)xN$1);ID#`hI@wBxUeZK`xK~Z0iqX~DUHHJC z0f_p8jodGGxKl~F_2Me(jnUUvu98Ov%JI^6`U#e$ah&OJX|ovW_!X^;p$<+WdR^z4 z7B7)4Y6ph1ms3O;r%v)N>yWO!x?r0m8RyCiB}i#2LCLFDGP~0NzBtv22j`NA6FFpb z{%QU1w)p~oSeDj6m-Xbsm%DU|TgV$WGshN^Q*ui=9^hc+qy^ELek_WaN5RQErx)Bj!j|NKu<;{2-o#j5On?2YxqyeZ=W&s2j|Fyx30 z8gm5C87~>|2IgVJ`csC-$`EHlSm~h;?0GH_6mUItpTFpiExT`eztULo(C2pUq(`VJYKl|sPB*?W7>;Sy*tq#C&v6}rMRCjb&( zts#?SHFCld2;|K8ug`eVv^Z8T!G1encvf2c89Xd=Xd=K|s z%STM~{h$`2wZbwQOv0J6FAn8TTn>YZqR$z=PK@Uq`$_Sx)-5VK)m> z-sasFfg)QEMTOHwmm`Ncy%%3OoVLej*A)c=p0^KiX9Di*0rpkmTEPNmgQw%G_6acb zdHPiZd4|)&5?JAW)iuEP>Y7uwDG>bG_o0)jh<-vya5doA+Y;u!_XtpV{h;_hK&pVV zdYk95nhJ|Np%lFyqf*>0b!c2yPY3{+_GU{7vFi!zYO5w=)yG3nw}W!usrsdf36?unx`M zA06#*U%xl}^3fz%wEA9InAdu5G|g?oZ*R0Pd8%E?87)30C1j29^8v)7|GAcs%RWUh zCDT`_K&yzZV4pix&bP3}w8gC3n&&!kAYW@BaH>5gdz2h#Can0)8Lf98XY{QqUV03D zcbU0rgbl4!UZ5(z{Nzc!%GOVKX9q~eVs*v;gYraD@uUI@uTpV@VkOa?v^4TqFiBP%4cpM17 zKLAe|i%JL+tr`9WFRuYbdq9L!cLjJ(n#i8C)uo=5HBY7Y?RxBj%b6$j83pnFGhZ^! zetVC`UVS`&!6{Rq`;AIy|BT_{*=cFvxnU@%t0rQJYP*T>`=PNtjLIrZi%?U|q%TTT z1ZD;+%Xks=zcaBl_p{9QG|RkCDfeHpdu!rkIv3QHe4nO~_8STLE|9 z<7Lqp8?UIAdCcTh8clz!lAI#=`nk%SyxknOU0usT3BG*k{o!_=4K5OEc-sW)mL|%g z*hYS&aH+@fD!RH>YFCOp0oi>48x8z}(E8n|L~i#A8-hoO-mF&sFcveV2pdx?edYH%U)Ur=RyWU4e~VXeG{4QzZr17iw& z^MAgG4Y)(mm5DBe%@l{^3~MUvsrX1RfFFW(X6+GahJD#vaU~1Cp&GNAXSW#5aipOu z8U4~3wf(+rp7EZwDHyYL$2eiRx&_@=+;^*})^*l@NczKmcI_6He4>=fb8`K$Yy0T) zl`vWxWfJB>uiez2NQbp%LZ7+P$>U$9-dlo0e7anZN@;LBV1aAdncK=|K+{)E^|l{G zbJ9~Uup<-uv3gpf(`T1hSKRwU=x3$;dY_IdAZ{8=r?J+igDf18d1r6Ce(lo-+D?qH zxP#9%EOW@n0d-DFa=;JgHJV6xzB1t?!uWXN)s&edU~2tB9Mbmc$XMvmG419|b}T#m zPOC0^leFoKVZiVKhfkQmGAh1m{iP25g6aEk<@%>#YQB&Yb<&U2{0~)|J7E>U1lyXm+7xvU07&=E$YqMmt3sEHB zEoWN(b9x>tV6i8VqLNJ(Oilw(xV$7!?M}KkkR!TfSEl=g()uy?>fu0boSFfP4_TXI ztK9(3avm7FuG_gRNS0vY=hXgMVR(AEnt=EP0U^F{!ejFZ;KHa(@7ufe`FVk7`%ClKbRFq zx{V6zzuC{h^l=irTu06`H3(4U{c1H>WM>lKy&XG1#nc%&0BB7X+s)L7gB`Y>2uD{> zjxC(Cg#@ z4J9##HgxNfWCHZO_9A*aM1O^Xq&24Bm?TMlJQ9JT#lcr{f@n%ix(dw10Q(bJ5elD& z<5tT-m6`dsGTaNd5yyn}zN<|bGMOVJXCSP=LPvY(bXe>|4Q6_*#MwIj94O^mk0SaW z_`$ws;`Uz@c&u9MMW`M#bM0y5Gb!@(12bEWdD^Q$tUB?iA}Q>7)iASXjqQ1Z!h}XF zVvteb^Vd&{N##{cf$v-HGM-w{_DtFHpekE6mHMk-+@K0M8<0Z&^>Wof5#9hBgP0O2 zAvuQQdvAxzy*p{l>_%X?t$yaCI&-6gU77m((0J}aKtvXUq6{_3wMZ0j3yP(KhjXWJsO+r zd?NJ!#Q~jYmK%^A36Zkg8^9T9|G}xSeD*pYuoXOnT|;Fe6!0*IseF&BXt>C14k86w zq5BMIL2D6l(UrhENW8#mOfs@@2b+d?voWavYuu|;aRjUaex9dX1wM_`-tkl?83XDv z66GZ4wZ{z2B&P(**Wn5}e>uZ)4$7LG=UeZ{o)qe@KNWQESFMyAdi7i|(w7<0rSac! z+knIv*)g7NJ9ykky9OUwnGcQMw7s6r9qSht+sa)3#&CGGr~rvizJ??z2TX)gUl!E{ z&VG2jxXfmO;)q>0O|>3#U!Cey4JX~72V3dOymPtisP*kmy?PvJ%AvZpIJg+dH4WE~ zG#!|@1ua+6S(996XMic7_L147T4h>!={_o$JM_oe&&^gB)MI(**ODA*U7wgqN`(vm25oDiRFEpPcLfCC%8$kUk=qJLk zWwOJn0RV+B75FVgc~_dFrq%nvd`;R*tUKJu(f zTiv+OTG3^~W8qvX+;k~qFQgwuQbmHOIo*5UXt}3>mx$o5OA8qSXm%y#|#m*z@}c4ore60POF=+^G4YF@dmY9{+x1zh5T( zcOS3^yIY~LtLBG<=X<_gGu3d-I+p99Y!??_+&6-JQX_qGLN z$N{(y-O8Q%H zD6auPPr$;=KwlgQH`pYizcTKB=!ic&*vA`QC<&3CeKS-1Cug{sFvm0SrL8sMycrk* zdiOUDjAh87Qbk9jC@_AVb1YSZ2*CAkYreK(J!ycCH&zR;RbPf^e-Q3zh| zrk?`UKzCk2p!}OS^y({Xzge(m2;}O1`joENjXyrHfkmsdnsAIPcJ%}y!1zedV}SY2MBwpR)hrW&m}bs z#*VOUPjC4=?Ny7e&-XSYsi_VrO|Y*qTcB4VEbccrq+0Hv=!Hc$K8ow}5lajwkrSNL zyfNGp#Q;D8%>!lFv4+B~e^>O^zE>rD54r{3sy$s3R zdF!NQySueOvOS?#|4?iJ`l@~t4$R&QE ztAZ<_%lGyN#wOw|8==e}WDZ2CzbMG9{-k(a;kyh(L|t4mXo7z*6O<8RM@buGF50}_ zv*Ab(H3a;?(Olo1&d+f)ZL?br)KQKCPh708$pWU$(5mgAlq)_bn7cqJCZzABXhe#O za;$6CSK`8kWMYCofTi$UMrKbV6>F z_hx@C!m%7w)qzN+mGSjBdn`!D&=73+zmHtCmcG-Jjp2+d@Q(lOkGfawTXz`&z+E7a z>3e8gaPLaugH%X@w7Lh2SZ`jTPJ_nct)+2DMR`#e^-HOW%zOKv-@uCW`X#>9SX~NE zJyyHZIJC((*|GV?h&|1hQ#5>oQJ!pehTu7o>N&@+%ZS{G)71hwb6U%114C2qsD?w; z!0Ou@VyFfjj;-XZ*9;#x-Cf%&w!0bS&JzPmcD1(k7KyGqyJ{L#;KB6@%!|$PmsGBI zj#K!88!dU@Xg#llU=mQ*oWdK-I*1=6_jY3h#(taLl=y}dP)-@6h@kT!k)JT&aEFnemS( zx=OrG?#3P0pHACek*w$4HCaW2HLU`lLhH|vqD$+dUCJ4rIJ4xIU~2rUzLf4Q^=EXXOs4__~hKc2ixixDWcn#Y+$84-1m$|DY|W=&zVCsxlpO2ws~OVp_H zd*_c_iApY^_PKV>X%j-R3q)jbduq;&=`ZP)w>QrFhEx}#^rHR_jrCtPVeAmtkg)ir zM$n@^OM;T;BGG<}WQy-Sa2d-q(A5ixpDdoDrQ1b;I{H?ln4Mq-R&BfmJ#+^)F}O$% zioWWgh1PFFsgm|pKMhAe8|(h=z?-C3;&>a7@9{P?4=lx0tQVR83l=;XUJnoaLI1ud z6P|xV{q2Jh@x(DYru-eoBGC;5zkep9>zByAVQYFW&yzhXDwDS0_0%U#WGK$Z=xG7G zP*Y>GWL3{ZEjp~z6VA4u1AppatsxNq*EXt|47%)Ujw_ix0$VNX^^nRt&~v_-d$L8N ziSgSeEtphOa%Fi+`Cib3hr7<|KBQG1fLgu`+{mb$_dkL~qDmmYO%$`PE6#>5hR+dt zkE-=&YjUc!k0(#RV{_%SrW8n*@+T*%EGk1na;>jy+0b%>M zhyL)dLbikT!N@FXeQfi6t!wxP%J{dA-~KId<#%!&bU_inNh){x=ii9Up{baVc4)us zqiYg&!(>|C$yq@+FVwXqTVXLpE|}D$KM2{1sZ8qt6Bqco8Gam}ZNEL|GFMzBd=p*z zX0rI{AkcQLvxz)lZ4d#-L2|K%|0Tn$Fgb*Xb!FzVIifs{U92*Q?+x zl;%b-A7S9-Y3mo&@!dPj-&McvODLho7^cIcm$5_A3*U~s9=OQWMA62|L&owmTtm;@ z7g|MRe6e1Butg}b+PUoR2qX|x`J(7)rwMTgNq2?>yETFbErs9<_?thBWw;+Jcr~{5 zi!Y_8Z76I;#2469py#dPK9M1kV{qWf^0}>RPUBRt&5#9ey=?WZ%cD%88a?IAI8RBO zssuc}L{odUVs<>)GBfMZQ;EA)jDuye0Fsr1c^#IYkvrQ(Rbh8?JckSWmcT zEn_#e$nfI{kzGrCBjZ+o7n!B-!OP-^pq#XHA^IRGpKYwUTcX7Wz6GBdHzu2wcQQN! zuzTMwi=h&LSAIkSIeFEK5ul%1zsw#tPq$%79t3b!{Sh5B$LfDHZuvOc!|Fb7?f!Ke zOxhtgyJrYGZ+e%I*YkE;0aH}*`}&)gvpEoYsciKm{TBSnU{>#WGXA#r-$`%U4uW26 zp+aE%0wU9=cfB6gd|UO}K~s!3sR>rGT5{P$_aLQga@GuZe+G;XV_@&lzX?i~mQ6VQ z(iADsS!n+4fsy@2$J}Yo7_^{t#+XrEOs!$2d5QS;pMeH@H1@64H3J4RNC@h!&_S-jkZr7<&F6~+cwQJh~9Q2Jl+;NWPn4gU2&Q6io(7jc>5NzjI5ufAUQOHkWY4^!p|*!>b5u zIj?8cgObI6gR{c{@5mge0QjEm!Y2MfPfzR_iy4Owx72nG^MtCt5joVmj^KV<)_egWaCV^!Iu(rEj zf3`jUkFLA3p-YnObr_U}-7n@__?PtI9huyL*l{!C@naotcAp(9cZ#|CAO376 za#An{pcu%aEPsXrA;xgQ&9IZvmu!o?;RFi~zS6>;U%u`($`k=>6tB{TUH#S%A~?TY zUehk<9MQ7VUqI4p`0=#coTt&n4glYkyv}(iPfu?8rJBbca#1i&9j2<@O_x7>vrH(zx zVwLLXByY~OgSYQKpp}~B**&&jPHhh=S9(fb; zj$q7i1a`6z?xo_be;_+pN6gxDtZS#5Z8>XJYKL(Fi*ns(+P}+$-)3E|aleCw@OLCU2Z09|L z$bI*e)a#G*A2(_?-&f#qc~PNZwM_GoyEUQExvujA$WcUp3cuj2^L%mC{Cxa# zQeY2)u=W*yy^@k)4IIuqRD0nPBvPE;BxONhz;$_g_4tb-N=_k>Y(%AxJe46gx^y)X ztkMMPcfJuOuezYv#RK&{5g`2cQnz#;;9cQK^bM839usp;&JhxN=^WC{68sp&ClpL^ zS8yjvre$yg^{N?q`e!c~&XIMA5>vi}o2+rN*>E0WCF%CNrLx+VV%dTEAqQ=ixqk0Aea~|J z*$5jUKb%wl{e7O`vUFYnkdd0kWF49?A}TP2LFtY6Qve})X-u2y*CA-A*-}4ur};A# zI$3drg-=L9yp!oyhW>I8?5V8-K1nvRd|xQLFXeLMJn7Q+(ZC%NnuAWN#eVHKqBdFl z$NfQYOB?coi@eixmz=1RFK7-gHp}x6gn7)5`CCVOFy9--GO`!dw`BN7a7+!2XBX<1 zOELRaPYyuVBywu-Q;mHg+LWavnIcE~+Da9WMkq-))Bx_D=Nzh!r3wxxQy&UHEfQyZ zQDo@wZc1{}s|YFe9a|bnCDa_FaON-NkQU23K5zfQ#Q|Fr`%WZ$EyXipi1$qoxtN$C{GP2Y9o zuTL5mud=0d*etbG>v~4;Rfn)xnHzVYlWF~(&?g{kI6}m#XyCa^J1+3qR!6Xqg^StA ze;O1trXZwEFeN0%5(#ZJqo`U@`OWU|MqS*Pto(HAg^6mcNr&yzzOyl&}-L5PK(b zfjsczYyFR^yD>0V^qri==YH@9SjZwT4`2|c50HB9U@(e>z2H`XRi}Pu#a6ph%hTuN z+KoH)!)t%Bp$*?E{*?y!&PZTx_ADrM!E;SQKSe;Qbt|e?f3Z3R)_+iPt~Iuw2d-i8 zsvT>xSY0A{gyIf_tYyDmh7|4Iz>W=mb5}QA$rK+08BN%eiq5ftE}*B~Kf5uL$I~mJ zT1!7vnQ0}DHdkuak`~ELw5bss-n8Sb! z_OY0W?;DIeGgPS`tCJbB0+AiLJoE2GQ_wdTfFM#VE7Ue}QY)l6HhlYld)v6#I83K-_%--)iInE)pM4xjC z?|8#_lMmbe8gP*Bc;P+8EIa@G{7Maf&|}z=P}5K~@)C6u?W&Lxd_bzi_ly}4Np*Gj zD@kW>r;`C`+R6c{@Nk<2p$}(wOgPbv+ea2mn$B)u^uEmyp4r6Y?N@oV} z=Y$(U6{Ye&T~|1&)W`@rvQD!x+BE7Hlfry6eP$DxzVZHa-8{-t1fvhgN6sri!yQ#4 z(+`c?UFrFXNhQ8AbJhZAvF7+XW2e@JHiHnP-AP|vJ!xGWF)z<4By5*c;GO6m2u87fS{emA(AnAr z@h$qjm5o-VoGzFCBUi;f(ckJnYJrRVhLos3LYybF{%ho||q zK(wmUunV_q^O@r!g1)ZSXz=UpDI(tY^L(i35H}3Xlfu;O$y`>%>@7N$9|?RaB=1O< z68dZsO;+PozerLiR5gxQh#B3VR~ZG?D9b6lI9Yovs@%efDzQgaVwZdOBuiWSsnw~r z8EJtqKo|1b0^9KXovHIeu(v%_MJboP&cq#UiSxF#Kp|D%&Ehh^vUFCxwOUWWA6+Tk zou^RtDh`P<&Ona!BP6RBrJxK0Ph;ne1l!w|b{;x14Tl%iaa#9o!~;jf@Do8gjC zN*~p{#iRLd>8wU49>nPOp63xT$x%;}m&=Z#YM&Eaf7O7_tglVqLNQe^hQpJ8 z8IMcLO!=XUeB^g!+%1)k?5pWOcDR4tHLMWn4qqN)vBt}0u@v`$P(IVH_g2IM^tgS0et6;ZiiP9indc! zw~Bvb(G?@8BT4lQ0Sm#XN;4l7s2Z~mtr9votKva-({Ko|F_V2;5mAD9_{lg5R0zPj zz;=ohO)&a1kP!AkqcyPFDb?w)P_68!NgoZ?AXoUC&A$47H{fZHbEp3i+~mH%gWruI z48KdM;klnpfCXCV)8RjmTU1usttIq*TJ(NAXP%l~1{5b~5hrHnN#IpVc^j$E=z}1W z*-Ofv5BqO!y@pO=s1NbUoZ5p|jHb^_ zICe_|Tg}=Le7cwZ1)7ePD40kTy0$#$d-%+Tdh8XQsHd5kd=1He%}qP9hvLWFOKDb0 zG&hyI0gIB0Qd7>E{S+SNbanbM6-h(i0=f=$0hNlR*Hoj4qbWk-C=$z2K=6?-D_UA> zAx8aX!SXrHK@gr-<7@+1_^9?sSa#uKcDRiON~p{ukjU=t%#uu-G=Gw>XnT+h?t-|z zFZwJJQ=66tMum&-My9RkC05Z)VH?a+=~*c>$;V}uhugbTh>zD*AtqS6RqwPoFwR+I zMC9aKC}Fs1&r*$X$6I}md|kvHLS9o_+pEOa`5(bsu!Uebt^jAof8H*{&)`YH%Gs6Tn<2)|kqOm1elto3#Xmk6uLIlQpgM-KaDG zYi$oI&QN_Gsex&)3E*FDkJ=AVk{L1Twn_-iTLim=KBTaPD5o4V%+_~2TJa3yJqPxz z7uXQqLQ1hGlCeSD)yghsd1e3p2WU*pq4Pst<;6NOe1U zR#qVDdBm0_>Yc)%ls>4TBDPx~!^`tYM`y{|PNR2P+tB!*)hC|jM@Ia2NPphF`?H*N z3UM2!wp~%1XgM?(7p4&GK?ODcy0o?H-;Hr^bej31f<{p6SO8Ma|F!d`>d>k|0(+gC z$FNh_JF-5wpAbu%U?g)rWvFl{*=@47B_V8i^*eZ$6_;9Kx#Zb!5%=TUmzj_0eymYZ z>uIdF*u!zjoJk{FsJTk+_5w)8aroVi5BM?zPAsWTbnevEa;ZP8iON(9i0bRVI33d3 zsEg^aIC2haOH7N9%jsXF@*G}^%(TC%wdJW#bJ}sOCnuNLR^xst>ro>@lOd%_rg@yV zlpi{=OM}&^+rA-_C;as=?hO3gr}^}?_ygfhPWc}>+BzpT?BV%2$#3>Np|a696LBHg zQi%?}^f9pHH^^Eu#pz;y6o;vck8i2Sy4`AEZ94b`!*7}0VohmumP-?rAae}ZN3lxvboOfFtNIgl@h(!9LUl14)w)O^s9 zkaGAZwmWtFkK86TUgd-{@}eXMU7!RVj3J?g>*zwOJEHIxQulIBqYkqs@ZNubSArB2 z)9YN1PWupB6^`JXVSf)hqS1O4=du605j_K-yX9Nt84^vR^YAY4+#z__()*+8?dxgI z1J<9fLVh4>L{JL;yvSyqKvQpO1pev2^n@`mdD&lsqt++E+odgBJDu>rQ^C|i3T(vF zX4`_uL+69)`>S;+2pJ-c#nnI1G{vB6Vj>=u(hs+tv9^4v5Yd_Pg+$5Pj;A!i_d8%$y+jOe!>%2Uyzt+ zu0&s3yyc~Db1if*(rcZ+g4iog${#Q4Ju?^ok)8!dY#gl1@D&=hT~6?{eH7AKXi4-q zoD#;>bY5sy`yH_Nt}bZ?5mHv?H%|oJCmO^hChK~Tu=Y#~E8D|Pk%l|8 zwWpi>r{K_&IyKYh7IZF)k5a)z1Nc{jQZ_YViEU}?kK=z`Ss@l4}$s?G! zUTojSXwgJlUpVwhB`$ccQOMt9>d>>hTlg9GfeprU9mf8-Uc-Mw%cLz z`=g#BropfpOh#skwFyxX#Qm)RYe&DfvoSEaxU@;`|UuwI1JH-KOd1 zFUG;+f;Xe{!0%4@#{k0?kC32(%NoLmv^xUO>1W4a7u(rlbX`=XKk%`ZQV!HrPB!gt z+w2k;=yz@|%fEY#`C9af8c_0P17r{qV`l*X*zC)z#lWXSUbR?`6#*-S!B#Id4Z(yt#DfQ*3 z+wpKbuayJxQTSeDz;^3;Q#D;>7`V*X2rap&Gy3szJ`KWy+`T(0z_NZ8dx?QD{6nxc zh%%PLpI*Pnn*g2>0i^)5n%QF7y!n$J*u9BRPMnhQW^ZWxPAq7zb|aWk5l0;@WvcIi z0{FU9V}T*(OiRu$^_2dBW6kr^FUowMFqsa&5csg&ksljhscJ`c_~ujZpyoB?8`g4> zL+KXbt{b9*J52EF%G2?%MY%pa%!(U&&kyr^NJ)3lbPRyK8IU>XeUKeYinBt|@c3iO z#GH-%@0Air+#@8RgNJAo!%wv^G_?NHi*lZw#T*mG9)rfi%IpJ0VZQHj=%<(Y)Xbm8 zw=I$U2s3(2>uCB6*RHes&-Occ#$#O-7{3lPm!+R4{I=1Uzn#YEL?{(spE|E~bQ*|T z=6rblYG^BVzLgk-^|R5nLyOa+TqDJMT${Rg0#=2N3A&sdshrZ|Qsj)+ll&}$i8S7K z2{GUFWUcZ%O4uqB`nKnWPEu2b|DqD7V_|iR!H(TO2a}8cDdRf~U8Z(XH1GW|3G2|h zdZf6vfUdCr%$=t{-A#&kUTjTkt&V;D@;&{zAN}j4!&+DM{)2J6Gb0Sc<=D8>`#9S% zg*f@|fQ_3(V5h2Islq--LUNz|#y=kzJd3%@@e4%acfg%4f%BgbYg)j5{T&Yq*K&`F zhX>wMM)5|PrgKIuWDDZP5d+(u7o-}^58DN=F(mZo$)yx#f`vFUs(hbT*_05L2Usq{ zQt&agIsM8=@`^F$^^`4Z!c45#);lXtQlv%?oWkaLs0_vaKo5k9G7J}R%K2m2cLz-PZ6D^2bgc^)ui z-kqMEzy;|uz}Z?QDNoY%>&dv5?$mpit&`;X#&37({wt;6X92OQpi$~;kGC=tHgODM zXM@_W%M&L!lZlJ04wM2)9;#~VN%h?H^EX7$>Zo1xA9?DJ&i4O-&`I-dydP4<4QTA8 zQ%Aa0WG)k78a_8w?%^IV{utFWBtR5){k*dhh&Lc3vD9hYZV` z(5*eqr#8Xj3l2^w8F%Qi`o7)9Qo_t_hxDg~ao7t4*p?j|7{$ol)XIzl;%l2&3UI_%&bYmy5yjc}2r^Go~zT`(l&EaXe~_ z-M&}#jd08_lulkb@o<78aVVBe)7NFoZiYq$UB!V}Y{EXWzJTXQ-8@J=qFj5#KH_>y zN$);?Hwe|f!J=5>qNF!k3XAGA{O?s(p1;_IFW=WE3luf88Vw?F84fQnh! z@J)-q4M)?OzJ_ZO{eW#_REKBbp}NJ9iv__W>{w=aFS&pRcF$}1IG>Tv9BOK)>_{IF zs7Xx)^(urj-WE@kw&V88i*S;i_Un_Y&h@EzjSW}|j&o{UBo&0;_LO1TfIjfMWD-jB z{v0S=qWXsv!p8HpmHZ_Sdunfz;p(g*kq9(j!mjYsa#Kcn!)ghEZ_eCE!XXG~+XGH_ zL0eP;Pd4s16QmlkGs&--1uB*${Yn!(j+W$(c4u)0S{(70v$5B9-|9mGJ3bVJuvpX| z?peOp`y*F|af-7Srs-)(Zpgl$O_2+nb%AHeZ8R?rvYmod70$jqQW;T!FUq35$OZJ4 z0zWJS-c{{_@A$CtuVY8MysQQBZF%AbPMedyjG&Lk{*~L8%=;+=H_MxUndRBHLMugB zx+O*z!JJG0_YzNCSBH7f)H`C2gtF5wgogxK_BU8g-Nv>|HB+6aNyygRfQY8{iQbln znDg3<*x|?g^L(a2;);lP7@;0qd_cyGi48W)cP@4L#DUt>Rj@74imvN|8p>1!U%1K{ z?7p~?(cUci^XB!|7O~uRS&Gjk$PJbZPP=WDpL|zPPxHpLh3qfu0%8E$JUd|rk=uay zrqx`x2bJD4`}J<_0h#NZ#n1Aa6M10LVL=%{-u0LYvw6FC>F@dG!`AMvMg8?$6SSfI$|1Fj4mPOym_VmE&MII-4aM5~xJz*51W|UPhAiixKxa`vs>R-6mBJV&F9SxtXCHE@EZjQaHOgMy`N!cVo zOAN4^$@=%(618c01C402oX1lN2XcZwz2wZ^lr_nEEo08sD*Ocz!NucNE7_v;uKu^z zOH1^P>o0^cKkX%X0Q;Y|UnYS{D7-RgTE|7=exZV&AR*Zo>zZOu_xusjuFMZ09&N** z$xHxu?}I&+#5*L60d>A5I`%HUx>p;#{n>ngPy%W_?a;xU>r=Md;^`D>|4doUPT5?w zZT;1E@dcO(Af?Qw3=WbYeVjT4r=c0hFEQOOuG1@_ChBL$NSGKU6dfKx#wal$E^&fGcuhn~!_@7y(%hR>G9 zyUAa4rgRBj4MgOW<`+vMYk77+$65vBsFWz)t5AWoQ{cwB5@^eq`%bH+)NaRd(Qqhu z94EaO2HO4+ICXbWcxAHBogORW$MNWZP>HORC=>hiHeFL%s^@Z&yXiJA4?L@61i7(K zgU#TxmpuzR?u=UFBnooKkcXPWNso;a$&vjyaa&piR}b+_RhSrWvI>C7XY3Rw>&6tn zWr+RNEFNs#2xgub9xbkpj?#!0U7|1GFxMW2US#84>Pp~Wpl96_MaskbN<6dUu1dE_ z`#1Qk1!0M86wU3+Lan3O1b(q?^Y+gQruWP zzQoD)Yv*GQ%3;Zsvnr(B=Y0iUkuBl+DP}KVz2w6%z1h+5m}-&!8FP@=%1uncN;Dl;BC=Nb~N+p625dF{zv(5M&+z%~eA-KN_Jd z$U#TM6-qH`M8EsZ!5prNIPe-rG4;_qMXs#Qw4Pk>+*X)tN9-`7Z_3}L&?6{-ne?$R ziw<3WDk$()f4BDFoM>wIUT7{tAHndMxoa3{hzSke2`1Gz|H^s7DnT}I`OB8#cM71r zb+A5FWC9$0P8vi1L&27&VWMt zLN}Ig;XK{Tvxf5eq*9>t?T?;++7I>chtto-uBQ(&!L-GeMQ8$+#4%Rt7|N&4H0_(b z3vb&R46eZFqF;($M+|_qGE|KhP)33-UnsqIi(NE^r%kTQJ`KCBTq67}n2#L?u^N2_ zuc3-s;eO&54i8bl0kI6`g^&MgJ^X1n0Z2T{Q7;1*y3SGSF4*7eBKNX?!K}U?A*@Qh z2xiFuH*+Ajz?n2tQ&br)X+#yYsA9(okdu=@8vd}N+WSpK4@3vr8a9(C$XOteMtSpg z=&`(9ua?}G|l1YN6F(;9h<;1#UNUjho3fD2U0tLU;ADF?fsRMz$H^9LU2jzMAH zjuxCf-qReuod#F!gZK-T;eu9$P3)o0y*w!!@uVa-NxMZHS2*<$whN1;va(#v{y7;d?ol(Q^c8hBGevoR+7vpww{GDjb_i!k(&xruSYc*(!(;2g01lkM# zH2}Z#TZixjy%PPFI@k-yqBaUv@supPsQl#1I-?8F?otaujk4k$=9Msf<@Ws!S0TRA z(j6ij&3~2_MI)}bQy#&pg+|j3x_6Jh@7#L{bwTEJCD=z(jbH-dGw;=cM~P^9UJ^kg zCC&sDC-^9}cz6oIBEmX0+jbXKeQIX^VlB#Hc5EhHoskjV4H()e%=1vy;SyTT?Bs)= z28^?O1^?BYA$ujVVe2kSAiNdMkpOCLDbLb-Z!G!XF;^GyQI+2)W#b^5F4i7w6v@`& zwJ3+HsTBXln{(1^#e5LtE4M$bHzH-oT-?L1W8D;A_ghra=)*N{+C4+30Rcs)B?r_j z$U)bLWg-ifcC}n!j1?rYDgSlrR}J%H)v|EK?uqsDNa8>MtpccTk#r)<$JqJMSDUP* zYE{&FII1HWn7c(h@NIWZl2s;9Sd-*htiHZDq&O z`DApKCY;fk>Y$bD@D-@<0W}6J)a3`5ZHh|NOuBEPa|?jretaZuYzQUvo9p>_wc6~? zcMr7g;aMvUn5V8?qAm0bS|Lo^3Yp|x?cQrN2+V9)cHm!IDUZ#@#}NiB#Mrx33;Azr zLGQ5iH6~wj8FccbrcVEX&`QsO@9>t?G@f-N>7oQ0p4t&!MbjG+Is8^3Gx{Tl(Af5N zNu^`jV)YjbQK1Kv0Leutyvb6pKrtfc=p(%RW_}$$NaN7bgegN$^S#HlNq%xee==gp zaP>Thm|*y~8#0pL=~VtU8oBLX#|V4s96f({PiMksnZmTlpkJSGng){&ldlrqHcD=0 zzt~{Rr3s^pzcv*LAUF|gXk(H}$NcjV8+sAJ^HyL$t({7(80{A*RWh$!-qGAr;Qvwg zmSItL-~T8f4Fb|F-QA%hjnXZlNGaW2LxZ$*NJ*oFNGdRrLrAA|cX!OpeTL`z`#$IY zdv&hsygKK)U(KF<@3q&ycdXd!v(#oxC=4NQLUO2ui=p{QW-h+$`kogvy4zKd!4|OR z`jnUqH$_$q<#)R_*8GhtR9Qpe@UH^D+n#8tjThdC>>T}XXet7xySXafG_S8M@d$Mk1 zml9ccJo5Hhddt__WFoGLvgGBldX84XWO^N$Qrp$<+SZdA zr&dn%C~APrvKIv7Y)@lK;(?fJkd(7?yaH-VfN|*xM3=u!{&8f%tG|LPpwvGfg~xHQ zNf^x<762QZM#{55vMaM)4#WL7Ur)=D8ae-wQ80mL9(ZvT>(ij0@1BjK_|nQaL*vkV z5{q{P(D105!_ZSO1m0p*f`S}qvpD{2r#aPScGwmXn5vHkNj5-1Uk*Ha!2Si=WYdhq z6V<;VZHIt$KQfw!&V9oYJ2GIV-aSzAIG5RKvpfFmtc7Hh&7m*Rj;)@(el4~^=+q3) zRfJDDp{?PU+TAtNl$1r+2#sfWDsrU_8faa%W!$SqS>_CGfcaBdEoatLOq6#~)Qgqx z0yq?73#?tSk7x)v{; zZN^zfzy0Pu;Pzx@BKaNF7)obTJ`XLIWzci7n{DMAp!;5XnyPA(-bN2&Sm-rVe#=F- z4~a&c=csfqFh2;U9im8(GBDn3NMTJ(ef7hy$|G*>QurHwASK`@qWo#}m|ggHddL>gCgW;Az6X;l(*bQk+_4{_5&xUhG+~wwAf|36D1V%<#u}ALP2YmZ6Bj-VcRA4 zGF`@OD=1%AaBe;de}_K?TU)cvIiLKxlBU&9FS-^pAF`E{LcDPIdi4US z`8z$*mBSF?+PKxbSF68?th|QEeH|gx4*=+C{VXqQA zqHT>xRNQP-Pq`YcGr}gQcpvsuBE-cK!wH#?y8OHL=1Inc(v;$8c^$QC37%`~0b@FP z-d{BHXB+M^UbEzLrrkA72-%{TOO>v}&~CFj%EnBW&yMFJSJ^6WWvS!**LUb5ILp-q z9rV-zqpXXY4~-%_78v>;;}x{I^TJj=XyN+=@m$MkD?4=a-*Fnt>mBK|5jZ@{Hu8>n zAvAX`pAUoY-I2;ykeQ;QzBHcLugZ7TTy#C6QX;x@Z)2E0-F_3ELq%PvgK`&dn4nmm z&l90F8Y~Zn6V<9oO}wS3Z{jE}BBvfK3oOT9sC^x6f=NS{UT9S_8&{M_)K}%tU|CZ~ z?NvQqLVOUgX%?UJsH(~p_pCjFmz%n=hNo-n0)4{e+v8Bi(YE<~ULu;o$gJwr2;{ai z9)0R!L|`uem0&JV2UDc%9X`FS6O1Gh`eX*IQvx@8!<9TCrA~bjl61(lFg;6+!E$1T zga5rIpioXM2&3piRo3u=m0(*O^jtnWpBlGN5U02m5q6zl166}~Vx3Ho-VRVHBnNt>h&0)3G1j@^s9irQQj1bN85OhV z@I|~#X25D$!4baue!*VqV?JW<_BXotMx_#mMaI4ltz4joQnyTL%3hST+5VKBk>Kll z6OtYAk~ze>YFrvkovv)}7BCOpsJGmoRDWz$+=ftJ@X#>Vo1 zZ>^gDdz`q0nsiI2-tSV_b%-hWGb0F!StLivEvm${xNSjeWRaJ!%cRrE^5bNBB9~{g zmw^kNQT%LArH&f&+%|xHT-mAS-^(`a5>0`E|S(oOg zX?a3~Du#ai({j15W2W87M?v>#*a^MZC-&I8kIWxS$AU|%vfiQ2goz!I(^#9DeX3il-$I3!W55>HZ^`xh zGb!$o&ApMq6!~lZIaAK8s^9Q96&Fk_COSB(Zu^tVjv>$8q_*Ntvvz8l$V!R5Ie}km$D7ZpXiSsAL>BW=LR!lA5^|@yz*=yiNd% zXv}P+U0>*AH!1&tFEiznwfKTPIo&5%F}YwKyFlCY!_NS`661cP>HvhF@Nfg~1m$+r z{hk`o)@m4_hr17{QKs`5FY^tx>$dB>e^)$6i>gB9lC)5Xyjw-~M-j`{>oMflCI9Y@ znbyRcSP&9#2r4QPldlX+uTd@ye57&dW<-acP6Vwc(-BJI(SL4hL00TD>|RW!-iPahF$47J(;)r1k*M6lBov+kvJR={06bwr&SQ zi^arF&G+K7`l*H&~d@x8HCW&-_}BRA9OdcEE7I8oX2cbt)_$`od13;G!=6V zribG>!}0F(Lo4l(;j8;S)?1WJZtsf{hJH?`pz|F(b$@HZR|A}IS9G5yPS78giO(!9 zd+xbEY-Kj2*8_&(f+%_KTsq5b`s7V_RRij$5O7h|NH zGyShm!vTG;AeK;Hq;j%P_z5-;X%*&ky2tndbX zuE@^w>E0lo#zOP6Jl1ZN%XIQZca}}ImTfh8leLNT6t}@5Pc!jnTRDJxM{BNJhV6TG zJ9SO0tY!r2^WJ0Pp>fW;v+-;7yZq21a2wWa5!j(>8R0k#fuW{S=|~Kk40!6LG$zFv zkaB575=vY^WCVxpxZMVz&70#=cH5!hCZhRRPtk+F6xeyMUvs_rdWFpB0A}7EfI@Ps z4@df5QP9uWCt3z+{uUeGyj9IG#Bq5jqu_e=>3nte;{J<#R)Yyn@?Gi9#I?@9!_a_J50 zZuvwKgpLF2O*X%gFO^PYk>^DITOI~e5FG-SD#21Q-W-Um*YG%J-0(&G;oo47)kvxU zjCdF@lxdNnE=HxMO)x9pyGJ&9fuu`!+XH<_3(Wr0a=+s{TL~Qr{uSoZYuagp;ea&( zN)!fmJdi2+P_2g0#&Foiu#)rdBT^IF&&xm<;uuA8<;!C?v*(HXCHb6fwK^zwtns$ zoC&?L3(JSTJU1`e%PL&A8p9f6&Lj=;IGj`e>A8=#svlJ_{rOD*f;p@OVfNi3qV;Tm z+c;!yWqIOonc;*m-@R3&rwZ%@OWEb%)9y;W+h>#}0)JN9`8MOiiQ&4H`2~k2IQ!1* zd_KxZJb61Gx#a=>6K9>NeVuaajTvM`kcenWd*poS1{d5F7Hd7_3 z*xR{tm*G8vr$t0lp;5&|KXmgvu3|!oEWUyPboOEwV|6@iu~&ucKsl>2in`{ z%Q`d^bNV=l8J_tQXZZcz(QSFqEFh^~xA9Y-y}x;RB-yoTD7jHtMe(l=+b$33p_*4+#wx7Re34!xt1HvV|ypEs{D?6XHy4E{##{5*&n zDMaeOE5g0pEcN%l2UUD2O<~e!j9ZPXg^vYbzEeK^RRq=~yd_1G|IGYF7(0F$lST{) zkoeOhoo}?xZoK&8SI!q>+es>?VzpcsK+NXg=9Hls0W!`DU(twJjWB>-XJl~W&0hpc z+wx8zKFCo|JJUfbB;K9xGa)V59^`sXdQ_PzR9{`}&o%$4S~?7Y1>~4{C(Vp&s(SB; z$VZP%KE;RL4BaH`5)Mb-@;|^DS#D`d=N=uNAB!N@;NNnga|m!j{$@lKn`A-sKEDH+D;W-pTq*uNH3jYp<7F%7xs(qBGNNJOF3Jq+s1F$+PtU*k3%TcZb?N-@R`_d6 z^aQEX89(!A93y>{i?A`nE+MCs-&MKm4<#wKF%pc+Ow`wUZhUFa16|8p!h&QKDr1lM zlOQ$0+RK4klH%*cv&~|xyFR=RK?yl02AIAHko6awMrM5L=Cp8J>~4dgA1~j+J07Jx zhPCnaXXw()wF|q1Et!0E$ypAmEo@+QJEw1Gr}ipmPrL%OGyqM|u9uTZOVhKs8t348 z{37>pkF^K-(-Iu8z4_Jk^m)QpjAhckdWT&d-@}HP zl(XWPa=gRs#E&88)Q7%d8!UvuSCI%qS+WGu`-GuLSi0AoIwcjyT0Dj&G|B;d9vM-NJ-enwNWJVmz|{>#6=tZAfU$ah(8okLY4@U>InDou};v#oinM&A0%SR<&mi8OEa zRUVblOedjJwTA$iKto#w#JO>qNw3Zn~oBjnkVHRl$}9cAIp2P$;n!KxKgg9uT`MVdXu*b z6rjzAfM<7#O5SO?`zpoH)%>kK%|QL7BSSsgVE@53u_&Z?Y`kP}<5JrndLtYdgP7op zJInv*9=N}R8u3gsrv9)1!nE9T6E!0BHk))>Ii+B=+|%-sc#U>Q;8ecp89`{-o*m*d z)JI0}b*3`<-D8eOiER;Kv^nha_gUfF;PkFKN7J}`cXV5d2WTt-xrh0xTs9i$kH}3> z^;`;8N`nBn1|)B!t`;wmU=r^mJO-_-+PdA6YJqq(q5_6 zA8$h-Zx{8s23#6`XvFPU9&XJI0sXWg7EhSNTvk?tJzb(F%_h4j)i3C`&N0a3XsHs0 zuX8d_vNFlT(Gx>NJ49MgsrA2wj+MJn!p?4P>-SHbo$r13m$#cnE*-=pJRRps+F?66 zA$1nxn7(JTuGub+B9tIUrI90pg^~^LF6?fxp{O%MJmUtrc=45I>N0oA1Qm9+(?ubl zVKvWdeW&!!Yx0a)bQ#Q8%wV2;I*JofOH-;+_%_uHDXk61ZTaeoc}qg@tdg^_n$q=j zzJ)VyO=sGBdrpG6t>BKz0@en#rQWKL&E}4nYVP`!$c4aK5uUy@J6d5=A*Z$ggg7lb zEt#F$shBKoS+>_#_B4TB1Y`YgADR_mXqQ;>MEUsmpRnFZTjdzIb@QX;@!xH>MmPgz zWl+TQP%nH>EUj&>**%XoD3F4aa$G0dYiJ^;Iz6ymV_wc&j|;JXzK*tg)z+8{HWjWH zl^5gXNsnOo*88dRFIVe%OW*g!kJsxv45F2D6H969=EX5TZmTu2NoP7P!oiAX1NqdeFqQ&L2!5Q<@QPgBLhh_em4%P;jcXVo4PeiwxsS zd^oY+`;FOl^ajMa6khRM3r++>>s+g>d=c%PBS}?Eh z6hc_E*sOZ!AR{}e|IumOX%0dE<8h!8l$cSa^l~LTZ&kzXc3k;X+ z7%V1QzH{DC?1LYsrg6)MpqCW#`r}Hu$y}x2HyeBlT`Nb z+WV2%liJOamt=&nemjlHyrEBq?_Oir8CCBQ|<4D)WvN$q2}Q1}1&j&q|~h=-7K9 zwhh@hl>UJ3_TtNgC%a0m7H3GCiciyXfNlNEO}Ub29joe!@lM=PpChdO8Zur4WR>P0 z)?0eZY;iyNQ!wVEa1DyAvH68G^l59z+CZ;Cf`|A)vpp76~k1&%s1TjB$ zYk0pLC+F;uHM@aLlb@>Am-?v`8^l?%oTz4$juG9iw(27lUnyOnoi=dWQ+9FxiRY={ z0h2?3j@y8Yxq84&Y7j`s+KBw=9WHV49}>3vf9h}!#xQ9-GF0PaR;Pm%KUC?3nA|v1 zid0Ii?QBoTGnSvlRg@j6&dZKv?3!My9mrE8Hsz;|A1e!)S3(nHUvbZFSFE-(DL`QT0R_2*YHL}W^DZ3y zhLp`StY6`Y-d+MKo_>Og%2?(3SQUe>+;$GRXj47N`nO5>Vi z8<(|GPCj1lxP_*7%jT@uX}m;H!)N<|Z}Dd)erV;<>yNjN5`B8|KPjrH^)of%1TQz@ zWdHDW9_wQ)p_mZSb$8zkwVQIDFJ6LQ*jzrEeEcOWGZTRd=cfz|-ypOr6bDhu>c8My z$B9lSf(*TL>wU^r3Vs2;d=&mtcCxCZ1ck7uGp533?PRL`d#dpqhXt&U8RZtWlprx9LAWJCm?7r$rt49mZdxwKLjC3z!82x}5zyFQ zaj9)79jeTql7Ny(<=W-4M}b%7I?zquXf94~r&28`C22`SGJ)KI*$F%a0Sy1Q%1;0~ zd}>gg7y`+cnhe6r2ZkY{wum8SWY)g?A}TAMAOF5YaY8P0bX#5-POfCu4vGOka?tyP z#$2dP7S~nqG-YJ#%4eeIQ81^>bB$%^7hO-{knbq|?{|=pk>R8w?E(k7g4yJq;m;YQ z_L>Cl&fu6_JRLWkwPvqGc*Ai5pL-~128sc9@gS@^rW9Oq^8=zq*8ZAp{|&(!0jJ#3uIVU zk!g87UXCT}saXd_D~$bT4fm|`=Yg*hZ@s0Q;QsKsj~&LF)7aokH+zk{*-=ClbgpDnZaU;Gj1y$(H%Fo&et7-N&%1?-eBckT>c9|ytSI?C7JB2F5J zdllf+LI&Tz9OB9aX(;?e3%k(E6G%iSv}{ZOBh~wuE?T(d-yjW4VzHlj6-4vR|NQqv zRpAw#9oVf1mJK~jyk~$V{RUbuHRCI=kfSI=at>iMRQc5A4l|S7_F1^YvfLZpIK2mP zsnj_tmKmONFl=jxE#xlA^I+gLZxaH4Qf7E*(1kzyYGsqF(0;b3gkqtqG4o7Nit(Yi zn=9bEWJq(%13l_X&Se*trBbp|HI%8AvjF{KpQ4iEz z6h#%*sZouo+*n6H$%5F!u%Q>4vg{zP;w)xE$`lpt;_m;5a|o0(7@|+Mo<@sap-%kI z`tL4EFif#G58d^6!-A@)B0wT4!Ci7;o^^L#X*!iWArNbI>61=qaOs+P0^;Ln=Fh>^ zB~*cDVs)kUbUh3!v+{?DrzW`F7v4Pdt>{Yy&~-5Kb~Sco68SmA#D5Wgb%~e@6IFe) zt3|38-1UJly*J`gOIj~ZO8wv+S#V||*w8UhIXfmeZ|sW_nR&kyTcU0C<-A3h8Q9%KENoxYWWb^yID9+XH+Jba4CFy&eOIuWQkkBM15PdeGWt_cG-8(7I)7Y%?jJaaY z1D$NeBXi?PaI2kk>P?WY=L%kOJp-c&ED$wJz`r4NFTmkrXrX7%o&za zyoV^4iT#96j74`Fl_-*0!g&I{d6}4r*x=kG?0WhXTYe+?e+;|#bN?bJ(_U+r;f0GM z&})VXrFfspw*uAo%Vr0L!m;d^wO9U?B16P~!QF7@jLuA;L+SKJ+>$d7_yePO`y$n? z@}q`~3E^MDjK0YYP3?9NPk)7PN#34ZbJeY05$@+_LOEiU3kI`b;p^%y=e@>lBs97> z+}>~Y*c&nu2r10mlB*w!(a5Ejb3%rMTq5s@(TtiR{MUSpZaSz%oB%t>{?M@nLeP4u z4FPdWXuC`#+Zf0%U1P#LQSOBf2GB5d3o!Lz4%^NuG;43xNhPhspQWWge%d$q+2wy` z#8VfUzhm8oGKhnEmOSqKt7_RZC-oHaKi3H&l@ zf;ZI$H>_881)y-}>rQ$aD2%XLtFD-yAwlnD#Y^IFk54{1W)bR-$|7IP52TeJhm&T2 z&{Cw5o=hsP<>CSa21Nr++GG`3gZb3fEMlxkv{Y1ZF$%%K(iQZEgp+6jYyxve&dE$E z(MpbTq2cd8@%HBxdtv!*$fYyz#KGi3bJ)^?wt{(=&rNz4e7hk#-ueMO7ozVJjv>3L zD7$LP_*&vK8IPnMpWvB zk(vhx8}(z|4Qirv`IsbS{600rcvo6}zM8xI{$FJlX@0)`>J+p9-CAy{zENTWK72AE z?i8QfpB~yVHpd|z?Xns}f_R3zZ+729=8l2B_X$pdaM_UHCb{;QYsmY9(+WKt8`5r@ z(DfqZNU!t19(hJyDBd5ELAz{Y{M%%jBwT&?X=b;TiugxV6&7U?G5iXC{K)nEmN1`v zoKCe@I~ynq=w|~bmddI5g$$<5=0&g8+Z0BA4W9U8KySvBC$n8rTDLFztSsBQb9cct zE18IfVgREkG4=7oK7x%ztC4M@V*m@n<&_M~C`FJawOGFBro5+rijVUUxsi>j=Svcu z<IOs3lEB$zvEkuBSp8D?YPh3vc~017y@LFm2E^<3O+H9+0Ie zh=m??_0X^^QO5K}GG0c=ijQXrQ+kE4qam$Wr4YWyk%nkqf@&5<82m*O)F_HF355$e zAKRDF*#8IB?KKgEO4Sea9+}tK}=qlO9}MPCR<(^!nPrS;U2ULofoo7BT zx&|0z_&%n7Q(E4sVL-wAgKzs>`NO$J0lD^5|XA{FV>RmsZRGeUYckN)@4N{ju zCR3bojclizZx&|`gkb!KhMp?Njn(XjR&!+V zjtf@*>24a_u=EnBEK&-WGQ`w*6y_8$!Lufv}nKrfXzh9Uj!AY!LxpU*mGLpB{vJrLP2Laut(&j~@^c2| z*Z)}0kMqEgcK^J%mLTdV54#VTeo0$Mz%Q(KYw!=5PmX~`Fz|uhSh@Qtv#pbMnXVcXPh1r{#p4JdGGTbZ)=(*uR~-zbEY-r_3Tinwg3UfOX*;+ z0)~U$DqcT@-uKbP2#~L_FhSfYyBeb`JI&qA$WvRaI}lRTf0kctvI(Y#4>HW6g>rdc zjPQ)E8dbG@fI;DqL&Pz*tbU^Vyvi@;?3XEgmq@JmpWkxYFkqpIk9AT!NIM9OMSJrl zA5&gIVhS@KqgZ@77k6)!GN@dP59Om1%RH&c#{6!|$9yP+@)qaeyzxu}goJ;vu=8tj zaSvJ#rdvS!>90e7St1glK#&X|y1(=y#xSGr&bO!T1U@BnSixH7w^v$q1Ug_MYHhA| zQU7?&;8n=VsX{12@a9A>QHf0kZBKD+{W$UFo|&mrWr%G+SXKuHk8pjDX)J^2qxQ5! ztkSFcN^a8H_zeiu4W~rric%BK=Svkv-V&&V--~j^5eB}0v-XH~Yvwc3MY@;9`PV*tt>9(hQB&fM8DYiNxQz>f*|CinE-XZ zNf6+?ai0Apafd~tKXSISjAid-2a^;j4stw2s)ss*Pe#VNy64y@K2xByD^ZkDi6f&V zueS*kssCxr#YP4&uIq+vD`j6}I!bx*Bo!q-S0Wz zSmkC#>?DBEqF0=BaufUh^oGQYYuGBs=Ry=QlBd{-shgy#h>LR#u_3<(U5e-?JFcxF z%AVz4gAd3hd;$IrV%=yZ+<{E>)Q%FS`Ao1jLDiOs;*hp(j~b8eQ~f`CRz0TZ<Ee=fu3tx6V=(vyyG50;;*GKeE--AOx+0cO*k)ucBpAqm!9tA zCe_|UpvWf?B;mfYvCcn~FiE2m>M#Uwr4Gz`yAiK;3%@XH$^7BEj=J*cV(hJ*ANS?{ z`@M?i`z2;y2l8{ZQWSdm>u7`|vE9Fz3lOt%v|DwQali0!tELRmk)PDt_`pD-v|&+- zo3w9u{}cY#_AVFbSD0e%^+p}<3N>>lUe$R~i+BP!&ZIjr3H=37j-z4gck?`2QVH{B z4jTw%+1V}rNb)yPvE%V^L`<};>D7`*&={N|OZ!9M&*^#>ULF9eby@8^nO{a2P=DOc zEritUd%~p=x4+<=Hn>fi(f9fH%L&5}dN4gW53Do58{EbTl#ZFM`@a`@x#9Ln^OX}m zsk-Gti?uwPhPh3w3>BO`zy|H!?T*n?CrXm(&f4>3v5>s-hZfFpTH8;lmlLF<=1ke_ z-^zJEjsNPuhBgiA>MoT13TgtJR=}~f$$QToiutPfPJc(|eJOJPqzUIkd>tI}#hdwd z%1>OGJR}5#tlq+Z{5>n82vhiRkprvIRI5>?6WQMG)*e&Z9a&z7Ah_vo$8KDOv^{4+ zZ&$Z~HjE(oBJ_T?zmV?S)M~V>dwelHu&nG!*T~BbCcZ94jtehSrpBf|n z41WvQ`Jyji78frA_#)0>8RvO&d4SgfOunvaV=ePjMS;ATLl&*Cf+3MLVp<|4jo*Sx zjm))J>eE|NOh%&_LU%^aI-@U+UkGkXs9Bo8d-79<$;>f5af@FLyWc-las|$B&SC4f z(DUQBi-4NUUb(=oWJ>4Z`4PVR7A(OpViL0PUG3#`f{I_tY*}=4BKY0oW3cTXi(YD< zeeQq=BB@p&|tu2z3Dj7k7tI_{{ELzc=DES(O?(U1& zCA?*CaqJqL`d(pGA!EXJ^iAKkIySUt_&Y9Z1C{o?l>>PLmr+lZfP&Sz`xv8WCS_PZ zat~Mp-1_tc$;SRraP$!OI3>S)L5|hGK60MFmAN4<^XdY|e{}-WWx>zUHP*rHX9LyM zNfMI{9ah4GZO4lRT*tcwoQGQlyq8SdOFb5kfai#{3`qvC-SSge8uYj8ZwG0|tZ6UT zZ)Wfo^>3kZ2p1j5+)*Jn3_w~+^-UFV70X2)O_^6^M< zu@4Fc+6UI~WB0ss_SHV-L|jPM2e9{oFIIA7A~*oHy}q0(9=oB%D3)<^!<;A{0P9Ft zTjys0m&mLg1J8kRC@kgh6^ri*&#*k0Q#p#3F4~=2W75F2o1B_Ju`rv@M}3I*eZs!? z{V%{5#>o71SL*#6*Dv*-2HA#akHM|LDFO-w`mmoPuCEz9h|h2=j<|6-ylFA0 zRE7kbQA-S1M0PNm41W7Waji_zhSAiHjuudu%2v8ZaV1qsVv4^jER^MMPTLwf-Rs47 z`u!yhvu))kf*j97fQrRFp@ZP{>t^KtymL9mby|y=$lo?Lqj*kEb1&#BUwql3TnLVc zM7}{?MRlNsfhG!F!Q>G^5)|ha)j|>||CfN0J*Ko?$cu+A;Smt{bqu{Cm@LF)v3sEK z&|>vicE@A=r&{jFKFG<3y>+9u?SFZUpZ@QF9cjxaU ziJ!k;XKy@>yr#3J1nlJd>Pi^lWAN){fd$|W7ytcdQ4$~}cF?6urg_d(4Qi;+$*W3w2VY3V&gP1! zpnQe7D)s7B1DOl_K~zZu4Pj-=O0j)o*}07}RQ>U6;Gz;)dyIO7kd^R83-J@icZ-f^gTjV7khO5py} zod(}^_08aQRnjsf5eS6U_;xE`_!Uk+Hc=e+N>Lb%V^-^t0elb<%9*ZlH&M^7YhbGM zcr}R$H9@pBhFYdBWuq%|bj^BM3GJ4+Xi62R6_o|mkg$lqFRo?;`rhxl+{bb*0LiNL z=xjUqDs}YW)b@wwb_GNff_)H&D|D$cJG1I%#|0r_oqua2rNik>-CMo5{DM8s9XDtg zqmS;!HV3;1+X3_!Sy<_`zy89{6(>Yc+i!q>*t*>av@P;eS+i0@T!QY$eps--CF5-3iVPkS!+zp zKo0)~ImSOKU$3U^-T!BDJP0T1Guj@UOMsTg3d6U~$Ww$Nl)(~8PoLmF=KB65Iaftl zUcgl5XJ-=xK2#e7$7KDT_Z)G0nx6>feCi>gS-Wj!PdLQML3IK9dYf@y(rGklu%UQ4 z)_D%wKL#WH*dcXgo6G4oiMJCQ5iF@F=D0ELcjrp1MDwFP{^|DSMKK-O87GgLgX)4a z(LXeSu3hbjPZI*XfRvshu>hXWysTP7sy=AnXpxB$kHD}X14$JRo`-R`lNt7linv!r zP>EpY1G%1!uvInoa~IcLV-ljyMek+0p!0pR!8Z@0&Gzkx(ktTeJm48{{P@-^ce>b@ zja3GfiIZdaq0Aqltfhzg1l`Vm1E{mkn$s8({w=NbQyF0eK73y{ygK+&TZl$(K>{Zn=JY@H{nmFYDK|Por*@xRAsV` z4{f+a>TsP|a@Ojqq2@eO2-QSI+5#d1^s$DrsQKZ%UOt(7{7S*Y2SF^o;=oj*NiB%n z3J~hYlY5emkBeozvJuP3Jg7ITtBU-7pEfY|_>-P;n4L72n6OnE$Xva?L0mic9h3Sc z`u~RKc=SmYT&Bw)o&g<#SKT+>z;>-Bdm>;Foq4#1I6lo!R*XxYekZ69{2Y)yB_)s@ zOLb7OtU}v-t(%=1BZyZ(vaAvI>g7ME>Z~NM>u} zaWCVVSlF9r7x2{ka_)=a&(s;4t9rn9B|nfTp{FUnZ<^!zQRQo5uIk|URnIi`N2$RV z(=h9X&h(u-`0Wfri?to|*VKpZYrFKSoRvr2Qljl7mxPoO0~M_fzFm^Ao1F4yUU1yD7Bkw^g;QjdMb{sS#rQ z){Bv=|8QEp42N7{C4vWbzQImP|!>Cw*rWp9OYxG|AoV8KohSihi>0oX3q7=uEw#cQ%yGeE^NLihkt*05J z$Fv~Z_>LXs1pbcH!Jzp_?Eu0CA`h!nNt8^vXL=C1B0zn1M3*^rGC29bv%_7@#9aP( zx1X!}&o(4s066F#(n+HE?feuu3j<(---}P>8A;6fjNc`rwA9?hHk5z&p~MY)jv$M@ zxtW1No+B<#Yx)!YZ4eFKEm{f4Rcm4$b>(X!2A7_Fsf_!Cu`7r;?aT_@` z!!UG49n5E0zrXKMIK4sYB{#93)^5v2Xj76SGr!8|Hhz3zn8t+W0iUi=FB^|LURLx^Y%o>*m_p{r}fBapaM8u0voy5?~Je9KO_k7Ri&+-z%H5iRy!G*!IxHK*hBUF8ea zEaXB_YyAaRXR3V}VhV+itP`S!0`rNVRWoaFO5RB5xYLo1kY0oA@e)C=yY3;+q!1bs zi13rR4>IVSN@BXlN-b`idnaxCkf?ywk!ASuJ;O0rnt)?qX?z*{j_`K+M@k1vnNrl* zX$Aziy?4GH)_$Mb<_pta_?4|Vcm?Y;mD)9DGc>kWvS5EpfB!W+y|REOOO^eZDL6Yv zP-Eb~SO5#Q4W=w!Yc250MOEJ75~8Md*+D9FRs$FZsyj$JDm!?YXTnne@4Gf z`|ZJ@KG^;41q}&be$l&7#%*N#N8r>u4oVLCdSPBmzQ}~Wo*(1&Jed`Ot7nq9Y?*pU zp$0L*LkM+2+5}?%mhYTf?s4eEJye0q03L+2M8iRsU%OBoikIeN<0nr)AdZ8Mf0++e zPEiy1U%<~Z67qmHWEz3xd+?CY5^#S5T?UCzw<5D=6gcvfuglO~+g5mRie_PFjA#pV z5KUfd-fmh?la~xkH=+$fxZ&S2|vmGZJ^Ei#pC|LG{N$;l0%qL-&G_i zPJz8vU+*Kw!~Bpz{IBxS7<#W+WNx=(pCyZ}GSID2GZ1nwgE*l-LNvL<_;1UlSYM3* zN61Z;9{dCYfjB%TY#m_oBtvt^Kh?CWXSe|Q;q0Kg8U>6Ht28f3&0_ElmTVebcIz|d zJ4uU{UuGs*x&Lx|_HyBpo#vBzUG8K;nm-%y_jjI3o>kD#lU`0Uhxv}Z1~0{!{2Ei{ z#tzLqKS#9H@lv5_9+oz5Gt?iF4s-7fTeGSm%Q})l%X7~Owf3k#?`M9SA^<_tp&5P1i5u&Bbf?N>y)l$II==|)L` z5$WzmkPb;nsZnaAO9Uha=`KN<@b%>)_KY zVAj3vb+79>f9G}GF$+Z^u41r7#6rG^{&!1S%F=#AN}mhx1-u@nv-z{`^AhJ|y@9&g zFwMPkuPV}3tU`%B@D)s5=A2Y5NR+oZxb?B07~%#(FR^V@Sxhl1CTExBdXDaDjLt2E zd{1=Z-x!WP-*P0XDrSGc&y?kyBBGebkVsP|Jd0IsP7?n&f2tMxz+jL6?I%|71o-JX zb*cIZSDlDrGY?z)_m(3g@I-NgnKixJH-W~K=}M6W9dCh!vve^%-Y@l(It>DiQDgg( z-hVJ>h`WD)sl+LD27C5Ar&lgAUl+YMZkNnyTj?{lvlJy$A}+IZGwrSOY{>&iTNA)6 z9q1FVlOf!G{5kiitAL_k1)A$ZSkP5qJD*Z?d8(ZY)EB)+A}GhUf_`9$QY{}zf2xX^ z8lLgpn3pdb&W*`ZVRIj2||g16INjbm4VwJNh>7 zFdw{Cm6gRF3)&9ffQeccyz=80GM2G<4id%IQkW>jZJG;_0nU3cB_yGPb*_IT{qZLB zW7y<>U=*QB&dAW!_nH+&kD&?cHksQG@A9%%TkSil)oV)IWwZ9%h-kS(gcD5IO^IKe za@c#8sradvuV6SgjxX6fO3B}51_Yq6ecLhGZ@Hj&T5bB+D_RvcVfGa=QjaHJ`sm#1 zckPwo?sI2tAf9BcKM^<0ohO25ltEBv44K^dw;C^bhKhEWfOI*S$BWOR_C*j=GLBNJ zq4(xU-#uE6sz<+u@~I099zZX^LU(0IzAO2%%J=o02+pfWLr20U52zsr!13PCoTux^ z!z&8%m8;Pc$lhj57*&VP`89^3te%jnPE(YM!rbdEe|?N*Q;KKfn%!iItDI2coyy8a z7iFFvuU}tD)LTMLltH%)C$eP;lO~5%A@Kh4vOt(rg;Z&jU7w6Xav>dn>eb5vJMldT zr{)*>g#ID!n71ZPO{6#08_fj)bmMmix z8}$}Z5EFZwHIRDvWy23u+iO~q&PiVA|MM;SPWQXh`8x87OxRupgIb z<_wMc>}*d8eJHdezIUX1dR$1QsqlcPCOYZsw9zL)t^qY(28mt7hH7p;t(5c z!MwGskgLc;&D|{sl|Hxy?%V9k0X{z1M==j~AkPh~;>vqxH7SSO`;8 zC^`FHk~L#Ctddiht@%`iY?K>|7p>6h?W+4Jd-!2Dpm`2cCDQ4)=h!g60*I+_?^#aO zR@z3#_SY-xwqC^QQAO$GESSONB9CktAyQZ`|oh(x9(sK%QDQn zla0t0zet+dvrV{6E?9;jwD*oQkTl8=et&M|2(^pcL=JSNu-$u?L;0NUs&Kn+ovw_s zPX;Jm(h0;oMyTXIPMCOmj#~7`jL;6>A2u^A51{TaRQa~ec(#hWf`i-jY;3Z%c*G<# z^=_9^jOin4>Dj|`e;{?Nc2nt(Lh*o=2Iy8g2n5(dnzr>NHR;=vm3b^7*h#u_BD?UU zLtG$TiiWpTD@&=O)Kfe|Vgl!BJUH@e&Hb8^ z3eK4lmr|;;-H7Rz8Ybh8k?QIEYlA#X0nFWYGjrKHbnP3-uc_njGVeJ1HjEtS0+*S! z{Ba%g8u+85CS)Hcq#2vw*zD6Pj!ggAs!|X39kOY4jCY%S$~|#a2eRJAo=(;^6^D`g z@^L7$jMFHn@@|Ma^O|0Taq>*Bx9V|D#CAV=vU}ZEH_taNHXh~bll0$9DYYa&cC8cs zOPwODvHVf#7^S`u?Z-_Vo>bKi%=2G^EEW51bj~95OSF23d4iXr^0^$prEwH-a3o}H z@V9O{e{PIkHXD&LIdD-muxPO8zGA8`k16?DyAXqK*`2gq#HH}|azMHO($$S;J#+T7 zt~*ASXpii~ePE|t()$~qQ=R0kz}kEl70ayJPNY?k&{vcQaK)^v(8j!{j{XwS4#d7w z_14soRD`L_9N%W0SZOF-zjUyGIRB3+THB~-Xe~*#K2ZAGC(@petodeX8?9VOXa8h& zJ$=>}ajPo(84+bwvth4PzLc{~+w!)A-i~B{RIes!vq_-@Uzi$ORf-!`)W_S@{!AE2 z?-wJHadxS{7=TK~E6=7J=Rqr!sTu8>S^G6QpyFA)J@c$i7{jfOce}P;^VH;bKS^t! zhg$Bv*LqjsuBXIvYNphROyo#$YVu*ReLqB{jug{Ll7?Ug?oa=iJm?dtGJ%>sM*G}v zXTNs*-7XspnIS8k?qjSP)eJJ$C7GZV?ITdhg=CF_l&sBT`zlBB$)-P(G-&Udn-ueC!|9wHW?NUI8iAe(|LnI!fzF~0itRgJA6Lt z8XO_t9`r|+Y^;}xtgZ;Pkk`WP41fvyPTS^%gVxpqVnikzQdD-tFyxa0KA=Uq`u z_FUrWSS&5kcyunL++JCtH?=?T@vPf1MH{IkrE?74eOXH4JWZhc>ZAw!yE(fi8H|_x zlmK>5AkD8KxixN9)6L^N??zAV#~>p5_KS_3$=EynH?d`6@x8m9g%6*^6j+p+*zslELTL-Y% z55x?$NTfI>yJO&LjoGBNd1}4}@t#3DHv5i<7c777J`o(?mq{358OQJun4FMZcs=6C zzNd%6J*e<%0tD*dA)ij0hb1DTe7BO;aG%JLPhCIm$1=TS>4aMbM>DUt{2v%9jY;Aa zdS4i~as|~)PAyW+$PsbTq-!tU;CMQ4%kwaq5NE;iXsSAEDRMJKMc8#6qCcG|r0kLG zIPwE*or33ak6_8Yzj@pQNS_sUxsBBbB*i|rV&{t+v+*`pS%a?)qtaxLc)VP-z;5-j zvEt@dKW6=&%i?ACFjfU&Z~WQlCDmxc=GNiPIiBD(oa|xpuL)&RS=sjeJdoPY4bLG_ z+hJ9dTQR`9^D8Z>*ewiMN%?EOhaJ&C7F%oesiBt^ISEns!eEL5eP?Pch57e!^Voa@ERa$jAQng&a=h>dB zA}&3{%yopGeOKA$c*}<|Ecmk}S zS|x^5ID|lGc{{w$_iA0ajf_@)R*AT1-HzTT;^bQ}JL&iTE+>V)s3_wglaYb1mjomkf(sBB;#(UbD)7(BL@Er6ZV`2`SyE!)G$>D!&+acC%K(C4$^WqjC z8z=4j`AS^)zd&ZuJMZ>ZVJu8`D#F6yYIxsWW)1wo|DaS_cPt)`J+EXpa^sJQF@i>t ze8taC@$%ETQZusfkeXn0{b~9oQlF~oy;^H%ZjJ$CnJKmLu2Nt)nWXwRPnUce9n~iI zBFysP+E@3l&4I>Pu{-J8Gm;VxGo0HUO0mb{(wa8-qM#Jxt)Z7Aw%;JKGfBqtFy)d) zc8KK*Q3Mr2O&CX!*C=`bO0zo1oliVlPgpEdrlDD#OO>5x;m>ock9p(s{}yQ+9slM<)sM@l?@v^#*=f?QO=MJ+H#(VhrqDhM^++l)N%N634= zXl4;U#-BGZ@|on*FRh=qT=^rtq;O|2C7l@zm3HO~_(U%knhaFhf)$H!9-)PwGh=x# zRT~a=YJgG77Nwq1Q56jj{s35Q3&{8>q&oXvDerD<5^s`PE%O;Ra$20YWRwZ?$q=y@ zA&rtLE4E(q*;DOXqiCib<<{lAZ>+qXmy7rF?4vTd8+qVTk)ctg6=&ttwy7nruBx)# z@jbe+pBy_0Q()VEduh`~pY3`f#vmgaf=@S>>MVF*m}^|OMh>>>tTv}r{Gloue(!l^ zjmW!|xSU;j@_B&l<`ri}nM%tz>@Huz0p-&^Py~`B^z^5_R^|?F7g-w8>KQ}hFLj#l zNKl76|28AdXTPKF=Cw*&S%2t#bI^8#8rWuK94sWp zbqFP+;SfwRtEch5@#sKbwR~JzWuqh}wcxB=*w9^08NZKS=Vhjz{jwXwp4=jm8S zULoAo6HkCO+petdTIZoW_Re5YKRF>8=gXKRHDNrSr?>W&qxs$BIeWmzvxknwreD^i)YuuyjmzG#6E`XkT-LLSTQLg^5qG0O+rf;Gv; z0q=kTrB!9-k)F?L8+v!x! zjCM_H@bVQ)W^M%Kqt&q0Y)rl(QLmBx96@-7A3sx{p6&@{?wtoT)Q+>DoO%(RhSEhV zOo~I5?aF${j{=wQkd}op3<^nPjHbkiL{MqFB9F-4h`jfHuAAEmo0AG+s%lLUPz68y zL@aSgjsE8F3gqy+9jBsvBVuv$cWl!x1}=UHe!kB#18iDdryfm->b|Y{D19%h7qm~R zEUbi7{_w|k6(l_tZPpJ_itfA1)XvAf|5Z1)DZzDC(19|j1$~nREWweVg>1J~1Egg! zU%862e_-9)$q6PpmEPs|xChzavon_9FK&WfYuoD7(=!_KrS0Q6aV~;)i{EsEJ2YCA zq!yes2-ucV)f$NzSzmY+6Y9t-eNBEs4sv^DLoNI7+WG-~{j^CG;n=?R=a{HR%5MQS z-Xm*iMb&))yy^jv1?QDkgGClj6<)z&3!o^Ul+Mohy`;t{wH4S$BE_9o|H~bSLuGK- zyk&!=lE7^txw?m*ROKihj|Q)#PU{WU1kmzyCgf9IKu(K^O=WH5ggPD#%pxjPMC(&D zmNTzQwBhe-f)1FQpe^1TNA^LOzHcg{3Ay-5Cbb_X2JhosUqbn4$mGP-#9YN;b(Zy9 zIEy=w&3(u#iNG!1bvYgRNX$r|Rf5h0BD{8E_Xqlj6KrCmC@VLcP0?L`c^Cjx!w*rL z=f)KCnHYc3P@E&9%JTYw@BOe%_^T}74`$H;vJG9&Ud!v3Jlp*6B3x6{JbI$=7M9N~ z7*TVPI9rVRGO8&%n_?-qUdMj{{VLy&T+lR+TM|C?-z1!^_09jl^n+__`U_x)tUi2N z%jj(bgMQT;b_tw1oA@^*$;+?XFrTxNL1F)kdneO0%nZ6N2LHz%kQVdCYi3IA)0^5# ztQX)FBvw!nH!YIhc(jo$En(sopGTm!gy&v_98-rvJ1$wxG(~X?PLxP=j1`fw+|vW# zDAl+lpRo$M(1-UWIvfT?0-WPF$^+`6hLo}`@2b3V=b)xP8W`QO5u z>OPsDjobe`=hdi*e!2YLT-4i!{Ez)RcHf4-Z@B(nT>z6)V85f-ZajjepI(Y}X{*|d z_mYjDD`wjfPI+hB+r?nJD-+*@3OT~Y(oHO#AsGxe8VHy7&I{H4e3Hh<|IN5)OP zlDvO9rAA$RJN7DuE*3=C(Q2A`uq66xM$_}IO%8)UT1X@Gi0ouaDZyc?d#LGuZjqbi zP%Bwa_4(IDX+<{GR{XE| zy7LyT_*Su&woR<+kA?buc^nhAzt=mlulP^|&}ldH$x}#72Npv%RkD(fSuc35A-XO8 z{F#INY7gzU9;FO_Q698Pou74BwoB`WEiGmm{G#<2S^V&s;J>N0m?v^R_n|I(X6W?M zOJx-C-)^BpKi5iGN6U7lL!cdCn{8rYy!9CboK`bHU_n0`O*DNO&Oghy>$dm5Dt?O^ zJnOG0{@bJ52XfPhv{L#TREwmLlq~%o4^g9iq{!&?<~9+?y23_ph)3`{^dY7;y(jQ> zkvgRWKxD%Wl^Qo?O~^UKXlA9>r}C0q-g*oH?_+&F3JgRk!~!~t4aN%JsICVoV1=eJ zR(3LWSLb=`Z?wr_9)<`R>37%>_a}6$4Dn*hye91gT0v5L8X13)vp1}%#0&dTRvUFU zQfNMz*%Hm!R9p^{uMdAj95aM`zL!E#G1>jx48XFccecJ0@0i^xmytpjl=hVN;#e=- z_X$PLA=~Yi z<90cas@`HBR@o349X`u}Ni1SbjZs3STDlCL^^g|PEMYu}k2^v)AlRP2kFLJ4>`ldZ zW^&~M5_^3T3_xU=NJ`viRdf8?D_?|U?ZaH>F!x!rNJwIRs`+&K-QKVZ{<8b2mhSm! zrMtTt#+Ss;rPE(Uqi*?mFey!7g{vnrQjw?W5%x^p|1X@mD~OKoSvH`vI&FGAsQmm| zT*G^E<5m9D*P6-&fsUB*UpzBbgX+9$@51FQVBHIQJyt5%m`u5BiWSV|ec8P(u! zr3Ki$XCMCj8ZrHAl&q<`$I`HFap)^{XtR(d()@0xX4{kr6BZ^Wg*)Fx+|3`9A2;}* z=P75*{^LM7T6TokR*@d}g2Eo_t7Qluu&aG@7@oOj$T)nLU#GfYHFNd4ivJI$HtNP| zr}j&iL163vXs-(*>1xKKUq2!Zd~B&##1%?;Zb~N*?;TvV9 zC`faKmu?^r_VAP+kNrSAD*U0JeSFJ#JcgU8^`)B7;}s3cKphtq7$pyZ!q@FjX`d=> z=(gdZ8vHV`Kn6wSGCErnU%p zGwO=d+^!POFA*K>#?#T%IF$F+e^wFTC0V6n=w+abv0lEEs&68Y zTxCZm%^-S1iYJ$Q1|UZ0Kj8nxL1QbBbNVCl4Hifi8)28IIBC;i6O)7RcbC89!ZgPQWd1{?zvN+~tfqUJNNpIc_VS z2p7KG^AO=E-@??iuaa=BKb0Na6w!Us#Aq!P_&7!5#|3QG=IGC}tR#Bf7`d{VWe2m5 zpCkAn1yk_TNrh>$j8d~!AJq(*n_`)Rt00ViqFu>937wdzW`0wiR?*3MpeXA5>wkUL zy^D{{SW0UP_OyfaHJPr}bbnCkFhDjaV@U8>zYW}fWZJqxe`3Mj{n}L*GGyO{04F)r$u2FrpIqX(w(2neZWPrRLy-Frs2H3;3dy3`s(A zxa1ApI|CnPUjc!%V*4(QOu7F$!EXs`6#D}_@wrdW0$IrXEXi4%z}km3rG#x?aZ06{ zKz|d&KMc3J$zsYC4Gj(;2;HYBqa)!I!hB?0BqYBXNH?h-^r#D-;EJ@zE78L$FnZ4h zz1O_4CEk1hx1hjGm?vZkva(pbR(-S!nYBzmfTGk6N3Js_8XDR+(7(_r+a|eM679eV z@-X!w0Fu27KusVhoPm=m|Br9DKL~vh%e(BcqqNB?fyxzgeZHhC*;5Sm3m=`u&FD#& z&(Y=^l~w0tlEesui*_;uES!H}l~;cd5cC?&zfy1CP|maA9Hl0aq6d4#QfjSyBy|GCt*bIvH`k$DevBN|*8RbP&{R@u6^4Mi_kDAZjz%R@X4#`!*{}%$*cV zMy2=Q0LDr0z{7FJqYcQMwbegkbclR+f*n8a&5hVT=ATPDnsX_=as00QA~ex{e;LO| z-d98X8-P4H+@2^hM*q2!^l5{VfxLZQOg>x6gR@5ie|9btLt#7h-fftX4R8~D-P~99 z(;)QDUHjR4Nv#ZQU!tEc1J$8?HRVI;f3MPW6E(^S4bGj_e$lf1L_m5+)Xmex7DQYJ zuC3O#MF~;Qykd}?5M4U%)`n+`Mt?N>oZT8qlal`9wLzb9^*%~VOC=lJj^X@&=D|6i zx_rKw?cMCywmQV?+x(avWeMSrdnsq-FUsdc`tpHt?qlWt&a*0yND#0-u+mL}NJulA zJ0Z4tqB@Y{zx<%O{TSB$#_DFlbCrnmJr4O7lS^pi%5%h(Rx^OP>A}}9if58!jRT24 z&JI{5TKVY+ZW{xm!$@9I2naYUP{~6{NeGw&US}LtIz}3I>=;`A_iT&!jGsa*!8CX_e6_78Qc1oCrwxB&PSqP!hf{$8^xHpRq|0pkKdd#iIrsKs`$))oB zuM^hwG*lH06zc6_@2y$hw1L{6*!>!gzrPi-B~wJ8@xPqpe!Xp#t|g|Jbog~5=UbId zbN|y~V^`nQ&y<<^?C)#Wu`8+~MROHWJ;5&G8&4J;+FH@yM&@`1l@vz(^q#k3O(K~q zUT>546tO(G6d@#fWrQ^$!CeKvtJOak|Aw_Nu|V4VQ8_0I-j^+w@A_!kC%CV`O6{n6 zwZv@4GAF{g_%!FRkK$_hF>G~s_T5oujNP2zt3j*-{`v@W0SA*Zip3G^C(2+AhZ z%>69FV(tI8R|^{K}_PZ6X3@ADzoJ5Qg5p^9s^)SL3xNWY|Fx?J6TkI{N(l-OA-!qV}~h)??j_ttIW|Z(8nd_a2oou2E652o+R9Elou&+a0^z zIW+ZT;Zp(Fhv;(qxsn~FPWKB4GAI$KN(8#(@u5#grBl&P`(GNZk*h&H z`9TLniF}a4fEN1;4OunIhYzT8P=|kTYe=Y|uSE?*l7O{=`>l0d1_%tummbjm);l%| zIxp^hL}h%;_*K{1t7C)JFArlL6)O2hY!BAM_!$uK@h9VRRWbIQ#y}V_cKcT=E!rrU z%rOQQhxT}QT_ohcH7ksS3p2qFWL8Xfe~0yLS$7Q_@j0hV$^u2W5ITp0n_|!Ym^VG4 zS-C`sTX)Sdaq{1d=enkVg@xpPSMt*edc+i?ENg8l$O$%uU$Xdkkl@7AultPVfejuD`sdgH7zdr zg?>-^RGjc9U7C_FSl<<~D?P(@j>*>2ZP4p(>a1C6G+R@0%$j^wz8`*Rs7!VYGbYzLoV3`cx z%2izP29D-E_f8VXHgkhQx0a@;WP!+0Xc2`V$sy!0sOM;j; z0A(m}^SsAV_GDhjbL>v15hk)O;8lBT1jEW=UbOf`x_jN&=*zn0)9uNt?=>ywW*nSs zp3ie3y>z|LIQkf#mW97i8m0(3$hmU-`T9$#l==bU64ck-VPfC7wS3cEZpd2zD+_<9 zFT!b_`8b;#6wy&e{%P94)z&Nqr}Ywi=kF>o@oW*X#aSK?PG)7rsOmF8;?^Q&N|7^{ zh|KFv(i@j%dl-bg26CEi{X&of+s11GO^KRDThix-N0-~qqDNTX0d80R>U#)Av8bAT ze;fL?m47R9jUMFkK@_CnK~bNtVA(&U0e0LCoBW;l6~n||3WksX%wiy5z6)H~8m1i> zrp4uN=)&}~_mq_L8QHq|BOCoUz~`D`@d)syju&)`>XS?ABw@+6l&g%^5OF3Cey|=U zeOiw-UW?b*?svJSx{awsjF@UBt4@3c`PeJ?A_A?Ao6jfe+VG@0vcM2#v-{=k)TR;6~2&?dD;fHrrC5|3LADCX~hKY z?VqBL#33i2kFbSck%u7{Z79jV5ssRV@Jza<7(1^(2vRuepJ0zN_1yGdB4y6z!1KqF~n+^em|b111FFY&}#y z8tLeI`Sko@xu$XsaC#+J6kVSDOxIU)4l>!?4HRyC-aY&UJl}3YzPwh*a$0_PT@%{y zr=mO+6YOTnDxbW21^)>-=Po9A6YsFX_2-Fw%nQ+Kvlsq17tVm4B;L+M2BjCbMcM<) zMMVBWn2~vm{k%#K9gpAFmh~3QhDGfn{4{y!g0Siyb(MM*w@=V-rY49C9YUyvfj8Y{ zOGOuJLJVtcA0ixGLtt$}HNkRo=v9y5t?^qnV|^D`MLfU1K>csyZ@N?#-l{o^<=Zx) zAa+}-INz;(3PkjnvZC`Q*O-&yl%wp;d@XhljoQGo9na%+{q71&q?*xvbK<8C!-S0D zu7v6ByOd*#XOML^5IL0PtxCXT7NS>#P6K{F)kv^w-O!bH2Vys`SGmy2D!uQlP2v%H zl4V~6bxvCzaduUM?r@qMjOl%h30LjzxWilib8R~vD2>AQ6M*=z`_V{6mpo}8QozAJ z+PE;xc6#v+WYw^R;cAED@_e-~w!0&i4ti4y$zsw33OdRJq_+qpF^@`T<=L6F`+-J& zx6(L>jwB|?FB-EL6&z`7kkf>sYfh5u3z>X+ZG3&|!7PjJi76jwql<)*0O@qk9 zDQ;c{5W?!o4kd+{Iu2^OFVC)02f?JBkB6C$8*AVG2)9-k)$e(*YsHXY>d&%pK%VFa zJVx2{LVIG3Lqzr#PZ}hyrfJ-ngqf*i^}E02N`&hV>>NP5t1kJFU2^a)mm+kJ^L)mDE`8vh+l3?5`AmwO}GeX%}*nNFqm?0r0tzmJ2za<&DSmJT+jt?Y;!$C9tRip)h{ZY0vow-*R zWY?krFp5NS6T<7s?vI+#i1eyfRtxYk%JY-O==~oV|fcuvE70Bl-Q)Uo2SnDX)>h5@lS;W4#wDhkC8jCP`$B|~oU#=2& zK8Y;EaP!`JOWzP;y`_$a?=a1dqW9U~Mf-gn&&KuNtsld%(dSY4Rz}V*Nk9 z`xHNJi~r(1MMCdsp72TV4Cx0AtfI9=Bb>#lvPA0qbOFe4q3X(3G*wU8WO3wVv6kkn z!c}6)SI-a91k@numN3hwGLGNg5vh-jy*htCq+WZ_;jeo+RU%8J6wg2-dtR3qg@b$K zOip%;oY63U)j<(t5+Abhv?uE~7`B*a^agEpb)4SA8ccaMo){9>s0IJ~62VZ@YR^Qu#M3TQ@RGjZo;FN+e7qRu^z5q` zq$|vGa&LaF!o~TMD?aoFJ8Hlx(J2>>;V2BYM?M6RuT`FYXrfzW-qCmidPRFxcKw7y zV8#Z_d;JXi)FjFta|uY_fY1|&aTCpHGK%8uRfE_=xps!$0M}?h{47i(MtxZM+ zG2VjnSC0uj4r>%)O43Xu&WTCk%5fJ-|C~K5CFTL_6~1pDo4tTb#kGse*z>F zWS4FdA^+e};o>YbpUK)~g6S%v63ie*0Xx@pQOfws4>m~A##69_!E$(i@Aw~~H|tro z^#@6{e8b=7)+$}R2jQ7-=+AXL13&EQ73*W#-@gb6={ZD3{ z6CpV#eEa;0RIf%&FN$jqi%V=@?m(@_|1$P8q*--^X!I`Y15q7q7(v;f;HM{tEU0i# z@yn7blnZ_R_Ipo65(tVQ&H8X|MW?jZ>HKzQ_Xc*~vUY>jV&F{*fVR6N=w3Kb?uON% zSY4merJ8z>I{ux6qwAE@Wc;R2X5Y-2Uc>89?VgJZ9xwTw`6xz#Tp;${q^;fJqO2V+&S(1)o|(mHc0|d7AukdT%sQ=$)R&4^J--gab?uJ ztqfj`&N~@}*airkSLW0Cq~!oPWx8a=6=PT zPL@C#tfs$0W#b`ej|TyX(#M_|F@xXrIbf9M55Fh=Avm3Uq$UWxV`gY`_U#dg0(Yxe zl{MC){4gDgM?&YS4=D4W>|_>#)I8a?horVjv;~|g!(D&r4!nUc5$`@5AG-3COql1r1nE3v&V6 zxzQb#JzV9RrugL}rdxgD=ly@^$q@(s4U8P(E zifg|q2qVXP_r9U8;(P#&4I|Y`xzI9TT$jJo(va^mf{1_;EYnnj&SqD(8X*rYYmJPO z-G3C0Pv5|pa$}<_!S7b3mo0+HIX+lkaP40xCNK7+YRLC+xr&8~)$n|Y9Qt{|H}#yR)sWNE~ZWM$O(wz8Q9{ zJnasB7u`v@x_c%5q*o3ZB$&)Z$kSoQK+zqDWcJx5Br4ftToH3I_oJ=HUkRfafZR#6 zj-18TfJ3b!ZkT&v2jiL-5o9arJz(a9fYpC1Nt%Lp0Gsuk57x)!qxG2FWwI5zzllA$ z22j@kIg_P$Z9pl9*0S}jQUC+T-j-~q-yKbZ4(3#2$OHLuUR1#4O?T^oa!*-BCw)L7 zPi|=|$6nI|-g2j;?kaufA32vO|L>t@hQ5-aI6}*HEzY=KZkimdP5$&vak@xodOEpHutiw@#Gm zT1>QPMx_}Ox!HOCQGGlt`Qe<~5%}yS(yU7&+Z>&E$=cF^0tRPPI`Cdw}$jhm?_UoD*f)qG7tuQSB8`WSSV342QmY0{Z_)Kha`EjOF7nuyzx{rQber zN98zOs+#mkW=-L$Dy6OwNJn!ab%!e5lHnZT0UR|Q208}(?IftPnl9!AHlHqH?06R$`FNgp^gf&+=uy z_j*XMZspe zXP}1s7>;r=meFfq|29PljeUoKNZE33Orf1iY6#lE1dBtyBsQOWwV9zhfQ4cO!n(dL88I}5h2dJL z?mI6yDwB#%wZHzY!(0kzXeaF6zmL$}Qh&$*3BLMeMRej0qg%dMzF0l!9-n&Kyb{IO zeQ~7zz6Pj(lMi%kNmQ%fsD)fl!icGI&-Oeq?>1M|8Mlh)96X(2l{LZt%8zakhzH9z zxfc<*6jC40b`_?#k;Xv4ebNqW6AzD`*-lK&$~snQX&hyn$O>l(sti3G1dUe0&iq8{NaOpp^?;{6>NAQ5ibs`f>ziuLHC|I2$_< z?k^i*HBvZ=I_QI+?TSC~*AsmHZe4Mu;X(Rwx{DMh-6)moPMv=?O!S(ayp*3fOxpSm zJ>6sBC;N7Qn6Hh@7t+Z~?bbpw=|g%n2|h#+72G?}ZTbryo_Mmlv4ONSCO2W~>^Pi9 zrte$E(HO!h5R6x|E2oAHpy_d@D<3ZegRg^xD|&DRZ+AKO08YTmv8~^9gO8?8l>=y^ z^3J}204;0|%p9c1+^{|W)i@cWCn?ew^Lx2y~SRNu&o;V@@!nsLTj z|JYjQCNlG;^I=v)VwYnu$gy+%YwnT4#o8R$g<4iSID~#8=!Jy+v?Iegg$!=(H=6yv zzC>Qv-Y3(z;TTRnh5-G`wXs8}*RB=?XXVwM-2%rU)Q7(mo!orA{X0}2;j|TnwfQ@( z&G|bzl?-gA*vULM?LjsmjWiwvLM2x3YDBmZmQ)wg7|s>&Xc_F&LCz9A-t!#hZ^FNw zK~P`WdX6;0>3BTB7FB69lqC0=}A4WS%kD*Th&)F zq-!jDF7Wk9t9l=M?zQL&id=o5WO~lPs8JSLBrm1u_I`(0L&^eTo#Ryad6QPs9oUjR zfPBo|dd{&tr%Af}aV-XG1wqnHdJW0kdxqk8D}(hHT0^$kfCQGOQW}}kl5qnpx^z}P zUc-6@B!keC#2@nm?@zXL6#`z9%LRU=dRRWg7>ceyM0i-BJyxb`LNx=BvDyx16wA5W zHS4gxnmYpK-}!?7hJ#3N_Msi7FWPPng1R>afnbT?y%lS$bP|BzTY!Hw5*(M6rn5OY zWy^hc?^6thL?Dj0TnmD?+jw1b*}d6=YNL&S2aUENcOlxFBt>sn(G6zG6rJC+EdMcG_I(tEWM%L7CFlU4!CIpz^-h!++>`r@q%#qc9_M@DVpjPv=qwH3zJK$o4pL z3$h0^)N_h;Q+<=h;lHj25haO6hy7140D(@^ll7F$0XH^{zfQ;I9t~gO%@lKTDuHpF zle(~N-}dOMx;F^DE!flb-Ans+-tGz`3%c`N8CK~D&8#xpd}78DP{hd8GzRg|*C^on z8XG@ANTPxhFTP4ypWS$-+hq#uJv<|;)M}M(cfZ=J4g5j5b@S`!IL(R>>Most-BRrW z_cHj1bT9IZ1N-y&=+^_#!20;eO65Q&Tk1i;?+fy)hq6~UZJskR9xJKs5HbofjMWi5 za)zKbK`}g(GW6N%(#kN6$w=cU7}`d#MF0EU9$?+=V)cE$zgl#qz_3PPn+(zaWcg!m3AXX4U}RB7b5@Iog>Ivl z1v~)rd=d!NswiU_ttfl@N9V;lwlee&bQl}9+GOPuLboT08UuO~NnfBnL&lWm$%FV(*%G&i^QXX`X7$I48j-4ZmCLENZyOByqJ`+P!$v6GsN8<$ z-c4DAbt@&%@=H6m0@7k!rEhc)!ymU#6zcdb9b(+$Kd$zJ)B8cAv99#dlT zoTnB(NJW)SApzgu)8k>rPkEeA+NhxMziYlC(^Tk12xDI+1)U}b|9sjib1DyVj z%(bHsweK#U1&3X*bS^8m9+D!KC}5bXW@7lYGH>}-Owiqs>x;OvlGkiV|Gy_MP&3}8ZOfBrAqU*cjIk^kRElS>QZP&NPD-u&j~*|@ zX?xT*NT&DD_H4>_iKP3JD2${>jCmODCjp}Jw-wVQF0n~0XE)LH?fH0uyRX{_6eH0a zS0}bl{2j%Yyf7EYBIPI=MmlwgI%O}D($z|^>c^x_aDA$DPQB2xj2KGNi*1br>3rUg z_4*jL)YuGSeMP1+twOp;IhC0+&Ku5e>}!tiHP{K%2ZiDYZM3S?C{kIZFJxJ3+z91) z6)Xkxo?n%Pm8I1)CEK0ojwkQbr8kGxK^MV68mC`P8d|6aIlylLecLA$cIL$Y)m-zE zT09rB_PYB9d`33NxcC_|`fgwHXYZ>OSnakXXo{44XMVk8qY;3LE$l%#Y6FCnYy5|> zg_Cf);30Eg44vx4ZFQ#L@C2>?Ro~~+bNq#L7XX)>5Vw|3;V}7Wm)6*5y73YahDU;( z9!+*w$Nx<+<0N{wQH}}v2Tof??I0Cvz`n>q`d}0Ya=?J3?VKb|;-2d9S^wtx6Dw0f zD`?4d&<4mN)7%0u)aIaI9wS5Fc-4c_1WqKUoorJ-i1!~4b@!4)St2eT(^VeTG7GTY z^jZziJyz?v8MtZ&btVfVyCAz#G?|X<$jO6D_4jl?&S+?4_WF%SLRKt)vsOe_>RZv|h@p<1}xTBNF z(l5=i@@<$o`u~b6D)4TZ>;I;-paeI1Rw#lYsF1BogNSuXA3rpt~+JzJ^4T_Gf6!2Jd zE}Unl;EokMG_SJpbvTI|9la0AB*R9ho8>FXsyqtR)gpw$#%sjsGPyyUxE(}MJaDsS3)NW zg&WlLDlTbvtr8tL!}f0 z{W+0*;JNDOl_a^KQ$%?+wEJjTIOASQw2+=L0&od-nO%x3W2+2v`3CIZP&|f{;{$i- zv*WaszXM-z5~Ji~!i64-rAU?|hQ|7LZ%)TpLcTJh+-Zx6XA~J=yFIe3lId zf)2+^It#DnLl*``rL_8s-bh;&!iT499kf>jChg-jQys7?0U4H43Bpj{;-U}r8QnrE z+6TVCC&K7T``J}e<%KU;tbPkqg;Q34&&{X+SA)A4uoekTd5lQ7Lhh*kfuPZBD3eQi zo&%67w6_Ph?ptFv$2o@xyZ@H?^Lf8|4DPAmFvn?g_DQ&B!zDG$BQ7Xg6XE8k@+e>9 zT{mYp?280@4=S-f_gRsu_;m`rpX2ib8{J8*^rEoxh2C8I#-IGUP6Bh9juZkXa8JNF zG6aW|Vk;S;w?e2d{KZ=I3MTKXdn3zV^^|z1i zZ`0ZuJ3>GQdHGlDD!5%O0XV=G|8=?5b9g7BgVgfZGL|8ocuV8{)4vByLsXpsAKvM| zCboIw$biRe-roa^YA^vgE$lx`Y2A#nq=`QMhbe7|Kr1CA(Dbi`Y`hw_TM=^X-vjI? z8S15pj($7${&wmevwaJA&T9QVpgm79zO5sa&^u>`PX$;329^2}DwFsvA6brkLS+n} zCVRbWTnQP{-!3&bNJ@=vjZ}wc8E88A|KEwN&hz56e&+Y zf#)kG@_i@9Y72%Mi(pIAV89P-im}Qh8!WD;HTVOrQ>}Ot`T1rKf10T_-uLYC;!+<` z_KxO8@f1vswkK!!Zd9PTFOj}e&+}3PcK=5yHNhZ5=Tq52hx(VWSU!IqrX`at+WWP* zQeLl&cIx3a>|a9X!F8t~Bh|BIRt|1|!v{!2IjtHupbjlAjYKAWV%g_&aj_hi`yZ!V zfOKB*S$JJ#mb>6Hl80o&eB>_cE+670n`CrMbn5}pD#2(@p0St|kQ{sn=pXbM(1t;j zgdRKzo2C)%D-xx9FCIzvW?g`8%Mj_J_cIZ{Nbaep3$v#M%;~@qyj|??efQe$EZFd> zKh2QEPZ38i#ordBSF<5JhiS3$EwRca*|p+l1(L6B5Gvq};l2Qmfv+O^+uH7fF_e?o zTIF`qFA9%=8*-?AbvW#$OLPvAQW@RtI}Zm{&)^^~m!ujkW!IvB3Uhc~;Y)pt>EkrZ z4ZrB6Cv4CCd|=DM|LBgn-DtyyrJqq%w`yzhU_`}5Ag~OE5E{5-#mt;?%95|?I+6|eo_nY{3F}^ zx`}cs6&Z7k+#MY&pSLSYZecz)T45hV9~7G6=aFDHtEGM$t22rziiGE7>S>Pxbt5%Q zPj{5P9^qh$_zGvCTD<~Hf$L@vJ@2S}`l#C!_H^k(x~SXmp!HXmxkqfS&dX5hc{;1S zF!fWuGv`~_kr`ecz>LA2OFClur~-&&Ue}Zz14 z`c$;F!;;kH-kK17-~1c*1T_}rbT(`zO1`xmT|El0uz9{*VQoSI-mLm5=cg8~fqFkV zgGSVr^NZYBad_+3I1XRH%&4Ja?Tczw{W`L3U#*6REG#oZSGUl-f+Y%M%u^fDSA`}T zOpcO7@aqxcN0Y5?(hxJsW-^kU;R^^I+=1K<)qA~7&;2gzeg0}WUpX49Uy$A6;#IPB zogPA;dfBgmb!GWQ;;uZrN^vQV1;r>n(HYuF7|Q4Nnc`A7yHafB6sD_wj5s2GlGsw|>7v-ALKLWE37~F&9W!efZ-- zx`gO}S1S<5zG|GosXeOIMu-3|Q8PNXTU?W{>&z%QOAX1!?My>>2j`dT94zKaU+5y0 zKbb;Bp@CO$v*yldVG!Te&qNBF9Bj_!>MvpQ1wJvk!sj!S*PQKkkYEE<{yRyk=Yg>? z*`l&{q@Vf{0{U|GKPyrr;GAx_7}R86@0CC@-d(l@{km+=&3U~47<^sYF^<`fZq5MT zHrM*xh3LOzq?#;Hv;*F_LYO*7HJ}O~UIFS>tIJ4dH)^s%K7#c#eSAIgodhNjSxRL5B@ZL8kO~)Q36?6Bdu-(p+*{@`AHz`9Fl`E zkRtUou2*G`0$h|&s7a9gTa!u#Pri&c3cDl`10M4*4dHDJ>}~Xx2;U20PX6Y;DCU~2 zZ@hPKsWKH}tr=hg-SN_C3Wi$yFSYqCZ|MA1<`Um2b2F8#vTU@$h^0oTse^2raw?__ zuGSl=2mNhL;N794MaEd)$S6d52U@(E639@QMmeR$0Cc#s9EAYR* zT72TGonm@@0!JTyDkkDXCSlP!%%6_)AZyd~iw+;^EYob|qF)xui+~j_b_gyo=6&`;i1f2oOs^)Zvq+tpPr%97Ug6Lc3*9) z!ljMN-FZZ~+mAUWAC)i#{mL@v;WfQ!&1OqM*&^J6uu9q?l5F~c1Ypdu)?6k7wZ9X1 zR@Ia-X%LUqXY2|j{1KJr`TWb1nLrco&RzPcZt*|9)beiAY|jN-F+aN7Eu6J;c|Td; zQg>Lhkz+6YqgVwDtw%QUOXs>#rN=0V&|or%G92^%ZACw^Q-Xc;m#o0~ruUTvHA=He!bw7q-GdJ5lt_tA{fAqJn<} zuccG+Lsx`|Bmzf8i`{?=G?4Bo|4Gm@s^J+mVr%>qI(#4q7qOxPW`bAHq|5liIcwNx zm&BzNYQTX2TquKC=1#uq->Mxg3De#?z9->9+6Pou=7xq_q0V^TUq#0Vwe!2G9XhFV zaqNDyegrHpP%*l91-|G<91rw-<{wYUx7a%z-TutC?y*rM6Y>Rc)Xwt^J*!5UU3n#p zF}0S*&i%0S>@&{Zx%!(p(aw9lwm1&qKLAJUH$doGdZzamKzPvA72sI`5Bd}MSgv1< z0>91To(yk|=C&s=YhRXc>)$I>``qOyjmks0_?hBVO47^kDnf zk>7YyxXg{`OWjHIOde1~#|zzK68pH1 z=-t#N11~dCDx3`Cz zCC%?Ab&~lqB$wZBA>^1eMG>LnUmTdakYWhyDE*;xYlLNYHstWGrRUZN%XZ66oV`FdbFBMd8mzg(SN3_~S;EhWoc~ z6<9UrCOmVM6*yBQgRiJZH=D&?9%8~T^!2GD z7j>3LC8m2u-yLYv2HUwegu6ujTM?SAb7Tw1s>0Q#+{h;RoptYul{4l;0GTu)v86Vv zHi^T{mGiECS|)7lWmIj158Tf~`hVR|^x$zvI!+i(h@e_tL)X{p8HbXqq@PA1s^;(Q z98|u)8Efu-3PmT|2A{KAwHjDt-=FyS>Louu?^##x<%xkM%nD`&&vpuB_myFh>mPcI zh!)$h0d)0Mr!_TcM-<!%TL1G!v%lbt->x6o?r`W|2CDf*mO(v3*APp15xm!sOdQW}lE?OPI;$w1kCJQ6szw9)zz1 z&ZiI2(#mN~+0)GUbIwa|8@m_A*%V=(gz(mj{aS;DA7%7JA`63*4#fk^hD{d*=J})_ z>6N!F<>x9|`NPt93N1rhIx}c2^Mwr943!u~#t>tOpV-bpVL=UO$vbMfFYdqUGVP+i zQaj1eR5y==$g+6s0V|iiC|7%N>|5bw<^AKAe1iAu#3F*DO(!t+=JW{HdpZqv2CLED zZ-Zx93R20L4-&dDMo|UwB2RPpP({YY_w$4iu#?%jZjhWvaXE_WR5w1{=DNxtNSqv_ zVJS9=g)e=C^-~HMhgZ6%FHonfGC|FQ4qn%b$cQk}Wt=OA+~a5Y;)7$!Jau3OdxM|A zG(yN3Xb78+e2L<5k{@^eHhCeT12J^b(gK6Vu741^aAetp$Q>_c$5W<&9kt=yGxexZ zLU2Q@gnGsbLA4)BtZe!5luaWDGdV|fe!H$yDPMrY zV1aC(wQecjqw#>1Ot`%EeJr%_DWi4fPhl+VT6)$Q9}=r-s)uBL@59Fn=lQ)ovwgx{ z-D}*>NjE;xYUja|k=T_yCQQhjsarLsv3D|DB~Ps#C49|<@v4s%d`PtJ%%%sG{e^YP z!Au{0KC>DCB+RGcUxl^9P_T_*g*u`PAERt&iElsWU*U5aWv>ZeUehO4#7Ag>JV)SH zo9WMozW;2W@V*lK7QeG&Ut#{~dbp(ts(w>1>t{U^Bxg%B{mBf({ffO67tRQmqx>SC z?!4E30rq%R3!BYe?kI=UP>8t}#UoCRxx_)g*r1GABea2EV@|wKQ-9IYKb3-ILnuPQ zrRt;$10=Q`nJXZmel`IakwK={A~&zR1t*&+5Zv(d7Fcp7wfAQR-JUH!;xD5KCAM%` zmo?ujB%BA@Xf5gJPIHNpdFS~_4f5)Ogrb6ZZwhK{zs$?!`%4<2IgoCMZDct1Fu)~P zZaG&uPw@Q$QL^bn=4GtlgTP8j)w|u9FQbIeqLHWumlQb-KuDYho0#~E_X5`NP)$FO zpV&xEv`D18tu-;rgTK2SkTQ}zwh5$ri1>uuYQjC8&Js^`6~rKzMJ%I%^G z4gB4od0m@U)DL|fnpQ6fzaB+bS176-N_G;A1j;^;kx_MrbjeyVz$0`z4{Cwc&R^V` zefzxABHCE@uGt@&e5KwNVCPp)^rJ*+g_E|_3d{7N%+r17w;H&hjhLAiIYFQ4giN?& zq>2jqMy_S`cyr{0yl!MD&;GapO&}e78%zooet@x^7mm|UEouFY2V$p^kOJmGSi%zn zw{iyV>o8Vbz9G|ID}r!q8o?-oJoPAp7IhO4c%YRd7eHH^M61y!dETpTuiG5-PP0Y5 zs)s>44=2@HHEVQ+&REN2IYs(*M@y$ha+-j>i|j&vaW%6JOy!}Ou8yta_5)62dTZB! z9Ij)@OL1)bo)QVxIof9HVw!xVN zi#oTQx3SM5_SSGlCe#>?K6W=vkB9BUwkol?kS>{&OCW21pLpbZq8V4t)OwN&|55e3 z9LHg)`J+yuEzj~_b5(geESkGOmuU73nE|)3!xUDotUgrO8PZ02MCv$DF(Y8??K~nk zP$t~*+Gk3AZuoK-CeO5vXUVcS90zaE1uo2q8Euo13(Q<4>r zs=YiHZs)Xn#a?S4ZZLp(q3m`Uv9Xx}cDy>eqTbkTUcuVSX+&-+Dthi|n$NLcUow)Z zr?FRYk%`nl+%mn4XeS00HHs0|@xY%we(>pdJ=SRGiRijLo4o2rl2BT4+Mx}o-yz!z zF8%IZ2=>$cWe6XOa{JTK1M=$2x86~p@aC&fswc(fgaRch=a#{2Yhrixom zTfR>sGR~_DlclGq+B}agSJj!iGZmtdS2E&6X2lAyY~aD%>n8_T*IIpc)kmnPS<B-FG)Ca%vnmF{kwgPSW6NwaYw7{@Vli_uB*O@*j4H1{Y zO9&(DP)tg}t@YdC8_ou%#&FlTH`CClL^wJh9SL?A(sv`kgO=IxPpeI5=eJk?gyx*f zjclB0x+Av6fj-Sy9y&cRmr1{6aosLl9k-UDcS}?9=Kap@D-2k5G>*NOTYl>+`cSd5 z9cjH)jLGRiyvtB9&`nq)Jy6CbXI0#>ouv9gCSTO-`0B^-Wk0Ze4g8oN9GOUW#s@iF zg1kIhVhO5jZo=YO>2)FGj}ud0NJCZm+2N!iZ-P&#=}uME3$6(^@*hlKZj5Vkai<*w zTCVhH`P-qF0^4KAM2C4f;XRkbmyGhHA_G;Wbd>7$pZ_T!4(t@T)2ATpj|N6F28vqh zCFe1d&!o=Wc~Js@&fT;t^S%rlv*-_VuZS&Wdm2BmW85#J>fM=%>oFYWWr)A+;5V!B z2eUIq#&gk+NyEzb9+l1|Pf1d8EHWw#Ne;1sZ(iY0syYVAZ0_G-oA zd=7fOZ~o0#M%)i|$;7=av^$v=4;+X`d0I@jJH8rt4k`8y*!+mYM@LWj;)7K1*t;W3 zrnspNT9$9=khE};{Be=Wq4uVt(n%uI&X)nE4ex|0DW*tTMublAS7{BbVfzkH>!I|M z3K*O)iOVjI7vI*3XdNc9xhw=w6dHy zp)n^N(5VmoNX@Ac>tcniD)56C^XpvbzA}F|06czJ7&!Mq<^54)PpDfz(#yHnCZ4u@ zK&>26YFFnfyR_wBy&FD6qhhBs6IsI(*Rq&9c872+V}B;n&p-y>GynwZot4w2w_bRfHo)kasF1m zfnc8<@FrZD4uR=~nHaWyGWA|@##DBUuH)*oPY;=fU= z%o)}@3qA<0b!=3E8aw8+WC2|-_*sV(JPt0Hj?Dvad`owNPg|)WY6aItop5)7&0icJ z(o{ELsc%!d?r|Gb3!@6A9q_2W**aX8a^(&YMtl4s4Ubnt&-&IduBid%yKh)jKU6s& z1M<5!uOT^S*C!=5cuj=+3cgE4$af2 zzaOPK2Bv=KTUYrL^?ipUQ6c%KYBc7djr=<(lb8IXZ)pU-C@r9eTFz0!iE>vI>fX{k zqQD*OScWP4^*R^Vzm0{<1F>M#qFC3vRu7>s<4S&>;lXommZSGwB{V4$V%c%>J`rfT z>O^2p`!v<73IqTya&yA&CCAg#Itv zh{s;!;&>?$2uxHSgcW?A@@ja2`%nKT=k7W43{NirQT}8v>8fQ3%UC8?!b5Vt*M@j( zQLDKr$YWp<6MM9NzQ%gGP++4McT_E0)(q8fP8~LmpyPvi69}@b-ABm*Iwyp|frn7y zV#g$Uz(g+(;uU<6`uK2XvZT*7(^sp(>Xv<7ni>}KAr!S8espz(GS0jT+RWTJ;uElh z55qFADqeLf;cTd~^j_5!48!2D%OJ(uYh}qA~Fp%(T z7kqeTN4_4?rmG;hAO4b;EiBTahc(!Y9-fNYS!0Pb+3?`j{hRH_I5Xk|oqj0B=3OtN zRJunz6dfUx0-et3H>-+?_gU8hM(!2jx%KbcbTLW>Ku!FJ(iiR$LfajL{f)T0l^X6; ziv*3Vd+kDSEW8v1MBiYp1Wq$r$~_ph%I#W(SBKT8lTEt{uImD?RG8w=3Qd~!az+9t z$b>qDCv6aKP-|5fA5)yC!{D-i&w}7bppdHahiUdpy-%Pj)xD5n?wE4hb7GrIIkU|_ zn{K3BsH_Gd6B`^K>nmdBw5qtja`96pK`lSe4%QX9ocGVGEtvmUFjR01C+|Wg3W~dQ z4gd4^D6;!|bo=439A_dXeefJQ7ZURIO=6-B*x*9Z&?N5h2 z!EGU7M!kx23ajKB;r?*g?@Uh$EtX)cq4v!Vb)vO{-i?V*TZjd@g)IiVwYp6E1yjH? z>O6>z%lOrbf`QnpZos3$JKOH|8h1U28kWVh0i)fd7DDt~$*0*yPP@P-(Pq-X8?f=_ z!%f)d6WO7b=RQT8uv4LNt4X9L?$`5-&mMmYRcDNWj-VOIr0`(|rEaO(-nf6M9tKN~ zVe-)=T^1s&VD8Lv+Pyk*+gDnL4Q0a&y|DNzbZ|^BtZ6w4QBtLGwh*t*QMcftER;+P ziJ{;@)Ef6DFbpIK=6>5${=Qi&pc;22c;d9NOaYF0aC~DOfGD7mGS0>&?#sRZLBKI0 zj8*%zpxPfK1mCk=#TVeDC7F0m8ft6E`Nmyd$*J%0Q4k;5)SL{Vf^TSv2#*2qS%LvnJ;t6kb$QZ6lPn1$OpDbkes2xgqNlq z8zcc^xno??R)c%+J1<0Zmb zw~;`=9Zg#rLnf-FM6Zl#SZsUk%L8oPO|$HpZ_ut7uuvG@@&pJAS$;P>bF^OZ-(lzDd zR3NrsWOKA01X-4RVk@oO3bh%jUfQ@&-02vi$Nw&V#?YKfBf*1E@j|D^7v@1=;l*1g zyHP6cXf66*Sx+kY$WNa1F|g_Q|4hTj0U>d4-GXkxd?IltW3f=qXDS&cBO-AV`HeR~ zm}(Qox!FPrCZwfcETTX#j%2SXcB_#g*hr@Ff@uU8hBfT^pJ(&Tc3{Iy(>@(W2#*Pd zx^a=RXgcL2oxf@Njv_QdDfE_V2I*KM#c`GH_tb6^1-ZKGWtVAi8`4B9&H8(#!e=iA zfhKTsYAut9H7R*h?C_E3bsd!mMwJ015ol0&wEkSU{iI&HWFIWHP z@(5L9ssFovqAF&&AgN^btSJdagp$cs1%1EclrXV@{&ez-xEE2xnsS zN_qDXx4)FB#UBRAiSIjO7P06`nZ>gVx%=uCW^K)FNOGRJfeC#K%k-b_6Cxv{4~4dr zicQFV+S1$xe-RrGi7uoy+R%@D?#@cXQw-RWC&Rl%+Jw!SV=Tm>|Hev)Fr%`_``Zq36)1`VE!!NN7uxD-}uLm+%!% z0M7$|2t}tJNxxVljf(>658?;&IrPet!pF+?v&B91(4r>3`#dY#*vij{{+=AP!Y0%C-|H9`|vqTW-fwL^;spu+Fw2y0$x19Zfe|wlrI$6 zx`k;jJXE*yIzv}KW*uHgKe|s&NeX@!BqilM@l6X;b9)%&&E2z00rROa2|KUBsDYe| zoONuC6mTcV1@?eqg5Cu-E7-kEe3L*39frL)fIo}2G*>fc?-u4F6_gTr{Iep>KPOup z%DGRdvH!UJeO@TYFJCx3hYu_1D{i!=P$vS=qh0wExEZQW>7vO|*6}yS)$ZXhK zuj)v{=*6qr#PavG+q<^ZKYnhoaG-cSM1-lHG|G8@ld~NL%;t$KMsXr)Z7r5>nf6n1 z{bk#~3qL2b>f`qs1wPw?JCYw|8DP|V9B}iAD{+$Li^b2KxxZurKcRAvRuTFJ2X>ms zt00%YLV?)6}z;!?3Ff*4iaC!Dr#ViR+Wrx?86P(G~EJ!>rd4cV`E?roLM$Va}w|d~0 zDf5+UA6qUId<{%THmEbX6Q@K|uBI72;pS3+nXD&TC(tI11o9L@@VYfy9u75&!AGJX z+FtULNyl%$R%z&F_gr zFk&`dyruug{ud*u1Ft%W@ZJ}fOY(Q_7N$>1mlA6?Rfm!ZZPtxL!m1UlK!r zz!v&TWzjI{l=wc%{SR1MZBs+_-p+klIe|Z2&U;^>1R$nrH}55+H2_%4B=--j-Esb9 zJ8CC}F}c&6{BOiG{T%b{hb#cDYDWAU+02=|qnQ4j|5hBI&AH6*qKtQKNU z)7qRgzhl?_g2Cr~4b;LU$SKDC0mwh2S-x+2_9vCGjk8Wrl@gTqmY#YJ^M&NwxdP|k zy8+4>@2vXDYR*Z)>kkp zp!NP$_x$L!)=rqw7#q9Cyq)H}*zU9rnvQ+^Ig-Q5VLI=~9i#Zu@$f#DNgVCcdNmU$ zoX?^3tUu6krYX&!U7R--G15xkf9)E)tNnQ=;Rr-A_o{dE;}qc&`LjYykySV&-68XHRh?$_I41jaiU?8XUxw?k4YSj{+MM^6RPGnfoO40sOZ7NOV96KKMRF}qzIekw7#%ht5XN1(8lQc(amCJZpLkfKE$#x(God;79A|!hig#I0$4od zuiGzQHZJ`=yT>afS*1gz4JCb902>&9|$toAc`&HMih)e=$@Ac9n zGgaDE$@A0eRFdZ21PLJqt~>(}KhxfJ#GEV(3{Se*j;z7-(UN=w{7Orar6bZ6|Ln`z zok;;ce-E`rJ1M)m#FiLMck(a0eTce1K4{}y73Txxn_RDSSkiVGpMR5be&0O02_V)$ zl!iK^?k!7$3as8)r|tLt3-i$A_VeX&QLXjsiE*+|1Xqp0Pn9 zFGr&TbT}Hfo+kA&pMWw*BF?5_T)t5O5ME>R)HdB+e1nub^bLi>NzB^b};E#odlqWrlG^dCID&&@pf{+nf zt=x^66(!s>H>4o(2C!$5%q}{UpO}D{46xBXX=HMxnN(y8Nb7p+y;s$plp8G^Hl3p~ zWGXnil!01(d9$zy&-J?jwWOb91}0^D+#D57<<|9mV!{RYBH!IyL0KDc9wNA>@^agp ztT-A%#(PIT+t@d$9}<`(y&0YO{pXK_?kL~Q?xi(BJ?XnIsqeYh?SAr$%~Q=RQcZ96 zI7qtMPva0wUZ1%>*?=hc*xyks{C4eNt)rcxz+vZ?ik-E;QZEJn60Dckrq`yID+I9o ztB2Y#Da!^XD`i)@U8e03nwVY!X*k^xEfFmu55a(=E?{_fNytUm{o442Iz8S;7R0)# ziKC;VulMrJ5XXG&uW9%XWdvc%9ocB2g(k03=YJL`U%$*;ZK3(`BDXARzP?>WZknRH4Fw`_?iC-0~CsD(W&{4n+-<3tc zu}|&EBA=Q}@W9c%$imKE_>PE{h5ZAgkblFdt7+t?NyGwraTDVZv44sbmF~m6~;(4u`?fqAFrT_8*@P=b&L<`|9 zPI?@P;teAl=Blgwe(rruXWImABW|LA7dgIy{zH(}z09jzwp9?YEk`Fl;^mfO3p4)n z-@*U*mI(k4r&SD{R>`v zEV=qN5ju@)zRCrp4jr|DdU>tVl&L7_7AP?= zMgv@o-oDF|Rl-`V+T8^68j!54*N@uA#HMm8m1}c+oPD-^k#bHi&-Z3(NycRJjov6E zK*uQg=~;C};N`o@QCcV?^#f~j17{@!;U<9&q%g4O@+BY6V~(=8t3nziw(7X6>6Pxp z_mNa7;EPO{Z-wvTSJ7XX>IpKf4Ud%749ZgFEB#J$Ns=;+F9?&?FKJtUohbH{-|-Pi z+LP!u;BcNYR!nj+9>f9YYWko7o*!7^jW~gCUVup1p0Te~n+}4w9DY2W{h&xn-k6S| zK!l@tsn?#Cq)p)*XXqoRyFQdUSx#*m!D=@x!#1UKBhlulAMzYu(A+9x;8P=^OlXU@ ze+X@R0?>OWUv*nW47A(}B4z&ZD7%K+OOXATnC3hg$13 ze6mow05XvgS>MS(8pt%8W&RDly<9gW{Ql{%59Ia0zV03mw^LtNx~#>@_a)Qf9`|#$d^3L2 zNpwa<2XDdyhsB;Ef={gOn%N@e*j4$!w8k+wT&tSY-UOe!qJC3jx&m9;ZOg4PR6WMa-z-;Jw zqPmU1FuX1wUzxWsxJ1*4w}!FuAW!rN0kyM5j2TfCKKCq2DF9LQ#K5N?hK@MG&gbv{ zysYD$7-1=HZUyg$)oH-(sV10EEzpe^b0s}rYkG{REygjj$}sb* zST5c}8>5@CRV+Z{W?;ts+^R$Hp_T7cbCoKGU4aVjn+btF{NR!p$2oN4Pmj2MV+~L8 z(hgH}q&H;*sP8_tt5y*XBv51N(=7gZ`~#pgVm?6|yj~dglY70*fEMLaQa&++%J+3j zW;&-Stc`vhQc|ARG@L1N*z&WIa~VN_INO!n0A*lLr4-=azwv@ABh(SYhnZKmzUl^G zo8qZB&O!0@U2)akHM6ot5+(jp=KH)gN8pzu;?<9Lwb! zj>;X`O^dN${W2q6HQ{Z#=8><x8Vyz`FXnFS2eC zxng|q-Sw4gPkFfFO_&6b#gM#=h^4<+y%N-V8{lJ!;`7tZLc>;(5L5angG&z!Xi|UP+%&Qgap9esD9KaJlLZN{9NkxH$;O!&} zKabZKLB+4^|&ie?#@@lX7Z&Z>9c*>IHJ6Qf-hU|Ay+_^~i-rQL+Ap>gOVa?Q$^r z{)Xx&3?0^F2$}wd>TP**_Dkdg@20j-D^s$p@?s;NEw{ZBXjC#R7ivA!F0K(Suv*(<@+JvRVshFNUJ0bYSrTv?iym)T_qyPk+O^+~K9=e8dgxp1-O#|Svq$o={DC(PhS|(<; zVb9h5-sE+;v56K)wvxKj@h95NWlDTPI&P7Z`ZNhNmrP>_h;jrW#}a$JQ7qa=__9RKqPG(Vf?y2%Qa7XtB1fPdyF|s zpBH`}b?N&nRWM1u%#YjgX&nD|#kh2oLPMMdv)Qv6Qsh$HE^<{kGl5_F6V>fVBfHi6`zG=qe)v5HXa0$2)2`y zlJqy)LT;RxkUlqZMnxFFph46GS^QKcOv1rYI5Z@`3kYOtI5~xbqOji><39NHqn+6W zAQp$ei3P@`V08$Gedf1QU7<4eFz|5KO$ZJ2Swt7VGg|JZB8sb%cG+q+L$xED=i5)MnGui~^MZNR(`% zBSS2;$W)P?)p_|TL1dF;`j-hnCm^znm@8*F1|4g9Rz_oUc7uNA9C2w8anNe;q^we} zx5D7r0jkyQTn?g zn#EpIm+!z#N-z9{-fp78&HKO~Z(Ua^Bu9ll`se^5-ON3~;)W9e)mDhU?$f&|qseD5 zxb~ocM^TE>#d%3-BJt#W0-Wfa&m=TVPZ_+J^(7_&@=EfklCQ< z3@glorVgcqBHezB_p(#{(LcuXuv>l znHP5GJ}p-4=k&R`#I6I;TajXd>2mOko8a!Ez)=V?rbm>|UjLAgsqsRR^%LfSqoN1D z|5@}*S4!vlL?Z1^`-DpvhDVVKmMVQ8R#cNU-bh4KpkiN&60a%UGh6VX*Uy=kDA#>Ub2P@UMmJ3m%HlT!fGy$Z97K<0Z6C39qc%9hNiFt` zLY~L`2?;zTqt9(!`SgSr&eY9BfNDBu?*52dqrq)URvdL3j28Nb`+WNjXZ&8@+;tem z($Q9~)z^&Acy4&ksc%OGRQH;w^Tk}ND{SiZt(9|C z8qn?#3-5j*;tU=G4JrEZv7jF3Cut;U==T?E^LmXB=L#x3KcKHHDew*^O#eQVQ}?56 z_1ML)ycc{*z8e9K2o2cSatYooaufMrHU^os^RcQv>RpSc zP5e1>a+vIY21F!-PyA4AYMe;Q(}Jf609WJPaEz-tzhqiIw>eX39mnL@^DB?XEI5VT z2{yzG@OPTOVNT{ii}*{HGVd?APO8@GRN$>-IMw%K*>4JTSD8t9TiLvOVL9?y+nqYD zJ%}fpt+~nh_=hbHHDkjA!6OUgb=gj5*U0Xtj@YIXCAAMv*c5L<5gF^?WI$^=T>mQ> z7yz45cD48yPbzHW$ev}SAwFD%jA=A^(73``KLTM{zuBvhE3B^xhqlKI6IOx|ePxkJ zU6V*$w-qZdH7sGF(U!19L#SYcV)&44sI5u@z;fC%`%-7k?9R$dBZc93C3ke^+?Fa! ze&z6_B3r9}hcD5UHPpPlPZ6OEOgP4$^})tBsRINjX}m7*9F%{FjU@=JNFKa2R@XKg zeHgDwBQz`>>$c^f4YTqf#@1^5(D_hJrHbSQjxum5FMfh6I?Ex4Hzv9iEPE3)HY|*H zV*%zxC{m8_2dHsF%s?@2?>{F~MvTYw0FHI~X3ysRr?B^_6zGg)Jk2Oyc7 ze`gy11(Fd4NHne_0F!bb{~JvDUzYRzw-8HHmw3x(tfpcN!zFh5`NB$%_v?(el9=d? z&->%-$642^GHrw`>mE6EAP13@)q{=3j=!Sjl<5M4imK;M_!lkx0%rO|OS)DmJuqq< zPmF0xJtOkMXHpOWKBH!Vc%WRgn#RKfPUTI_O4&oT*sdZ!1Io>Ag9e0`;H#xp)`2>Jm56> z(q>_uL}e5M5?}@{E392WVvfbZ*~=TVrc~&utRkCMKrP9Wihii|{9%EA=X+;G*o6*) z{98$we=5Z%m?{2e4I}^R*LUhbBN;_)1s6E^lc*S;O zTE;j9TkNFZAJQ3T5nRDW?QDQU>m=Jf3)}BQBAaMzo?3+fP$d(rXodJ zs3KA#D54_0*HA<{Nbf{ZinNGykS<+7dM6-Fnl$Mpw9qj?C<%nj8GN31?{A;Azkko! zXRX7%7Hg3V$vu=lSG{Um5EIo_1CjOsS=`c52Xw;;PlR0^_w zAw8Y#|20GGB6fmT!N5<5=m5Ds(69GQ=F^=QCT~9b=VzkwW*%kc)oIB|m+_Z=kav@*k zDKtG}A6XLAMar&}4b!~*EAtZp_#?jjkPPEZ^mQQ?By`c2re_SlIp?$dHrLWmYuiBl zIq9>z>Ls&2)YkukKruStN!i~!&mfRE@&4s!Vu;=lPqB0Ef>@YxXS!reM!Oa1x8buz z#T?lZRa44_wjC7V`PD+0jN-|DB3qw}^uT9-6R|sN9*1vNb{WK0<;i{STu0LZ%SgBD zd9p2}xoDMW=J&RhTjypgsd#9BrhdT0b9QOBq!6MDSgl$C2@Et;5+!j>fTo{ZFc@mD z^1y}oJV{P8T#jq-iV8<%d7+V+xQAUU*}p)P=-)ya)W(1Uya|@zjby=>uk^zuP`E2*}vu+qOXMr9}M?*Kw(RliP!#(ej8R|F? zsH#s2u8RARn#Uaf5o#`e3Ll0h=WT`l<*i`6li&s=2a@9;Sj7XRc?_oPD8V7|PoCI% z>|BTwx~d(R(5&Vwu2cGQ^qWIL)O+-Vigwre{YQ87nMo2hOmR_m>{&f`^0hR7m$Jq^ zPc?x34&2asn+9I>k@$=FD+F_H99RL`=#DB)x{CtV1mW6Xang*u0zt)Jz2o zTyex1v^AB7PdzuBX(aqLh3!wo!m3#APjzjJte1c5d$Lf$9;0XOG~w+3LBcvw&9v|k zfq*yowkp`CNv3{-gL%awH#c-Qzf5@uNB{!R${NaT%}m!t2It}a#8q+b&`lqj>D&Hu z(3r#7EEc(uLDHmy8eLGvy};e%9TWq9~Lv?cPm5~63W zi#~Zo0rL9yp-24_i+P?g(Z?W2cgBStWQkh!3J4yS8g5R2^Iv=w(901ELSpLk|3G46 ztxLyS@1C&s7aNN{(%KwHB=%`jZ%WB*a&Lz$WXj+3a$f~k9aJcT%{K-XN*@h8hv>YN zAxo-n`Up#ek2732rIqxz=e}pw;wQzO_z_vK<08Fx845Q{pc-6-je7Fh)3F~e5lmsU zKie%;@`UY+4jK7JUS7t~{oru)Y8|vD;QbFAo9{dC z(n;_al#MRhBEq5dgL0olON-}rL#P$f*2V@p0(C43wFOe2Vb26sU;_@tsqYn0 z8{!HA#3Y=ZaYe!glp_CvTwrrR=qIQg*(12FeZHKa%NjVV6(LTbqIeR}HF9;_z3YZu znK?7uMnzsY;s#1;4O>BA8m~Ob%)M0jb^y84_4IfAFS`ds@J*=L%@Xd6PxcZp2jla` z+S5BFya(`)S1IZ581n0>U2HmII*T)g)#N8U;C7b1Sy$YtRg|3f91&Ogq&UXzA9AG4 zn)B_2g}}Q@rBP?6S{H|5W@Q*GY zlHM0VTVqjxa+CWYPaMb)g-fK19Tk~vrgn}LKKKWP<9~}J0g417*ObP!mBn&7%FB?X z5m6RnapDwFX8wmc;xx@riS8XIY8%uWvDizNe>F`WXPTzxgcBrb&VM7oD*L|!a5HQG zwxPhjDb(jCMOwB;qPRJG_)Af}rq7V`3>w-_bOTp<8os?sjEf(J9z3(t6q7Jz;{H4$ z46BYms2Gora}6)x);6*qKHkR+lYnq!|uyY zz$tuNT(za7P-$bPUh<71*F=c-z*&E;!WNd?jF29o)(-&s&j4lDMJj6D_Xw2t?bja_X-Wht7e@_TDWtB+*D?u5 z>gcFXb?JS<#aMj>$jBMt%U2)C{Rn)t9+fO}0g6?X2x18NC|s1)hxB|w^j~1w%FXiB zY%N%KZq%PS=YsK`S49{N$sK+8)%cN|sA|9Pv1CSc&*h={8#M;gfW(qL=23qb$JNXj3i@g#f@p%!Me)C?$e? zs+9#vKgH6^4D4W<0a(~;@qp}CM$b+@!m;Tq zuIun?6pY-QE^99*UJ=M-Wz#FaaxgfXTLk5f=J!FxAOi&7)fH63QUZ~94wJjc{bxTs z`s!LOW9*fC6Zcxy=MqVJZD}{^Rl~IWhrbzq&5tIJSk~a35-mzRbr(fJtk`j`=#pu6 zElQN1d|mI%0(wdT#)mQraICXAoJP01=Ou_6Vv1VJvD+h;>qMc@Z6@F8WbW7#M}Hmf z_FR}i@9LjGR_)$*%tGdGZ*m6qEx?ak5fH=_P70mh54ouwlvFuIC*GRm{nX`NoG<}e zzEM-=>7d}fApoz)@Shy2cHIFM76;;-Ag52f37yd3ekppme4wc~Fg!5Y^Pp=%=izxLnFr+c{kG!> zF_n`QdvfONSRBbU*YRIYYE|u=g1<#?KI6Uh0;q5sTi}^Lt03#%b`u8F%VYL16jT8g z-uq$nMIjxy8-tbvPBK=p?F`*3{bti-fPad{t!6Y9{pRa%6u&f45k**^zm&21=+@BC z#qncvNw2+dh*ruym~p^s{BRhYKX1;Bk`3R$jLjddpTr~_vAfxN|IAH@3vt4Y8ox$~ zP{WwhJ+@a--`A4&{*b7){}@EY`8xU2@Y9$Q8ESy|23e5H98e?eb;Cnz`w4ikk864t z%W1~3woReVCk-1!)YJg7W&-Kf=G!yv0SAk?V!i#9 zpxDi`3JdmGbb9s)nFD@l@uv;wyV&qPXfhu|vY=B2Q?OLe=sP){jq^h$N$~Asy8?zc znQn2C=C}FpqQ$JT9oOdT+$<<6pn3kkWHljv%1aIB-jIXo{hQ&*A1Z)l<_g+)`N%NS<1K9Tu!r`;=^~n=3|`j zMJ_EfGDW9|Z^YES5yNx?wp#qneZ^U)doYt-2-;UkP|(ooer)>O-c4yiPg_aTlcovc z%*>cecaKCI27-5sW3R)Lu3__VuD|*pHE%_t8+rwKnXQ}zL+t(Ec=vUpx;R3Q7KrQ4 zoseQ&-rlw){i1;8W>50=kwBNdk8sJtJzf;$31HM*w@)ayT%n6+S8_4xI!f>_@iUv; z?78OEzWd1UQhlz~+#VJB@#V%!mL@!XkAIDHb^sAl>Sr-|@dRNEpz!r7P+aX^{_z^> zI)J6b(HeDy_vpqWgQidWf>Ds8DIcRck6qf@If>X!t5W{n-r1go6cwH>`vB_WuMHxa zSD@4C3SU_L1CBp2zb@s28R6?)`m^|YI+Hec_5Y9((qUH=>r36NAgzl_HSs1_u8zgM zC(Dk62p-K5wVDB-ZmSKw**mALqIdLqqvQ*`r8M3`qKV~bIR@RJ1h78Dq5}-m_1T)& zYlI7o+jU>m!h#15VG|##%vQM30n=$Flye?lc<>9Kz+DRP{ZUkTbvky!UNt#M1nTY5 zLI03YQJE{cppt<441fRF5=cq^0&#DZKp~`T&iF2yiFF-*@xo(ae~q=;P@&-aXGH@e z{PtZV&P$Y|YZHc8)l)Gso6p^Wez#Yp{J$H zt>X5z)}T1{E2TW|Ss%N}fnbBl{p_a-pUirDxRhR==tS{UtaaX4+A$t;imc8wi*q5R z%YOY`=N2ws;PYtqB+_OV9_LDh%PD^qAP#YxaoxPJ!!W-((BH>jDb+xvcQsHVME$U%KW3g_+gjP(7{JhaH$gREMBJyU$uD zj8Ex#^WwJUI-$^oP!Bi5E9wFPb+31G(4hj{aaD$F8YKqAcPzn-X;6aj zro(m(wjz#$%IS`eW{)HG?n{pyJ)06h&q3XXHlPB`J?`iahI8#V8f!|1ShWW;v%7#k zan*~#mt#kG5KV6Xf^N1w&^HC^ZS~+n)iI}szuH0@Ls>=YC;h`yiD46mbuq# znq6HG=JT}99*v9-u_vHi<_~?bs{p0Y1Ls*o#_UqF=nV=!VkTku8a>uu*0o>Ld7H17 zxA6%OU>MbvwJgyS*K!)Y3D08*R}kMrLLk1Pf6#_KZO*7Q(Eta$RFCTG(jOO=WO}+K zkTJ6=Z(H&Aaj23VKxrJA_r-fesSx0x!42oC$Px=FJE)VLhg38|exl&E*&A`zd%U-+ zhB!dYio`0?IKpQv((ignb9~P=@Sk8RCv2bTi(_gy@e>UvNgUfA{xs8fhvsb??hfh$Z>XBX?NZ`YQuVg+uQ(rVK0x z@&37aXp_0|j6YG@9$OmEZt-s2Z;RijQ=qiVF{|r)KXbfM5UUboN#SPw531q-Z||{S zIM30{o~Yk;rRL@g35*;Mm9MYz!@WiEcNGJo{3~D1Ny?J4+4+sX>q^c?bZp4;s9wuxS)w-ij`z@>Eq#luVo)HcrNRt$wS&JpdDP@1yH zV@xlFqaSpiijUr0ag?U<Cqaq03d#Tv z?}<*>LaI9Z`KRGKj}}J8PFW#(j#d%G+!=VUXs?+eyMA-?qA@zWcinP>9=i&~&U0JH zZJMCJrl5jVAw*X}k0gQC3yT$F$ny==C488NYwdf3%E$=PPT1>|>7LxZG;wZ=UCg{o zkFwS5ZD5*~2prp`w_pl;cBx7fJ?+7BvC=7t^vGNy0t)J%ARLBZtD8OYGR`WbS5ffA zld10fOsA>({5ea0LC;Q{Vd?V{h0;*+hxVox)jgq3cY6-MSy-eP{eGFmw3zSk54)z4 zs&@Y7)o}A{hVs0(akv_;zh?g+T zj@SzoH}K0+xa-@8$o^EFWu2APKJaj`?M{d?mGyj{>@#VKI%$Syk0s|c6(Y3-Nq_ym zES?d}YhiARoENU@?LFG9MN#dPJNRTClS>~S{k{e_9CP&N@!0aq`Qq8q+k0=zxV^R;Fskf7+tw zPUF>CSs+1|D7x&_DL?MIQ;Qnum8q5`-^)3`IwjV{(;KIi{lWA$Ra=18^y$v@Q|b!H zwGaiKA6N3izrU#=qYxV~0aR;iC-=tQmnD*>W>=dkj$R=;bww4mm1%BR-6v-L?Dg3C z?IT|YtgOafc6eAdg}MSp1fPaX$Q=N&C-%O!b#Ks4OS*uy;wWmSZ~%jWC!sVP4fg$K zib~@LN(qMiS*Ox$<0seVs@x~{BrMD}a4zhoZU~2#bH3mAb8k+mA9SDrH4{HkP*;XW zIqzupl6+qZH=%P%2V(dDD}4zp4E^E2={3Ce%>iany%jDH;s~t{AP$t^U_0TZi_MJ` z{eSWS>K&;805XkBbLqSWQAl3~d|IAF!9QFvQ5S6`6F3atOZHO*Q z;ZNUZ^R$RCX@0vsVM)B*XH-&P^K0jv;P_30MJ6!%rA)Zv%P~e8P-HRKqT%;u! z*S-uEmMC)BL4WJ;n)B~-@_XZpCi1r*EdHe|f#@$j53Q@58?RYxPyUjuVZ`BMt<7Uj zEQS@#OEbg6aPJ0)2570lu-H4>ycC4z#q@;EO% z46TOH>KQITXif!al}9-jK7f}?zbZfTQ8=UsTs3pg5mu_zIuJxNZbTFk^CODaVA+d@ z?ev6&PATB~8Wv3|feab*xO51R>|rdZx4=JjOR6e>0&Sqk&$T;bO>=_O@BU z+GxtI-=FYysB@W=)FYn?G=}!}`d3SbqbwBmX9ynrQ;oTP7I?`PONv8Ufz?^9{WQJ} zi&K69Emnl5W>XaEwn93v-!L4-J0%drsvQO>6xk?_s`gZrWryuRSt+zD6Wwn@*&eh5 zSEY{?5zyg=jB~d7A*osznVq|MmP-$n*4p|L6rBi7E@E>w3drLcFFNqoAE%yTJi!ft z4C=y_v~Wa8^aX^U)c00%;91QTEiyN#nFA=&eeLip9uCG;%kM2uwq8pIl3lHqP7%&h zXet$uqQHFjdF(wDnZ9xY95zTZBFLIq#<7dXcxclGJYka_){Q*I9pqTWLC#_6XLoG) zy##)Y_O2o?QiP+7U8teQis@k`4p#W|2M9M$Ujm?%GQf*zB%(on^bcH2lH#su1} zcJ_m)E~LAa|IUX%ne z5GwDimB=+#uvJUu)-TcCrM_u&{!A3YjuGABoL#3}PJc`T4)bR%l?H;fP-28qi zI{J~)xvCU-b}qp?jIisf;?eEWtJZPlGuzqQ|C>I-e^Oc^ZbiQYe(wJcvH_& zOl-%5x&ngeAHYeM;IV^;*WyOJ&Y$pk)%-ra4-NNxFvQ{G1YPS!%S~(_ghtjP9{il~ zkWN!%@bkrY_0}X9=~1FyGMoxy@{egev`+8P6|NP|MX_pAP2w~fmrv<)ZhNJh+@sJQ z=vaD-GH{W@FK+7k$b_Lf5y9k(uyankee!PrDDdpr8mn;dS_gBT zUFxB#G2)`n9+!{)!JbGi!l|K^(IRmpqDL%~5A%qi>q~ey643E}UKu3*h!C$|4h`yq z3NCoOT7jiW2rS>B6~-uK*fq~mbg={KIIQ?3<&51RwaeFu_7Btr$wKa1ZwI@=-d==IE>Q)Y? zuABiE&End|mY78cjt}d(wy?s#2K?rnedMV|OQorOKMCC-Yz4#=5uN4)-1n57_Wr zOT9t8188r77x#^(S1CS|LaropmTq_Eqzne5xA`TmSlAF@(olGAlm{eb&-qs#c7kS@ELmca_U>s+Q&W5H|Kf;t{iUC8Gr1e z2S_PiAcJ5c1RH*>Q^7-?;`WoTCXw`s=@o4Qz+@cUxVd5<)iZ$dGCL(~TEVsE{O7v~ zc7cfYCEws7^_HK1fUdW#mrVDKwn9&i_dNF?GRwAEaRG_Nw>BDAtA0sSayxl;=gdB061122|1#zE0?w|iXafN% zS*7$+FPS=YNvW%G(xs)fEnmD@s_`zEvOwGNv#T<*W~y80b1~vjED7Y!j}l(B9;?i> zHTpx@@(o(AM}OvB_B&zxmzPLqr(cg*a1SFBocMjAP#VwQ@vs&WPv%~!vKCi~t=xx> zr|IRttaORWb&k8^yBD0c@_#5*ujkBGdX>4H81HVrL8?=JIavqG%U7pfL!4eUqrUiu zbMV1}i8zkE_j*LGt>e0z;jCUppWs7(D$B1TAK`W)kx>cR(5r|GX}YpC8{!k^gGfah z5gTD>E7QF3b#(V8P|i}nJ+XI#AV1rs3sBRkrKtzJZYu&KXPV2mia!Cg0izfOX&O&$ zJgyMRb2NMSZExbBl$RMdguJm~&T!ikT;1?WnBM-g?j?s0!#6CBZ>w}=2eHcoU8b4j z5Y5ZPywXfo?Y%V=1JUZ6_k}sCgH64k$3bD(@r0&4LRSxxuglR--Ftp)WarjmKiXV+ zuGTt$aqegz*qsIcF?=W7SJfD>ov&d;uGQ?U0s}d#7Q#CN_@NG8dw;Px^#kMIz~wi% zhsd>4VP;qdGU8doLfXZvl+%aT2@g@@ypvp_WS2H=-G0%Tr+ zW$K&M6^lw!FA|w!&k;jB7FM~Zia)j7XM-HmKCY)4=dWiWxKz=y&=3_qP0!-h(Rw`5V9{(;4w=Emx!vq zH}{2VzSnyv{8y8dGrVtGlIS_r3aGJFELswpOqyeh(vurLL$HfCsoVF7kY@XaS9;dm zp^kZ!jjd zalq*3-qKO>RNUcvPI{8?VnPyI^{%e>(AtUusx7LZW|7TNFueo9N;K_;pUX}+?HV(0)MI0y zzNGh=Fs0$0bR6!Or3k$4nI4~K)vj0TkN|zYZMJe70(Q06Fm6P`^!F?Hj=0jUQ{r9O zUM|yPvDnR>&%P61SuH$UfLh^qFZ~CdFB5>z*Cv$RIp&l*bOq?+@J<8W@Pq1|$lRDY zoSs&}h-sQ?z2Wg@Wbvz}`F13HL`VcVKo^ zA97D7VLr4i9Hgh$`F5sPg-7wj-55NycN3hANCcRM7M|6&=tm%Na`!z4F^dc1z+hC$ zAlgnd@9WZi{Ku_lHsQRBQiPJblZAnlU(~r)cdcg--!oip#rx?Xrt%WvP~~e~6XNdH z`eKhU`e7jvhN60X^<)%W%-?-C)S4ZSUy2!vpQQ9Edm(-cSdJdHt&LF10vN~>0uWYTb=Yg)!-_NN8V{u67oIKYWB&=57s$A7=UlPBLq+=`S34+ z$T{wC_Bn5)c#JS+&18~u(J9c{q^2xCG?#T$&;9XWCB%GJM0$Y zJ1%qdmtWCeV~C0iDZ3KXW}p?sr#|S7zd2eT37YWp*YPRM*UQ<8c_#{K^u!jjkDl)) zU%Kh1`zr3{>lN#e=;pS!*KGSV(%s(3aW~wuc;PP#*10u5fcpb8MssB=j9xZG$O82M z?7ix*Sa$wXBm6{(88`zrF8l4rtx-}Kd+3}7S^dS10yo7oZ zZ1GkEP|e_2uc{v##6&EC6aB~3z)kQyK{~nfyxL0oDF>j(|NFxf`bBSU*{jQCT$wZn zT($unaoS(h6;&!PNhMy5TfeXJ`Oq2Tw=6Ztx_*80=Q;0ux3Hzr_A^nOYuQ5JuV|G_ zj>kWP{(1=ErcZZ0fAY_1yRRj@dA~-?%*Q8Q8Bj~E{x0a)yf%vUa^l;Hk8XZxNBTM7_0i>MCqdVW=^pdONB$%M1-l?-+AcrJ zcf!rlmv&qnO`{lQ03_}dSvhR1nRAPxqs7skG1|=_MKY( zmVGA9Q_BQq5W5@AVLNGaV>$B+2fc}||Me!)wjej613mgdl6nJ}vNS>&@YuU=FCmtZ zU%G#wxA|V!^EveINaTH{nxUw`aR+2p@GMROv3kiWG^BY&k885UcAl=9{|RV z*=1G~A*CphhLRbF>GwUuc#`=i8>tPGfZ*hQ$=tZJA;QdqALZ1ZWxE0HdE z&-(@rfSb6S{SVTU1a~u9l(%{QN$iVMSdoi}xW%XsXCqtU!2n-spoeKn9?189-PQBI z@cm=Tf64vM90p!-2Pt-qkZTH@xgW`E<%GF{qEB}Cy$zPTO9<-39%u-EJnY=naJBrM z_R(fSc1T!ZpLLz8Er*g}s6#t@$SutAyC*04pa|gMZ^o!8ZtD%D$*N-eYI?^}<&&0> zL7F}q_z$yzUF5its}X*oS_x0Yjc5_NQ}>hQb>X_|#k!zjQqofT#V0>`uZ_1u!O$R- z?(D^qp&$*{cxwI8;t%;sw5w+#bCs3U_xZY(#K{w^YGZ}t9fQ0QcMl~^8YQu0mY>x2 zmAZ7=MJAljoV~8L+pv2*d_-2>&Yl>WCk8*SP&>FVU%p$o0rK!qKpsBGpiJ1!Gm{^B z$AKLX?1$!+w1SyB5bbZmnHfkSSB*BM5wd`J2;3oM>F7eYBhSy4)iaI2S5eyt_|||6 zqz?MUYxYG)HFx;*Edcx!;Z9&k(f!n*SuIFH;_Vvlkk^3K0GrIUc1faLv(V0!$I1+k zDi=t@aBkLe@;anN8`^>5m-F5|_IG@d9iRynCEww`rV+hlKWI8SqCs*lic6#5X zun4PS*=%_=^NbJKs{VmjThU(~;|-1z!3H}=-8)HX@w&pX1M z9C9F`Xk1eJnElR$cVbNZQDh=Zh))`~-cC&^loy4$lHc8PSDSw&O{RONHiPrxPzFIX zM4Ri^<4;(Qqlv}GvSiUx`MJI7x9B@jK8iQQ4L?>6m@>=%<#U%dUBcu}1tirLVFNy1 zaxr0%+6T;B!`K}9jVJDP!RIyJsmDHTb$R)TVm1BtSV@)Kz&|z=`p>LmBQAwo1oq*w zS+YUnCh?G<=pS#Jr zDn=lb{OWjE@42+0M4R(#2Y*TUO8>pf6GK0y&|p_1IMGw8fJXUKXk|szUSBlnjmeWA z4IW{W&6>U|Cu`Y z?Kv8~8^DTE1f@ztFCaMUr6Y;$Oc?joWQCD6r5Z7V{!x|3^}?~x>xgPISHJ&B^tZnB zbXu$o6Y$p>Dr>h0~g1ov9o2@~%!Z z!8%6E0!m`}6F(>p3X6X}hyrc?Fq1?@kOI-F<0~;bxZ07KqKmQFMXijxL~g&}ypY1; zPG^w&6OWitLL?4{-9SUyB5VS$i%ecK+cvime+=FA3>8Wua)+KJsi+G&@0wL`N5=F) zrMLl~4~8aOwgxl@m#RRfzFBGYrNi_8iQZ#r2 zxvZ)Nf6zat-C>ygQ(_0f{b&U;YR7QDP+hY}z-2-s<~1{|hMZHwV)t);y0326!VN2I zw-lX8$95JhfsXgCNu%WIveVe-r_M9o=YR7{s0vKEEf4UUTKF)lQSMJ}r--AdJ{|qlIyUzCgUy}f6B>b#t@y=AJ=2{m+OL&P zVZXL_ia}2xq$dt#SK`a!q3KWRID@$;HV{>2CcIdYXG5tpx&lV;Odf&eR@@88eLa<^ zPdnBMf0K+B|DQ08`fu}nq&+Acm0uXEEAimG9lu|%nl+iupyex8p1NH55$XBs(V5rm z-zuRr61>NF`{R@1ATjEbX>)D2p2J$L@B*60N^iyf>`~-eU(|+vN74-o8B}m~x3sA6 z`i}*DxXN7Q9Qj1A@(!&D3yIv1%F@K^g5U*s4W3}X=BZimSQi+tSLRWcHuyZEY1(>v zkM7ZZFl{Iv3ws|f9L|mSLL$cNUNy$`cRdm=nWu0$=$h>r)&1w2QMCF26>G1aHJSU9 zin8R8B%h@xu$d+zy&p<&sOQjGx&ySITDWvH6c1_xswPCQ@%2CYCub)h)hO~#9vI5A z=u|gwy?mI3KmII+=By6cA!UL-l~DxUsv?l5QbfuQ$hl_QZO%m*X-#@nYIwQg3C|?Y zwN~ls7twU=U*JIQIJo#5RF#K$w^`83klNP>RdKibq6!uJMCtc!~9S>5{(8kG;+(&|=;V?n3mg z?q3yyO1B6Rq#U%##7wtI44|H6IS+DN7E_20vl%aZUid!rZcmjVI#JsxZ;ur9_0DAe8yqw zh@Rb@o^hUwvs!bjk+}>RkEI*pepI<)fJN-@+cnuYqWXYX#+&-@UuG2GL{uJd63JhN zP@QPr%zSMc7CTU=XEWS`fr1`A`fsi>w{@rfHU?e!MOg;GE|TG!f33HUpMfH%X%d1e zs2fmZI2c~(u8Gd_G#NBiNY($V9LTL_sqVLb;pihJ_+Jo3jdWL;*>al|*m8u7HNmg} z_wFnds_;iEn5Tl`DeX4q3>?!5>b)bWoohQ*O<1U;uGSoNW{~;xY%I4W=OIJ$(o{%( z`4!&LSW#5s?}7sbfqWIxwIuK&pQ8E+(E@SI1DXyEd?ezgl{wiW1V;h+=akkS9~~7} zpfi^!hyF3wav=&_$pxzPu(Ig&6{R!Zy(BmfTjx@?LQhn_zZ5_@$S5Qoe7z^E#F|>{ zpj6;|mx{=gjkOxz--wk%n*i>&ZalhIyVu)Ng$Z9e|1qTcYlq5xen=sS0?c~ZUHVr+ z(1)8oTEb`%F3e}|mhkp2NGIhf9`59%{efrV**BLLir$ynMXD-A!Rdb>+bT{@#YIj%T~tz(MRIwXq*>HTq~kpRn?;byiTwrt4k)!I`PD z%EQ^?gBXex9ah_+{cq`@7uC!KlUbR!eQ%TqDN^3Z7l55?TggqrbG~1QGl9hqcELcT z7_8hc2H%BO>aflIX8ZwmPWoy?p|$qM&)12o9d`<+a_>gK3HJ+mKjq{|zIh%AHVuR; zzY6Y(9O^gD7tWOyQUvN$d7ZvU0{51?=9cFK2?2wd1%qxX4B5JOyU;ht-LJtSkM$nR z=&8BK<-6N-j<(qOd_>Ntfz`KemnM12bqI~(!PTUWYuG}^a6YD^ZBxh5+m0g@0cXwo zLmS{m4aU*sTF`Y?Sy>|%an@Xe(H|dQ{;rO@;$s7SpdZxxZdr%`OgF?ENkuX9+R(f@ z|1?)$!Tc3_+U1{j8YwuYd!FdazrM63*BNN`Xd#a>JY@8ME9_M(Ml3_{bBMjk?w)21 zX0^=CRn9?Yw0+Qe`t|FtV5_wT zi;+6f8m)m78fIDa(!KU(uoj$J{3U-bx^y`Tb$H@4Nu+h8lB9`0V1D0vvK$(bkCS!3 z6GTrw<@^*{MI)6zMR*2_{8_z6Op;M=fZYP-;NOw^M=1D{3Ehn;5j>v`WpPi>Kvb$VDWdPoBZqEF1rsrOqF^p-1TS z4b_9AgE17Zw&9+rzogmZrclYphH3%-%^Z>eo+~Em_w`t}_lIQ_3_t%~Ug%sdgpQ(gjo@*0w^pV!CJ)O# z%5#_H`3@o6KPa_E(2$IO;ftuZTAP<&Z8F8LGTaVxU?n$QB@d51!altTctcF^A=2{k zESqZQq;w~88q+1R2%5xx#_<33!M(b@0eI0y=^_2Or5zvx-d~#gChU|$&1w6O_OI8E z6Xv8&qI8Jy+EJ60ea*}9rz2Ws<$?)5#uuQ~JxIkU7zYm##t(j?El!%2Dps#;0esyt z!t*>!6E-8^?%Cm;g6|vb*3UD^(N?+hyiMif*O(h%Rwv#AOcaUwzp@{hi!wDB+uJr> zHER7O%9J1HVEkD~STaXV@^+Oec^GQunW7+8@ixGAsRM?mC*6HhxN&=HLSD8gNLj8B zy6L(BO}n{)WDG*t5()Q+7v_;D!fFD1RPWd7T}5Hru}wcpD|jEq++&eLkNDyEYAY=P zSP4Pqm!MsgA-=IIM1|y_qdklN{ZI;t~Db1W3q6%V}A0)Q#=*i z8w(P?e6bv-InYjW?=#x6ON1X#EZg_@eyEh%0+!js zKFf|Vlgyo|YIbzgcanK;%dr=D8eszE7tNfZ$?%f#Unp?#{byWDLTbYWQdfc*e=fcheo zjd+q|4HV&vP8Cxarr`QQ`^Q!XJv@;^6007MPY@^+u}Iz>SB*P zAUY>h+tA~TQKHfb1ks{|{pw*p1y@+N1`b@B8*@(;m1CApDow-{Tfd%rDysG=A(hPK z6TL>&12Q}mrBL+1;Cp$iB@4B32RlA)@%ZaBHxHeTbS=Krz@z1UG8ENA@gLQtlOb*|OOXBV>oo(Pcw~QE)_-$mL}_@$VlA!8d_;H1c5}B*4^y zdNHVuhfE@o%R7nr{rCJYf25C!%B92;ZTC#A@vK0W5B zD(P8`H?tcY$;c~D6)d|%6p(mARY;kM|K!LD%(^Q^2~jD0C|O>UJKmd>`SQ??(byAe z?5Mcgny5yk1=2*LIhVc?&c3YqKveb4&qEV)w|?e?X>~s#uHWEWu1ns~7g0%u{xh-# zq|2KU7>u!#7%EX?GQZjRyzOSQw z{-aoP^zy=|8{`RZkP36jY|8AvTiju{Ar*`o(`}cKs{k%;Y#6>YQ9Qe_C<#oG5$4B}wo;&M5RAPo( zA8GFD5~jz4qUquwN-av6DsD0VJdDo+Yn9Oyb)N9T1kU*!HSYT7dC%8PGYZabdqgdG zkz9s=7E`G3yKpWTcOiEUEBmc2~U95$c* z7sj;oU?vah%h(|UVw%<}%I|YCfvw` Date: Wed, 6 Jul 2022 15:17:27 +0800 Subject: [PATCH 55/69] Enabled transfer, errors refactoring --- contracts/cw-cyber-gift/src/error.rs | 21 ++- contracts/cw-cyber-gift/src/execute.rs | 2 +- contracts/cw-cyber-gift/src/helpers.rs | 6 +- contracts/cw-cyber-passport/src/error.rs | 9 +- contracts/cw-cyber-passport/src/execute.rs | 158 +++++++++------------ contracts/cw-cyber-passport/src/helpers.rs | 2 +- 6 files changed, 88 insertions(+), 110 deletions(-) diff --git a/contracts/cw-cyber-gift/src/error.rs b/contracts/cw-cyber-gift/src/error.rs index be86f4e..27e15eb 100644 --- a/contracts/cw-cyber-gift/src/error.rs +++ b/contracts/cw-cyber-gift/src/error.rs @@ -22,27 +22,21 @@ pub enum ContractError { #[error("Unauthorized")] Unauthorized {}, - #[error("Invalid input")] - InvalidInput {}, - - #[error("Already claimed")] + #[error("Your gift is already claimed")] Claimed {}, - #[error("Not claimed")] + #[error("Your gift is not claimed yet")] NotClaimed {}, - #[error("Not activated")] + #[error("Gift is not activated yet")] NotActivated {}, #[error("Stage released")] StageReleased {}, - #[error("Gift released")] + #[error("Your gift is fully released")] GiftReleased {}, - #[error("Empty release state")] - EmptyReleaseState {}, - #[error("Wrong length")] WrongLength {}, @@ -52,12 +46,15 @@ pub enum ContractError { #[error("Cannot migrate from unsupported version: {previous_version}")] CannotMigrateVersion { previous_version: String }, - #[error("Address is not eligible to claim airdrop, {msg}")] - IsNotEligible { msg: String }, + #[error("Address is not proved with your passport")] + IsNotProved {}, #[error("Gift is over")] GiftIsOver {}, + #[error("Verification failed")] + VerificationFailed {}, + #[error("Semver parsing error: {0}")] SemVer(String), } diff --git a/contracts/cw-cyber-gift/src/execute.rs b/contracts/cw-cyber-gift/src/execute.rs index 52a2387..5fded37 100644 --- a/contracts/cw-cyber-gift/src/execute.rs +++ b/contracts/cw-cyber-gift/src/execute.rs @@ -165,7 +165,7 @@ pub fn execute_claim( )?; if res.signed == false { - return Err(ContractError::IsNotEligible { msg: "passport isn't assigned".to_string() }); + return Err(ContractError::IsNotProved {}); } // returns error of proof is invalid diff --git a/contracts/cw-cyber-gift/src/helpers.rs b/contracts/cw-cyber-gift/src/helpers.rs index df80899..8a459d2 100644 --- a/contracts/cw-cyber-gift/src/helpers.rs +++ b/contracts/cw-cyber-gift/src/helpers.rs @@ -1,8 +1,8 @@ use crate::state::{Config, MERKLE_ROOT, State, STATE}; use crate::ContractError; use cosmwasm_std::{ - Decimal, DepsMut, MessageInfo, StdError, StdResult, Storage, - Uint128, VerificationError, + Decimal, DepsMut, MessageInfo, StdResult, Storage, + Uint128, }; use sha2::Digest; use std::convert::TryInto; @@ -60,7 +60,7 @@ pub fn verify_merkle_proof( let mut root_buf: [u8; 32] = [0; 32]; hex::decode_to_slice(merkle_root, &mut root_buf)?; if root_buf != hash { - return Err(StdError::verification_err(VerificationError::GenericErr {}).into()); + return Err(ContractError::VerificationFailed {}); } Ok(true) } diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index f44a8cc..640c38f 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -11,7 +11,7 @@ pub enum ContractError { #[error("{0}")] Std(#[from] StdError), - #[error("Disabled Functionality")] + #[error("Disabled functionality")] DisabledFunctionality {}, #[error("Unauthorized")] @@ -69,7 +69,7 @@ pub enum ContractError { #[error("Data is not valid")] NotValidData {}, - #[error("Nickname already exists")] + #[error("Nickname is already exists")] NicknameAlreadyExists {}, #[error("Nickname not found")] @@ -78,9 +78,12 @@ pub enum ContractError { #[error("Token not found")] TokenNotFound {}, - #[error("Address is not eligible to claim airdrop, {msg}")] + #[error("Address is not eligible to claim gift, {msg}")] IsNotEligible { msg: String }, + #[error("Cannot add the address to the passport, {msg}")] + ErrAddAddress { msg: String }, + // ----- // TODO check this overwrites of error messages diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index 017a926..a768afa 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -410,12 +410,12 @@ pub fn execute_proof_address( if token_info.extension.addresses.is_some() { let mut addresses = token_info.extension.addresses.unwrap(); if addresses.len() > 7 { - return Err(ContractError::IsNotEligible { + return Err(ContractError::ErrAddAddress { msg: "Too many addresses".to_string(), }); } if addresses.iter().position(|x| *x.address == address.clone()).is_some() { - return Err(ContractError::IsNotEligible { + return Err(ContractError::ErrAddAddress { msg: "Address already exist".to_string(), }); } @@ -515,99 +515,77 @@ pub fn execute_mint( _info: MessageInfo, _mint_msg: MintMsg, ) -> Result { - // only for dev and test phase - // let config = CONFIG.load(deps.storage)?; - // if info.clone().sender != config.owner { - // return Err(ContractError::Unauthorized {}); - // } - // - // if mint_msg.clone().extension.addresses.is_some() { - // return Err(ContractError::InvalidInitialization {}); - // } - // - // // contract itself can only mint - // let internal_info = MessageInfo { - // sender: env.clone().contract.address, - // funds: info.funds, - // }; - // - // let cw721_contract = PassportContract::default(); - // let response = cw721_contract.mint(deps, env, internal_info, mint_msg)?; - // Ok(response) Err(ContractError::DisabledFunctionality {}) } pub fn execute_transfer_nft( - _deps: DepsMut, - _env: Env, - _info: MessageInfo, - _recipient: String, - _token_id: String, + deps: DepsMut, + env: Env, + info: MessageInfo, + recipient: String, + token_id: String, ) -> Result { - // let config = CONFIG.load(deps.storage)?; - // - // let cw721_contract = PassportContract::default(); - // - // let mut nickname = String::default(); - // let mut avatar = String::default(); - // - // let new_owner = deps.api.addr_validate(&recipient)?; - // - // // clear proved addresses and data - // cw721_contract - // .tokens - // .update(deps.storage, &token_id.clone(), |token| match token { - // Some(mut token_info) => { - // nickname = token_info.clone().extension.nickname; - // avatar = token_info.clone().extension.avatar; - // token_info.extension.addresses = Some(vec![]); - // token_info.extension.data = None; - // token_info.extension.particle = None; - // Ok(token_info) - // } - // None => return Err(ContractError::TokenNotFound {}), - // })?; - // - // if !NICKNAMES.has(deps.storage, &nickname.clone()) { - // return Err(ContractError::NicknameNotFound {}); - // }; - // - // // map nickname to new owner - // NICKNAMES.save( - // deps.storage, - // &nickname.clone(), - // &AddressPortID{ - // address: new_owner.clone(), - // portid: token_id.clone() - // } - // )?; - // - // // clear this passport as active - // if ACTIVE.has(deps.storage, &info.clone().sender) { - // let active = ACTIVE.load(deps.storage, &info.clone().sender)?; - // if active == token_id { - // ACTIVE.remove(deps.storage, &info.clone().sender); - // } - // } - // - // let nickname_particle = prepare_particle(nickname.clone())?; - // let address_particle = prepare_particle(new_owner.clone().to_string())?; - // - // // link passport to new owner - // // nickname -> new address cyberlink - // let name_subgraph_submsg = prepare_cyberlink_submsg( - // config.name_subgraph.into(), - // vec![ - // Link{ - // from: nickname_particle.clone().into(), - // to: address_particle.clone().into() - // }, - // ] - // ); - // - // let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; - // Ok(response.add_submessage(name_subgraph_submsg)) - Err(ContractError::DisabledFunctionality {}) + let config = CONFIG.load(deps.storage)?; + + let cw721_contract = PassportContract::default(); + + let mut nickname = String::default(); + + let new_owner = deps.api.addr_validate(&recipient)?; + + // clear proved addresses and data + cw721_contract + .tokens + .update(deps.storage, &token_id.clone(), |token| match token { + Some(mut token_info) => { + nickname = token_info.clone().extension.nickname; + token_info.extension.addresses = Some(vec![]); + token_info.extension.data = None; + token_info.extension.particle = None; + Ok(token_info) + } + None => return Err(ContractError::TokenNotFound {}), + })?; + + if !NICKNAMES.has(deps.storage, &nickname.clone()) { + return Err(ContractError::NicknameNotFound {}); + }; + + // map nickname to new owner + NICKNAMES.save( + deps.storage, + &nickname.clone(), + &AddressPortID{ + address: new_owner.clone(), + portid: token_id.clone() + } + )?; + + // clear this passport as active + if ACTIVE.has(deps.storage, &info.clone().sender) { + let active = ACTIVE.load(deps.storage, &info.clone().sender)?; + if active == token_id { + ACTIVE.remove(deps.storage, &info.clone().sender); + } + } + + let nickname_particle = prepare_particle(nickname.clone())?; + let address_particle = prepare_particle(new_owner.clone().to_string())?; + + // link passport to new owner + // nickname -> new address cyberlink + let name_subgraph_submsg = prepare_cyberlink_submsg( + config.name_subgraph.into(), + vec![ + Link{ + from: nickname_particle.clone().into(), + to: address_particle.clone().into() + }, + ] + ); + + let response = cw721_contract.transfer_nft(deps, env, info, recipient, token_id)?; + Ok(response.add_submessage(name_subgraph_submsg)) } // NOTE disabled diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 88c4d7a..97d2278 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -47,7 +47,7 @@ pub fn proof_address_ethereum( let signer_address = decode_address(address.clone().as_str())?; if signer_address != calculated_address { return Err(ContractError::IsNotEligible { - msg: "signer address is not calculated addr".to_string(), + msg: "Signer address is not calculated address".to_string(), }); } deps.api From afd77a9a70ef27ecada03c0e25931c525c36d813 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 7 Jul 2022 21:53:35 +0800 Subject: [PATCH 56/69] Added verification of moon code for passport creator --- contracts/cw-cyber-gift/src/error.rs | 2 +- contracts/cw-cyber-passport/src/contract.rs | 6 ++++- contracts/cw-cyber-passport/src/error.rs | 10 +++---- contracts/cw-cyber-passport/src/execute.rs | 30 +++++++++++++-------- contracts/cw-cyber-passport/src/helpers.rs | 8 +++--- contracts/cw-cyber-passport/src/msg.rs | 1 + contracts/cw-cyber-passport/src/tests.rs | 16 ++++++----- 7 files changed, 44 insertions(+), 29 deletions(-) diff --git a/contracts/cw-cyber-gift/src/error.rs b/contracts/cw-cyber-gift/src/error.rs index 27e15eb..603558a 100644 --- a/contracts/cw-cyber-gift/src/error.rs +++ b/contracts/cw-cyber-gift/src/error.rs @@ -31,7 +31,7 @@ pub enum ContractError { #[error("Gift is not activated yet")] NotActivated {}, - #[error("Stage released")] + #[error("Stage released, wait for the next stage")] StageReleased {}, #[error("Your gift is fully released")] diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index 76e4649..e35c144 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -50,7 +50,11 @@ pub fn execute( ) -> Result { match msg { ExecuteMsg::Execute { msgs } => execute_execute(deps, env, info, msgs), - ExecuteMsg::CreatePassport {nickname, avatar} => execute_create_passport(deps, env, info, nickname, avatar), + ExecuteMsg::CreatePassport { + nickname, + avatar, + signature + } => execute_create_passport(deps, env, info, nickname, avatar, signature), ExecuteMsg::UpdateName { old_nickname, new_nickname} => execute_update_name(deps, env, info, old_nickname, new_nickname), ExecuteMsg::UpdateAvatar { nickname, new_avatar} => execute_update_avatar(deps, env, info, nickname, new_avatar), ExecuteMsg::UpdateData { nickname, data} => execute_update_data(deps, env, info, nickname, data), diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 640c38f..10d8e22 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -57,7 +57,7 @@ pub enum ContractError { #[error("Invalid initialization")] InvalidInitialization {}, - #[error("Wrong amount for the name")] + #[error("Wrong token amount for this name")] WrongAmountForName {}, #[error("Name is not valid")] @@ -69,7 +69,7 @@ pub enum ContractError { #[error("Data is not valid")] NotValidData {}, - #[error("Nickname is already exists")] + #[error("Nickname already exists")] NicknameAlreadyExists {}, #[error("Nickname not found")] @@ -78,12 +78,12 @@ pub enum ContractError { #[error("Token not found")] TokenNotFound {}, - #[error("Address is not eligible to claim gift, {msg}")] - IsNotEligible { msg: String }, - #[error("Cannot add the address to the passport, {msg}")] ErrAddAddress { msg: String }, + #[error("Verification failed")] + VerificationFailed { msg: String }, + // ----- // TODO check this overwrites of error messages diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index a768afa..d691ae5 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -14,7 +14,6 @@ use crate::state::{Config, CONFIG}; type Response = cosmwasm_std::Response; -// TODO discuss and make this configurable in config (or not) // TODO set to constitution in production deployment const CONSTITUTION: &str = "QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV"; pub const CYBERSPACE_ID_MSG: u64 = 420; @@ -44,7 +43,16 @@ pub fn execute_create_passport( info: MessageInfo, nickname: String, avatar: String, + signature: Binary ) -> Result { + let verified = proof_address_cosmos(deps.as_ref(), info.clone().sender.to_string(), info.clone().sender.to_string(), CONSTITUTION.into(), signature)?; + + if !verified { + return Err(ContractError::VerificationFailed { + msg: "Signature verification failed".to_string(), + }); + } + if NICKNAMES.has(deps.storage, &nickname.clone()) { return Err(ContractError::NicknameAlreadyExists {}); } @@ -393,15 +401,15 @@ pub fn execute_proof_address( // check address type and call needed proof function let proof_res:bool; if decode_address(&address).is_err() { - proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), info.sender.to_string(), CONSTITUTION.into(), signature) - .map_err(|err| ContractError::IsNotEligible { - msg: err.to_string(), - })?; + proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), info.sender.to_string(), CONSTITUTION.into(), signature)? + // .map_err(|err| ContractError::VerificationFailed { + // msg: err.to_string(), + // })?; } else { - proof_res = proof_address_ethereum(deps.as_ref(), address.clone(), info.sender.to_string(),CONSTITUTION.into(), signature) - .map_err(|err| ContractError::IsNotEligible { - msg: err.to_string(), - })?; + proof_res = proof_address_ethereum(deps.as_ref(), address.clone(), info.sender.to_string(),CONSTITUTION.into(), signature)? + // .map_err(|err| ContractError::VerificationFailed { + // msg: err.to_string(), + // })?; } // save address if not exists or there is enought space for address (<=8) @@ -426,8 +434,8 @@ pub fn execute_proof_address( }; cw721_contract.tokens.save(deps.storage, &address_portid.clone().portid, &token_info)?; } else { - return Err(ContractError::IsNotEligible { - msg: "Address is not eligible".to_string(), + return Err(ContractError::VerificationFailed { + msg: "Signature verification failed".to_string(), }); } diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 97d2278..8eb2445 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -34,7 +34,7 @@ pub fn proof_address_ethereum( let (v, rs) = match sig.split_last() { Some(pair) => pair, None => { - return Err(ContractError::IsNotEligible { + return Err(ContractError::VerificationFailed { msg: "Signature must not be empty".to_string(), }) } @@ -46,13 +46,13 @@ pub fn proof_address_ethereum( let calculated_address = ethereum_address_raw(&calculated_pubkey)?; let signer_address = decode_address(address.clone().as_str())?; if signer_address != calculated_address { - return Err(ContractError::IsNotEligible { + return Err(ContractError::VerificationFailed { msg: "Signer address is not calculated address".to_string(), }); } deps.api .secp256k1_verify(&hash, rs, &calculated_pubkey) - .map_err(|err| ContractError::IsNotEligible { + .map_err(|err| ContractError::VerificationFailed { msg: err.to_string(), }) } @@ -163,7 +163,7 @@ pub fn proof_address_cosmos( &sig.signature.as_slice(), &sig.pub_key.as_slice(), ) - .map_err(|err| ContractError::IsNotEligible { + .map_err(|err| ContractError::VerificationFailed { msg: err.to_string(), }); diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index 37cbd30..a7a9306 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -54,6 +54,7 @@ pub enum ExecuteMsg { CreatePassport { nickname: String, avatar: String, + signature: Binary, }, UpdateName{ old_nickname: String, diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index e013ae5..2828bc6 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -14,7 +14,7 @@ mod tests { let mut deps = mock_dependencies(); let owner = "owner"; - let citizen = "bostrom1wnpak7sfawsfv9c8vqe7naxfa4g99lv77d7c0z"; + let citizen = "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv"; let name_subgraph = "name_subgraph"; let avatar_subgraph = "avatar_subgraph"; let proof_subgraph = "proof_subgraph"; @@ -48,6 +48,8 @@ mod tests { let create_passport_msg = ExecuteMsg::CreatePassport { nickname: "test-nickname".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + // signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }; let info = mock_info(&citizen, &[]); @@ -126,7 +128,7 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test-nickname-new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), + signature: Binary::from_base64("0xa3b7b3adee5805488a62d96ca58ccee80a65a3f74343d1e6f19b0b597afe65da123c020cb968ca141d48b844b098ee33ad5aa827b0da89fb3b89ea272f9a42b01b").unwrap(), }; let info = mock_info(&citizen, &[]); @@ -144,7 +146,7 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test-nickname-new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), - signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }; let info = mock_info(&citizen, &[]); @@ -166,24 +168,24 @@ mod tests { let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test-nickname-new".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), + signature: Binary::from_base64("0xa3b7b3adee5805488a62d96ca58ccee80a65a3f74343d1e6f19b0b597afe65da123c020cb968ca141d48b844b098ee33ad5aa827b0da89fb3b89ea272f9a42b01b").unwrap(), }; let info = mock_info(&citizen, &[]); let err = execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap_err(); - assert_eq!(err, ContractError::IsNotEligible { msg: "Address already exist".to_string() }); + assert_eq!(err, ContractError::ErrAddAddress { msg: "Address already exist".to_string() }); let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test-nickname-new".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), - signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }; let info = mock_info(&citizen, &[]); let err = execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap_err(); - assert_eq!(err, ContractError::IsNotEligible { msg: "Address already exist".to_string() }); + assert_eq!(err, ContractError::ErrAddAddress { msg: "Address already exist".to_string() }); // check that is available to delete proved addresses From 748b8d1ddfe2fa725100856a9809cb5685be2385 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 00:12:19 +0800 Subject: [PATCH 57/69] Updated nickname, data and label validation --- .../cw-cyber-passport/schema/execute_msg.json | 6 +++++- contracts/cw-cyber-passport/src/execute.rs | 14 ++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index eb4e5dc..ecd6164 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -35,7 +35,8 @@ "type": "object", "required": [ "avatar", - "nickname" + "nickname", + "signature" ], "properties": { "avatar": { @@ -43,6 +44,9 @@ }, "nickname": { "type": "string" + }, + "signature": { + "$ref": "#/definitions/Binary" } } } diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index d691ae5..ee72f49 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -61,7 +61,7 @@ pub fn execute_create_passport( let nickname_length = nickname.clone().len(); - if nickname_length > 32 && nickname_length < 3 { + if nickname_length > 32 || nickname_length < 3 { return Err(ContractError::NotValidName {}); } @@ -171,7 +171,7 @@ pub fn execute_update_name( let nickname_length = new_name.clone().len(); - if nickname_length > 32 && nickname_length < 3 { + if nickname_length > 32 || nickname_length < 3 { return Err(ContractError::NotValidName {}); } @@ -305,7 +305,7 @@ pub fn execute_update_data( ) -> Result { if new_data.is_some() { let data_length = new_data.clone().unwrap().len(); - if data_length > 256 && data_length < 3 { + if data_length > 256 || data_length < 3 { return Err(ContractError::NotValidData {}); } } @@ -402,14 +402,8 @@ pub fn execute_proof_address( let proof_res:bool; if decode_address(&address).is_err() { proof_res = proof_address_cosmos(deps.as_ref(), address.clone(), info.sender.to_string(), CONSTITUTION.into(), signature)? - // .map_err(|err| ContractError::VerificationFailed { - // msg: err.to_string(), - // })?; } else { proof_res = proof_address_ethereum(deps.as_ref(), address.clone(), info.sender.to_string(),CONSTITUTION.into(), signature)? - // .map_err(|err| ContractError::VerificationFailed { - // msg: err.to_string(), - // })?; } // save address if not exists or there is enought space for address (<=8) @@ -792,7 +786,7 @@ pub fn execute_set_address_label( label: Option, ) -> Result { - if label.is_some() && label.clone().unwrap().len() > 32 { + if label.is_some() && label.clone().unwrap().len() > 16 { return Err(ContractError::NotValidLabel {}); } From 270e6aab45741e56e009fb9842d42e4e0c08c81b Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 00:16:27 +0800 Subject: [PATCH 58/69] Updated README --- README.md | 8 ++++++++ contracts/cw-cyber-gift/README.md | 4 ++-- contracts/cw-cyber-passport/README.md | 2 +- contracts/cw-cyber-subgraph/README.md | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 08ab956..4691a23 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,12 @@ # cyberGift Contracts + +``` +docker run --rm -v "$(pwd)":/code \ + --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ + --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ + cosmwasm/workspace-optimizer:0.12.6 +``` + ## Contracts ### Gift Contract [cw-cyber-airdrop](contracts/cw-cyber-airdrop) diff --git a/contracts/cw-cyber-gift/README.md b/contracts/cw-cyber-gift/README.md index 1adbddf..c7fe754 100644 --- a/contracts/cw-cyber-gift/README.md +++ b/contracts/cw-cyber-gift/README.md @@ -1,4 +1,4 @@ -# cw-cybergift +# cw-cyber-gift ## Generate root, proofs and verify proofs @@ -7,4 +7,4 @@ This is a helper client shipped along contract [merkle-airdrop-cli](https://github.com/CosmWasm/cw-tokens/tree/main/contracts/cw20-merkle-airdrop/helpers) ### Calculation of Merkle Root and Proofs for Final Distribution -[Jupyter notebook](testdata/generate_test_data/gift_final_merkle_tree.ipynb) \ No newline at end of file +[Jupyter notebook](testdata/generate_test_data/gift_final_merkle_tree.ipynb) diff --git a/contracts/cw-cyber-passport/README.md b/contracts/cw-cyber-passport/README.md index e4f2ae4..840918e 100644 --- a/contracts/cw-cyber-passport/README.md +++ b/contracts/cw-cyber-passport/README.md @@ -1 +1 @@ -# cw-passport +# cw-cyber-passport diff --git a/contracts/cw-cyber-subgraph/README.md b/contracts/cw-cyber-subgraph/README.md index 99591a6..6896f0e 100644 --- a/contracts/cw-cyber-subgraph/README.md +++ b/contracts/cw-cyber-subgraph/README.md @@ -1 +1 @@ -# cw-cybergift +# cw-cyber-subgraph From f66eff8017d289ada3d7ae8de00cf723a09be13a Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 12:58:07 +0800 Subject: [PATCH 59/69] Enabled advanced execution operations --- contracts/cw-cyber-gift/Cargo.toml | 2 +- .../cw-cyber-gift/schema/execute_msg.json | 250 +++++++++++ contracts/cw-cyber-passport/Cargo.toml | 2 +- .../cw-cyber-passport/schema/execute_msg.json | 419 +++++++++++++++++- contracts/cw-cyber-passport/src/msg.rs | 1 - 5 files changed, 651 insertions(+), 23 deletions(-) diff --git a/contracts/cw-cyber-gift/Cargo.toml b/contracts/cw-cyber-gift/Cargo.toml index bbca11a..769dad0 100644 --- a/contracts/cw-cyber-gift/Cargo.toml +++ b/contracts/cw-cyber-gift/Cargo.toml @@ -46,7 +46,7 @@ cw0 = "0.10.3" cw2 = "0.13.4" cw20 = "0.13.4" cw1-subkeys = "0.13.4" -cosmwasm-std = { version = "1.0.0" } +cosmwasm-std = { version = "1.0.0", features = ["staking","stargate"] } cyber-std = { version = "0.2.1" } cw-utils = { version = "0.13.4" } cw-cyber-passport = { path = "../cw-cyber-passport", features = ["library"] } diff --git a/contracts/cw-cyber-gift/schema/execute_msg.json b/contracts/cw-cyber-gift/schema/execute_msg.json index 35cd6b0..feb7f3c 100644 --- a/contracts/cw-cyber-gift/schema/execute_msg.json +++ b/contracts/cw-cyber-gift/schema/execute_msg.json @@ -290,6 +290,43 @@ }, "additionalProperties": false }, + { + "description": "A Stargate message encoded the same way as a protobuf [Any](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto). This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "type": "object", + "required": [ + "stargate" + ], + "properties": { + "stargate": { + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ibc" + ], + "properties": { + "ibc": { + "$ref": "#/definitions/IbcMsg" + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -301,6 +338,18 @@ } }, "additionalProperties": false + }, + { + "type": "object", + "required": [ + "gov" + ], + "properties": { + "gov": { + "$ref": "#/definitions/GovMsg" + } + }, + "additionalProperties": false } ] }, @@ -850,6 +899,190 @@ } ] }, + "GovMsg": { + "oneOf": [ + { + "description": "This maps directly to [MsgVote](https://github.com/cosmos/cosmos-sdk/blob/v0.42.5/proto/cosmos/gov/v1beta1/tx.proto#L46-L56) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote" + ], + "properties": { + "vote": { + "type": "object", + "required": [ + "proposal_id", + "vote" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "vote": { + "$ref": "#/definitions/VoteOption" + } + } + } + }, + "additionalProperties": false + } + ] + }, + "IbcMsg": { + "description": "These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts (contracts that directly speak the IBC protocol via 6 entry points)", + "oneOf": [ + { + "description": "Sends bank tokens owned by the contract to the given address on another chain. The channel must already be established between the ibctransfer module on this chain and a matching module on the remote chain. We cannot select the port_id, this is whatever the local chain has bound the ibctransfer module to.", + "type": "object", + "required": [ + "transfer" + ], + "properties": { + "transfer": { + "type": "object", + "required": [ + "amount", + "channel_id", + "timeout", + "to_address" + ], + "properties": { + "amount": { + "description": "packet data only supports one coin https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/ibc/applications/transfer/v1/transfer.proto#L11-L20", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + }, + "channel_id": { + "description": "exisiting channel to send the tokens over", + "type": "string" + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + }, + "to_address": { + "description": "address on the remote chain to receive these tokens", + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Sends an IBC packet with given data over the existing channel. Data should be encoded in a format defined by the channel version, and the module on the other side should know how to parse this.", + "type": "object", + "required": [ + "send_packet" + ], + "properties": { + "send_packet": { + "type": "object", + "required": [ + "channel_id", + "data", + "timeout" + ], + "properties": { + "channel_id": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/Binary" + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This will close an existing channel that is owned by this contract. Port is auto-assigned to the contract's IBC port", + "type": "object", + "required": [ + "close_channel" + ], + "properties": { + "close_channel": { + "type": "object", + "required": [ + "channel_id" + ], + "properties": { + "channel_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] + }, + "IbcTimeout": { + "description": "In IBC each package must set at least one type of timeout: the timestamp or the block height. Using this rather complex enum instead of two timeout fields we ensure that at least one timeout is set.", + "type": "object", + "properties": { + "block": { + "anyOf": [ + { + "$ref": "#/definitions/IbcTimeoutBlock" + }, + { + "type": "null" + } + ] + }, + "timestamp": { + "anyOf": [ + { + "$ref": "#/definitions/Timestamp" + }, + { + "type": "null" + } + ] + } + } + }, + "IbcTimeoutBlock": { + "description": "IBCTimeoutHeight Height is a monotonically increasing data type that can be compared against another Height for the purposes of updating and freezing clients. Ordering is (revision_number, timeout_height)", + "type": "object", + "required": [ + "height", + "revision" + ], + "properties": { + "height": { + "description": "block height after which the packet times out. the height within the given revision", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "revision": { + "description": "the version that the client is currently on (eg. after reseting the chain this could increment 1 as height drops to 0)", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, "Link": { "type": "object", "required": [ @@ -964,6 +1197,14 @@ } ] }, + "Timestamp": { + "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", + "allOf": [ + { + "$ref": "#/definitions/Uint64" + } + ] + }, "Trigger": { "type": "object", "required": [ @@ -991,6 +1232,15 @@ "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" }, + "VoteOption": { + "type": "string", + "enum": [ + "yes", + "no", + "abstain", + "no_with_veto" + ] + }, "WasmMsg": { "description": "The message types of the wasm module.\n\nSee https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto", "oneOf": [ diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index a1ac78f..598912f 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -41,7 +41,7 @@ optimize = """docker run --rm -v "$(pwd)":/code \ """ [dependencies] -cosmwasm-std = { version = "1.0.0" } +cosmwasm-std = { version = "1.0.0", features = ["staking","stargate"] } cosmwasm-storage = { version = "1.0.0" } cw-storage-plus = "0.13.4" cw2 = "0.13.4" diff --git a/contracts/cw-cyber-passport/schema/execute_msg.json b/contracts/cw-cyber-passport/schema/execute_msg.json index ecd6164..bc2c9ee 100644 --- a/contracts/cw-cyber-passport/schema/execute_msg.json +++ b/contracts/cw-cyber-passport/schema/execute_msg.json @@ -205,26 +205,6 @@ }, "additionalProperties": false }, - { - "type": "object", - "required": [ - "set_minter" - ], - "properties": { - "set_minter": { - "type": "object", - "required": [ - "minter" - ], - "properties": { - "minter": { - "type": "string" - } - } - } - }, - "additionalProperties": false - }, { "type": "object", "required": [ @@ -627,6 +607,67 @@ }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "staking" + ], + "properties": { + "staking": { + "$ref": "#/definitions/StakingMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "distribution" + ], + "properties": { + "distribution": { + "$ref": "#/definitions/DistributionMsg" + } + }, + "additionalProperties": false + }, + { + "description": "A Stargate message encoded the same way as a protobuf [Any](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto). This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "type": "object", + "required": [ + "stargate" + ], + "properties": { + "stargate": { + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + } + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ibc" + ], + "properties": { + "ibc": { + "$ref": "#/definitions/IbcMsg" + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -638,6 +679,18 @@ } }, "additionalProperties": false + }, + { + "type": "object", + "required": [ + "gov" + ], + "properties": { + "gov": { + "$ref": "#/definitions/GovMsg" + } + }, + "additionalProperties": false } ] }, @@ -1138,6 +1191,55 @@ "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", "type": "string" }, + "DistributionMsg": { + "description": "The message types of the distribution module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgSetWithdrawAddress](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L29-L37). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "set_withdraw_address" + ], + "properties": { + "set_withdraw_address": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "The `withdraw_address`", + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgWithdrawDelegatorReward](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L42-L50). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "withdraw_delegator_reward" + ], + "properties": { + "withdraw_delegator_reward": { + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "The `validator_address`", + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] + }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ @@ -1184,6 +1286,190 @@ } ] }, + "GovMsg": { + "oneOf": [ + { + "description": "This maps directly to [MsgVote](https://github.com/cosmos/cosmos-sdk/blob/v0.42.5/proto/cosmos/gov/v1beta1/tx.proto#L46-L56) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote" + ], + "properties": { + "vote": { + "type": "object", + "required": [ + "proposal_id", + "vote" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "vote": { + "$ref": "#/definitions/VoteOption" + } + } + } + }, + "additionalProperties": false + } + ] + }, + "IbcMsg": { + "description": "These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts (contracts that directly speak the IBC protocol via 6 entry points)", + "oneOf": [ + { + "description": "Sends bank tokens owned by the contract to the given address on another chain. The channel must already be established between the ibctransfer module on this chain and a matching module on the remote chain. We cannot select the port_id, this is whatever the local chain has bound the ibctransfer module to.", + "type": "object", + "required": [ + "transfer" + ], + "properties": { + "transfer": { + "type": "object", + "required": [ + "amount", + "channel_id", + "timeout", + "to_address" + ], + "properties": { + "amount": { + "description": "packet data only supports one coin https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/ibc/applications/transfer/v1/transfer.proto#L11-L20", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + }, + "channel_id": { + "description": "exisiting channel to send the tokens over", + "type": "string" + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + }, + "to_address": { + "description": "address on the remote chain to receive these tokens", + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Sends an IBC packet with given data over the existing channel. Data should be encoded in a format defined by the channel version, and the module on the other side should know how to parse this.", + "type": "object", + "required": [ + "send_packet" + ], + "properties": { + "send_packet": { + "type": "object", + "required": [ + "channel_id", + "data", + "timeout" + ], + "properties": { + "channel_id": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/Binary" + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This will close an existing channel that is owned by this contract. Port is auto-assigned to the contract's IBC port", + "type": "object", + "required": [ + "close_channel" + ], + "properties": { + "close_channel": { + "type": "object", + "required": [ + "channel_id" + ], + "properties": { + "channel_id": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] + }, + "IbcTimeout": { + "description": "In IBC each package must set at least one type of timeout: the timestamp or the block height. Using this rather complex enum instead of two timeout fields we ensure that at least one timeout is set.", + "type": "object", + "properties": { + "block": { + "anyOf": [ + { + "$ref": "#/definitions/IbcTimeoutBlock" + }, + { + "type": "null" + } + ] + }, + "timestamp": { + "anyOf": [ + { + "$ref": "#/definitions/Timestamp" + }, + { + "type": "null" + } + ] + } + } + }, + "IbcTimeoutBlock": { + "description": "IBCTimeoutHeight Height is a monotonically increasing data type that can be compared against another Height for the purposes of updating and freezing clients. Ordering is (revision_number, timeout_height)", + "type": "object", + "required": [ + "height", + "revision" + ], + "properties": { + "height": { + "description": "block height after which the packet times out. the height within the given revision", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "revision": { + "description": "the version that the client is currently on (eg. after reseting the chain this could increment 1 as height drops to 0)", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, "LabeledAddress": { "type": "object", "required": [ @@ -1300,6 +1586,90 @@ } } }, + "StakingMsg": { + "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "delegate" + ], + "properties": { + "delegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "undelegate" + ], + "properties": { + "undelegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "redelegate" + ], + "properties": { + "redelegate": { + "type": "object", + "required": [ + "amount", + "dst_validator", + "src_validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "dst_validator": { + "type": "string" + }, + "src_validator": { + "type": "string" + } + } + } + }, + "additionalProperties": false + } + ] + }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ @@ -1335,6 +1705,15 @@ "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" }, + "VoteOption": { + "type": "string", + "enum": [ + "yes", + "no", + "abstain", + "no_with_veto" + ] + }, "WasmMsg": { "description": "The message types of the wasm module.\n\nSee https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto", "oneOf": [ diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index a7a9306..d48f665 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -81,7 +81,6 @@ pub enum ExecuteMsg { nickname: String, address: String, }, - SetMinter { minter: String }, SetOwner { owner: String }, SetActive { token_id: String }, SetSubgraphs { From a5d244c1843667c284ec91afbe6248166a438384 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 13:14:56 +0800 Subject: [PATCH 60/69] Updated license --- LICENSE | 203 +------------------------------------------------------- NOTICE | 13 ---- 2 files changed, 2 insertions(+), 214 deletions(-) delete mode 100644 NOTICE diff --git a/LICENSE b/LICENSE index d645695..460a383 100644 --- a/LICENSE +++ b/LICENSE @@ -1,202 +1,3 @@ +Cyber License - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Don’t believe, don’t fear, don’t ask. diff --git a/NOTICE b/NOTICE deleted file mode 100644 index b82cbb9..0000000 --- a/NOTICE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2021 Orkun Külçe - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. From 82597d685b87d514def7b25014bd9473ab267cd7 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 13:15:31 +0800 Subject: [PATCH 61/69] Updated cargo.tomls --- contracts/cw-cyber-gift/Cargo.toml | 24 ++++-------------------- contracts/cw-cyber-passport/Cargo.toml | 24 ++++-------------------- contracts/cw-cyber-subgraph/Cargo.toml | 24 ++++-------------------- 3 files changed, 12 insertions(+), 60 deletions(-) diff --git a/contracts/cw-cyber-gift/Cargo.toml b/contracts/cw-cyber-gift/Cargo.toml index 769dad0..61ab980 100644 --- a/contracts/cw-cyber-gift/Cargo.toml +++ b/contracts/cw-cyber-gift/Cargo.toml @@ -4,28 +4,19 @@ version = "1.0.0" authors = ["CyberHead"] edition = "2018" -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", - "artifacts/*", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [lib] crate-type = ["cdylib", "rlib"] [profile.release] -opt-level = 3 -debug = false rpath = false lto = true +overflow-checks = true +opt-level = 3 +debug = false debug-assertions = false codegen-units = 1 -panic = 'abort' incremental = false -overflow-checks = true +panic = 'abort' [features] # for more explicit tests, cargo test --features=backtraces @@ -33,13 +24,6 @@ backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] -[package.metadata.scripts] -optimize = """docker run --rm -v "$(pwd)":/code \ - --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ - --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ - cosmwasm/rust-optimizer:0.12.4 -""" - [dependencies] anyhow = "1" cw0 = "0.10.3" diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index 598912f..e340dc4 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -4,28 +4,19 @@ version = "1.0.0" authors = ["CyberHead"] edition = "2018" -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", - "artifacts/*", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [lib] crate-type = ["cdylib", "rlib"] [profile.release] -opt-level = 3 -debug = false rpath = false lto = true +overflow-checks = true +opt-level = 3 +debug = false debug-assertions = false codegen-units = 1 -panic = 'abort' incremental = false -overflow-checks = true +panic = 'abort' [features] # for more explicit tests, cargo test --features=backtraces @@ -33,13 +24,6 @@ backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] -[package.metadata.scripts] -optimize = """docker run --rm -v "$(pwd)":/code \ - --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ - --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ - cosmwasm/rust-optimizer:0.12.4 -""" - [dependencies] cosmwasm-std = { version = "1.0.0", features = ["staking","stargate"] } cosmwasm-storage = { version = "1.0.0" } diff --git a/contracts/cw-cyber-subgraph/Cargo.toml b/contracts/cw-cyber-subgraph/Cargo.toml index f50daaa..0ecc014 100644 --- a/contracts/cw-cyber-subgraph/Cargo.toml +++ b/contracts/cw-cyber-subgraph/Cargo.toml @@ -4,28 +4,19 @@ version = "1.0.0" authors = ["CyberHead"] edition = "2018" -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", - "artifacts/*", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [lib] crate-type = ["cdylib", "rlib"] [profile.release] -opt-level = 3 -debug = false rpath = false lto = true +overflow-checks = true +opt-level = 3 +debug = false debug-assertions = false codegen-units = 1 -panic = 'abort' incremental = false -overflow-checks = true +panic = 'abort' [features] # for more explicit tests, cargo test --features=backtraces @@ -33,13 +24,6 @@ backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] -[package.metadata.scripts] -optimize = """docker run --rm -v "$(pwd)":/code \ - --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ - --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ - cosmwasm/rust-optimizer:0.12.4 -""" - [dependencies] anyhow = "1" cw2 = "0.13.4" From 676e1478ab340772fd9dcb0f995de30e5ce58d76 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 13:51:15 +0800 Subject: [PATCH 62/69] Removed gitpod --- .gitpod.Dockerfile | 17 ----------------- .gitpod.yml | 10 ---------- 2 files changed, 27 deletions(-) delete mode 100644 .gitpod.Dockerfile delete mode 100644 .gitpod.yml diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile deleted file mode 100644 index bff8bc5..0000000 --- a/.gitpod.Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -### wasmd ### -FROM cosmwasm/wasmd:v0.18.0 as wasmd - -### rust-optimizer ### -FROM cosmwasm/rust-optimizer:0.11.5 as rust-optimizer - -FROM gitpod/workspace-full:latest - -COPY --from=wasmd /usr/bin/wasmd /usr/local/bin/wasmd -COPY --from=wasmd /opt/* /opt/ - -RUN sudo apt-get update \ - && sudo apt-get install -y jq \ - && sudo rm -rf /var/lib/apt/lists/* - -RUN rustup update stable \ - && rustup target add wasm32-unknown-unknown diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index d03610c..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,10 +0,0 @@ -image: cosmwasm/cw-gitpod-base:v0.16 - -vscode: - extensions: - - rust-lang.rust - -tasks: - - name: Dependencies & Build - init: | - cargo build From e320608c72ba00a005a3593d61f2049a75008a6a Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 13:52:45 +0800 Subject: [PATCH 63/69] Updated README --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4691a23..fbac14f 100644 --- a/README.md +++ b/README.md @@ -30,4 +30,7 @@ docker run --rm -v "$(pwd)":/code \ ### Release Gift ![Release Gift](img/release_gift.png) ## Load testing -[Jupyter notebook](testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb) \ No newline at end of file +[Jupyter notebook](testdata/generate_test_data/gift_and_passport_contracts_load_testing.ipynb) + +## Bounty +cyberGift contracts have treasury which works as a security proxy for claiming process. cyberCongress will gradually replenish the treasury to minimize the risks of a hack. All BOOT on a contract balance is subject to bounty. If you find a way to get BOOT from contracts - do, but please report on the vulnerability. From b8ef2320e43e43cfff3855b48833f1afac0862e2 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 14:08:08 +0800 Subject: [PATCH 64/69] Updated tests --- contracts/cw-cyber-gift/src/tests.rs | 18 ++++++++++-------- contracts/cw-cyber-passport/src/tests.rs | 3 ++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/contracts/cw-cyber-gift/src/tests.rs b/contracts/cw-cyber-gift/src/tests.rs index b712e25..cd02936 100644 --- a/contracts/cw-cyber-gift/src/tests.rs +++ b/contracts/cw-cyber-gift/src/tests.rs @@ -12,12 +12,8 @@ mod tests { const NATIVE_TOKEN: &str = "boot"; - const OWNER: &str = "owner0001"; - const CYB1: &str = "bostrom1wnpak7sfawsfv9c8vqe7naxfa4g99lv77d7c0z"; - // const CYB2: &str = "cyb0002"; - // const CYB3: &str = "cyb0003"; - // const CYB4: &str = "cyb0004"; - // const SOMEBODY: &str = "somebody"; + const OWNER: &str = "owner"; + const CYB1: &str = "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv"; const SPACE1: &str = "space1"; const SPACE2: &str = "space2"; const SPACE3: &str = "space3"; @@ -180,6 +176,10 @@ mod tests { #[test] fn proper_flow() { + // NOTE to run tests change RELEASE_STAGES to 9 + // NOTE to run tests change CONSTITUTION to QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV + // NOTE to run tests change duration from DAY to HOUR + let init_funds = coins(INIT_BALANCE_OWNER.u128(), NATIVE_TOKEN); let mut app = mock_app(&init_funds); @@ -200,6 +200,7 @@ mod tests { &PassportExecuteMsg::CreatePassport { nickname: "passport1".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }, &[], ); @@ -210,7 +211,7 @@ mod tests { &PassportExecuteMsg::ProofAddress { nickname: "passport1".to_string(), address: "0x0408522089294b8b3f0c9514086e6ae1df00394c".to_string(), - signature: Binary::from_base64("0x25e7436c57e830643dc475745c28d98472074d0adb838bef1813859b06c1099619fcc67daa4b65d764c6ea1f93c637f1a8eb40515e639528f2abc5c95b46d3521c").unwrap(), + signature: Binary::from_base64("0xa3b7b3adee5805488a62d96ca58ccee80a65a3f74343d1e6f19b0b597afe65da123c020cb968ca141d48b844b098ee33ad5aa827b0da89fb3b89ea272f9a42b01b").unwrap(), }, &[], ); @@ -221,6 +222,7 @@ mod tests { &PassportExecuteMsg::CreatePassport { nickname: "passport2".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }, &[], ); @@ -231,7 +233,7 @@ mod tests { &PassportExecuteMsg::ProofAddress { nickname: "passport2".to_string(), address: "bostrom19nk207agguzdvpj9nqsf4zrjw8mcuu9afun3fv".to_string(), - signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), + signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }, &[], ); diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 2828bc6..5af63bf 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -11,6 +11,8 @@ mod tests { #[test] fn proper_flow() { + // NOTE to run tests change CONSTITUTION to QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV + let mut deps = mock_dependencies(); let owner = "owner"; @@ -48,7 +50,6 @@ mod tests { let create_passport_msg = ExecuteMsg::CreatePassport { nickname: "test-nickname".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), - // signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLCJzaWduYXR1cmUiOiJTZG40Z25pQzR2MExJM2Z2U0ZMbmRtM05HZ2VFNUlJWDJOSmZsN1cxWmcxOEplTUNSbHMySkNvK2xUTll0elZKN0RUaFRuK3k0NitXUTdvaWJLaHl4UT09In0=").unwrap(), signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }; From 6c741e5783879ba80c8982132dc95c5921607e54 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 14:13:57 +0800 Subject: [PATCH 65/69] Set release stages, moon code hash to production --- contracts/cw-cyber-gift/src/execute.rs | 10 ++++------ contracts/cw-cyber-passport/src/execute.rs | 3 +-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/contracts/cw-cyber-gift/src/execute.rs b/contracts/cw-cyber-gift/src/execute.rs index 5fded37..b17c216 100644 --- a/contracts/cw-cyber-gift/src/execute.rs +++ b/contracts/cw-cyber-gift/src/execute.rs @@ -3,7 +3,7 @@ use cosmwasm_std::{Addr, attr, BankMsg, Coin, CosmosMsg, Decimal, DepsMut, Empty use crate::error::ContractError; use crate::helpers::{update_coefficient, verify_merkle_proof}; use crate::state::{ReleaseState, CLAIM, CONFIG, MERKLE_ROOT, RELEASE, ClaimState, STATE, RELEASE_INFO}; -use cw_utils::{Expiration, DAY, HOUR}; +use cw_utils::{Expiration, DAY}; use std::ops::{Add, Mul}; use cw_cyber_passport::msg::{QueryMsg as PassportQueryMsg}; use crate::msg::{AddressResponse, SignatureResponse}; @@ -12,8 +12,7 @@ use cyber_std::CyberMsgWrapper; type Response = cosmwasm_std::Response; -// TODO change 9 to 90 before release -const RELEASE_STAGES: u64 = 9; +const RELEASE_STAGES: u64 = 90; pub fn execute_execute( deps: DepsMut, @@ -263,14 +262,13 @@ pub fn execute_release( return Err(ContractError::GiftReleased {}); } - // TODO change HOUR to DAY before release let amount: Uint128; if release_state.stage.is_zero() { // first claim, amount 10% of claim amount = release_state .balance_claim .mul(Decimal::percent(10)); - release_state.stage_expiration = HOUR.after(&env.block); + release_state.stage_expiration = DAY.after(&env.block); release_state.stage = Uint64::new(RELEASE_STAGES); } else { if release_state.stage_expiration.is_expired(&env.block) { @@ -284,7 +282,7 @@ pub fn execute_release( amount = release_state .balance_claim .mul(Decimal::from_ratio(1u128, release_state.stage)); - release_state.stage_expiration = HOUR.after(&env.block); + release_state.stage_expiration = DAY.after(&env.block); release_state.stage = release_state.stage.checked_sub(Uint64::new(1))?; } } else { diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index ee72f49..bb58151 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -14,8 +14,7 @@ use crate::state::{Config, CONFIG}; type Response = cosmwasm_std::Response; -// TODO set to constitution in production deployment -const CONSTITUTION: &str = "QmRX8qYgeZoYM3M5zzQaWEpVFdpin6FvVXvp6RPQK3oufV"; +const CONSTITUTION: &str = "QmcHB9GKHAKCLQhmSj71qNJhENJJg8Gymd1PvvsCQBhG7M"; pub const CYBERSPACE_ID_MSG: u64 = 420; pub fn execute_execute( From e70d8788087faa595342720bc2a3dec7f016d2cd Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 15:04:19 +0800 Subject: [PATCH 66/69] Added query for nickname, refactoring --- contracts/cw-cyber-gift/src/execute.rs | 1 - contracts/cw-cyber-gift/src/query.rs | 1 - contracts/cw-cyber-passport/src/contract.rs | 5 +++-- contracts/cw-cyber-passport/src/error.rs | 3 +++ contracts/cw-cyber-passport/src/helpers.rs | 14 ++++++++++---- contracts/cw-cyber-passport/src/msg.rs | 3 ++- contracts/cw-cyber-passport/src/query.rs | 8 +++++++- contracts/cw-cyber-passport/src/tests.rs | 8 ++++---- 8 files changed, 29 insertions(+), 14 deletions(-) diff --git a/contracts/cw-cyber-gift/src/execute.rs b/contracts/cw-cyber-gift/src/execute.rs index b17c216..a7daf66 100644 --- a/contracts/cw-cyber-gift/src/execute.rs +++ b/contracts/cw-cyber-gift/src/execute.rs @@ -192,7 +192,6 @@ pub fn execute_claim( let release_state = ReleaseState { address: Addr::unchecked(res.clone().address), balance_claim: claim_amount.checked_sub(Uint128::new(CLAIM_BOUNTY))?, - // balance_claim: claim_amount.checked_sub(Uint128::new(0))?, stage: Uint64::zero(), stage_expiration: Expiration::Never {}, }; diff --git a/contracts/cw-cyber-gift/src/query.rs b/contracts/cw-cyber-gift/src/query.rs index be8289c..4035133 100644 --- a/contracts/cw-cyber-gift/src/query.rs +++ b/contracts/cw-cyber-gift/src/query.rs @@ -1,6 +1,5 @@ use cosmwasm_std::{Deps, Order, StdResult, Uint64}; use cw_storage_plus::Bound; -// use test::RunIgnored::No; use crate::msg::{AllReleaseStageStateResponse, ClaimResponse, ConfigResponse, IsClaimedResponse, MerkleRootResponse, ReleaseStageStateResponse, ReleaseStateResponse, StateResponse}; use crate::state::{CLAIM, CONFIG, MERKLE_ROOT, RELEASE, RELEASE_INFO, STATE}; diff --git a/contracts/cw-cyber-passport/src/contract.rs b/contracts/cw-cyber-passport/src/contract.rs index e35c144..39f7f3e 100644 --- a/contracts/cw-cyber-passport/src/contract.rs +++ b/contracts/cw-cyber-passport/src/contract.rs @@ -8,7 +8,7 @@ use semver::Version; use crate::error::ContractError; use crate::execute::{execute_burn, execute_create_passport, execute_mint, execute_proof_address, execute_remove_address, execute_send_nft, execute_set_active, execute_set_owner, execute_set_subgraphs, execute_transfer_nft, execute_update_avatar, execute_update_name, CYBERSPACE_ID_MSG, execute_set_address_label, execute_update_data, execute_update_particle, execute_execute}; use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; -use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passport_signed, query_passport_by_nickname, query_portid}; +use crate::query::{query_active_passport, query_address_by_nickname, query_config, query_metadata_by_nickname, query_passport_signed, query_passport_by_nickname, query_last_portid, query_portid_by_nickname}; use crate::state::{Config, CONFIG, PassportContract, PORTID}; type Response = cosmwasm_std::Response; @@ -94,7 +94,8 @@ pub fn execute( pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { match msg { QueryMsg::Config {} => to_binary(&query_config(deps)?), - QueryMsg::Portid {} => to_binary(&query_portid(deps)?), + QueryMsg::LastPortid {} => to_binary(&query_last_portid(deps)?), + QueryMsg::PortidByNickname {nickname} => to_binary(&query_portid_by_nickname(deps, nickname)?), QueryMsg::AddressByNickname {nickname} => to_binary(&query_address_by_nickname(deps, nickname)?), QueryMsg::PassportByNickname {nickname} => to_binary(&query_passport_by_nickname(deps, nickname)?), QueryMsg::MetadataByNickname {nickname} => to_binary(&query_metadata_by_nickname(deps, nickname)?), diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index 10d8e22..fb1d98d 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -84,6 +84,9 @@ pub enum ContractError { #[error("Verification failed")] VerificationFailed { msg: String }, + #[error("Data parsing failed")] + ErrorDataParse { }, + // ----- // TODO check this overwrites of error messages diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 8eb2445..82bc6d3 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -122,6 +122,16 @@ pub fn proof_address_cosmos( message: String, signature: Binary, ) -> Result { + let prefix:String; + let b32 = bech32::decode(&address.clone()); + if b32.is_ok() { + prefix = b32.unwrap().0 + } else { return Err(ContractError::ErrorDataParse {})} + + let sig: CosmosSignature = from_binary(&signature)?; + + let address_sig = pub_key_to_address(&deps, &sig.pub_key, &prefix)?; + // ADR-36 signed object, need to construct this object part by part and add encoded signed data with signer // { // "account_number":"0", @@ -147,10 +157,6 @@ pub fn proof_address_cosmos( msg_adr36.append(&mut vec![34,125,125,93,44,34,115,101,113,117,101,110,99,101,34,58,34,48,34,125]); let hash = Sha256::digest(&msg_adr36); - let sig: CosmosSignature = from_binary(&signature).unwrap(); - - let (prefix, _, _) = bech32::decode(&address.clone()).unwrap(); - let address_sig = pub_key_to_address(&deps, &sig.pub_key, &prefix)?; if address != address_sig.to_string() { return Err(ContractError::Unauthorized {}) diff --git a/contracts/cw-cyber-passport/src/msg.rs b/contracts/cw-cyber-passport/src/msg.rs index d48f665..1ab91bf 100644 --- a/contracts/cw-cyber-passport/src/msg.rs +++ b/contracts/cw-cyber-passport/src/msg.rs @@ -169,7 +169,8 @@ impl From for CW721ExecuteMsg { #[serde(rename_all = "snake_case")] pub enum QueryMsg { Config {}, - Portid {}, + LastPortid {}, + PortidByNickname { nickname: String }, AddressByNickname { nickname: String }, PassportByNickname { nickname: String }, MetadataByNickname { nickname: String }, diff --git a/contracts/cw-cyber-passport/src/query.rs b/contracts/cw-cyber-passport/src/query.rs index 329b8af..9cbb853 100644 --- a/contracts/cw-cyber-passport/src/query.rs +++ b/contracts/cw-cyber-passport/src/query.rs @@ -22,6 +22,12 @@ pub fn query_metadata_by_nickname(deps: Deps, nickname: String) -> StdResult StdResult { + let address_portid = NICKNAMES.load(deps.storage, &nickname)?; + let portid = address_portid.portid.parse::().unwrap(); + Ok(PortidResponse { portid }) +} + pub fn query_passport_by_nickname(deps: Deps, nickname: String) -> StdResult> { let address_portid = NICKNAMES.load(deps.storage, &nickname)?; let cw721_contract = PassportContract::default(); @@ -36,7 +42,7 @@ pub fn query_address_by_nickname(deps: Deps, nickname: String) -> StdResult StdResult { +pub fn query_last_portid(deps: Deps) -> StdResult { let portid = PORTID.load(deps.storage)?; Ok(PortidResponse { portid: portid.into() }) } diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index 5af63bf..b0784b7 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -7,7 +7,7 @@ mod tests { use crate::state::{LabeledAddress, PassportMetadata}; use crate::contract::{execute, instantiate}; use crate::error::ContractError; - use crate::query::{query_active_passport, query_config, query_metadata_by_nickname, query_passport_by_nickname, query_portid}; + use crate::query::{query_active_passport, query_config, query_metadata_by_nickname, query_passport_by_nickname, query_last_portid, query_portid_by_nickname}; #[test] fn proper_flow() { @@ -45,21 +45,21 @@ mod tests { let expected_portid = PortidResponse { portid: 0u64 }; - assert_eq!(query_portid(deps.as_ref()).unwrap(), expected_portid); + assert_eq!(query_last_portid(deps.as_ref()).unwrap(), expected_portid); let create_passport_msg = ExecuteMsg::CreatePassport { nickname: "test-nickname".to_string(), avatar: "QmVPRR3i2oFRjgMKS5dw4QbGNwdXNoYxfcpS3C9pVxHEbb".to_string(), signature: Binary::from_base64("eyJwdWJfa2V5IjoiQStNWEZwN1llTE12b1ZsQVU2NlV1MHozV3RjOUN1d3EwZW9jVWh0Tk9tbnciLAoic2lnbmF0dXJlIjoicGRWNHhVY1RCT3loMFNFY2dWRnJxYUc4cXBOSHJocktLZGRxdzJ5d3Eyb2NVWGpybDNDdW8rZlRtUjR4bUpucGVIQi90blM4NEF2K0FuUnlRSlJ1S0E9PSJ9").unwrap(), }; - let info = mock_info(&citizen, &[]); execute(deps.as_mut(), mock_env(), info, create_passport_msg).unwrap(); let expected_portid = PortidResponse { portid: 1u64 }; - assert_eq!(query_portid(deps.as_ref()).unwrap(), expected_portid); + assert_eq!(query_last_portid(deps.as_ref()).unwrap(), expected_portid); + assert_eq!(query_portid_by_nickname(deps.as_ref(), "test-nickname".to_string()).unwrap(), PortidResponse{ portid: 1 }); let expected_passport_metadata = PassportMetadata { nickname: "test-nickname".to_string(), From b66be9f47850f1bc2838a991f2a3288ce7517143 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 16:14:24 +0800 Subject: [PATCH 67/69] Refactoring --- contracts/cw-cyber-passport/src/error.rs | 42 +++------------------- contracts/cw-cyber-passport/src/execute.rs | 4 +-- contracts/cw-cyber-passport/src/helpers.rs | 7 +++- contracts/cw-cyber-passport/src/tests.rs | 4 +-- 4 files changed, 14 insertions(+), 43 deletions(-) diff --git a/contracts/cw-cyber-passport/src/error.rs b/contracts/cw-cyber-passport/src/error.rs index fb1d98d..a9ad746 100644 --- a/contracts/cw-cyber-passport/src/error.rs +++ b/contracts/cw-cyber-passport/src/error.rs @@ -1,7 +1,7 @@ #[cfg(feature = "backtraces")] use std::backtrace::Backtrace; -use cosmwasm_std::{RecoverPubkeyError, StdError}; +use cosmwasm_std::{StdError}; use cw721_base::ContractError as CW721ContractError; use thiserror::Error; use cyber_std::particle::ParticleError; @@ -79,7 +79,7 @@ pub enum ContractError { TokenNotFound {}, #[error("Cannot add the address to the passport, {msg}")] - ErrAddAddress { msg: String }, + ErrorAddAddress { msg: String }, #[error("Verification failed")] VerificationFailed { msg: String }, @@ -87,25 +87,8 @@ pub enum ContractError { #[error("Data parsing failed")] ErrorDataParse { }, - // ----- - // TODO check this overwrites of error messages - - #[error("Invalid hash format")] - InvalidHashFormat, - - #[error("Invalid signature format")] - InvalidSignatureFormat, - - #[error("Invalid recovery parameter. Supported values: 0 and 1.")] - - InvalidRecoveryParam, - #[error("Unknown error: {error_code}")] - - UnknownErr { - error_code: u32, - #[cfg(feature = "backtraces")] - backtrace: Backtrace, - }, + #[error("Key recovery failed")] + ErrorKeyRecovery { }, } impl From for ContractError { @@ -130,23 +113,6 @@ impl From for ContractError { } } -impl From for ContractError { - fn from(msg: RecoverPubkeyError) -> ContractError { - match msg { - RecoverPubkeyError::InvalidHashFormat {} => ContractError::InvalidHashFormat{}, - RecoverPubkeyError::InvalidSignatureFormat {} => ContractError::InvalidHashFormat{}, - RecoverPubkeyError::InvalidRecoveryParam {} => ContractError::InvalidHashFormat{}, - RecoverPubkeyError::UnknownErr { - error_code, .. - } => ContractError::UnknownErr { - error_code, - #[cfg(feature = "backtraces")] - backtrace - }, - } - } -} - impl From for ContractError { fn from(err: semver::Error) -> Self { Self::SemVer(err.to_string()) diff --git a/contracts/cw-cyber-passport/src/execute.rs b/contracts/cw-cyber-passport/src/execute.rs index bb58151..40ee833 100644 --- a/contracts/cw-cyber-passport/src/execute.rs +++ b/contracts/cw-cyber-passport/src/execute.rs @@ -411,12 +411,12 @@ pub fn execute_proof_address( if token_info.extension.addresses.is_some() { let mut addresses = token_info.extension.addresses.unwrap(); if addresses.len() > 7 { - return Err(ContractError::ErrAddAddress { + return Err(ContractError::ErrorAddAddress { msg: "Too many addresses".to_string(), }); } if addresses.iter().position(|x| *x.address == address.clone()).is_some() { - return Err(ContractError::ErrAddAddress { + return Err(ContractError::ErrorAddAddress { msg: "Address already exist".to_string(), }); } diff --git a/contracts/cw-cyber-passport/src/helpers.rs b/contracts/cw-cyber-passport/src/helpers.rs index 82bc6d3..717ed6f 100644 --- a/contracts/cw-cyber-passport/src/helpers.rs +++ b/contracts/cw-cyber-passport/src/helpers.rs @@ -42,7 +42,12 @@ pub fn proof_address_ethereum( let recovery = get_recovery_param(*v)?; // Verification - let calculated_pubkey = deps.api.secp256k1_recover_pubkey(&hash, rs, recovery)?; + let calculated_pubkey:Vec; + let rcv_key = deps.api.secp256k1_recover_pubkey(&hash, rs, recovery); + if rcv_key.is_ok() { + calculated_pubkey = rcv_key.unwrap() + } else { return Err(ContractError::ErrorKeyRecovery {}) } + let calculated_address = ethereum_address_raw(&calculated_pubkey)?; let signer_address = decode_address(address.clone().as_str())?; if signer_address != calculated_address { diff --git a/contracts/cw-cyber-passport/src/tests.rs b/contracts/cw-cyber-passport/src/tests.rs index b0784b7..ff37657 100644 --- a/contracts/cw-cyber-passport/src/tests.rs +++ b/contracts/cw-cyber-passport/src/tests.rs @@ -175,7 +175,7 @@ mod tests { let info = mock_info(&citizen, &[]); let err = execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap_err(); - assert_eq!(err, ContractError::ErrAddAddress { msg: "Address already exist".to_string() }); + assert_eq!(err, ContractError::ErrorAddAddress { msg: "Address already exist".to_string() }); let proof_address_msg = ExecuteMsg::ProofAddress { nickname: "test-nickname-new".to_string(), @@ -186,7 +186,7 @@ mod tests { let info = mock_info(&citizen, &[]); let err = execute(deps.as_mut(), mock_env(), info, proof_address_msg).unwrap_err(); - assert_eq!(err, ContractError::ErrAddAddress { msg: "Address already exist".to_string() }); + assert_eq!(err, ContractError::ErrorAddAddress { msg: "Address already exist".to_string() }); // check that is available to delete proved addresses From b8ece60a38536aaa16d94f92c59ddc538753f0bb Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 16:30:02 +0800 Subject: [PATCH 68/69] Updated query schema for passport --- .../cw-cyber-passport/schema/query_msg.json | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/contracts/cw-cyber-passport/schema/query_msg.json b/contracts/cw-cyber-passport/schema/query_msg.json index 30cc414..46d867a 100644 --- a/contracts/cw-cyber-passport/schema/query_msg.json +++ b/contracts/cw-cyber-passport/schema/query_msg.json @@ -17,15 +17,35 @@ { "type": "object", "required": [ - "portid" + "last_portid" ], "properties": { - "portid": { + "last_portid": { "type": "object" } }, "additionalProperties": false }, + { + "type": "object", + "required": [ + "portid_by_nickname" + ], + "properties": { + "portid_by_nickname": { + "type": "object", + "required": [ + "nickname" + ], + "properties": { + "nickname": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ From e56e3df0d60267a601ff45140d6dbafaa4c37734 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Fri, 8 Jul 2022 16:37:14 +0800 Subject: [PATCH 69/69] Disabled stargate feature --- contracts/cw-cyber-gift/Cargo.toml | 2 +- contracts/cw-cyber-passport/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/cw-cyber-gift/Cargo.toml b/contracts/cw-cyber-gift/Cargo.toml index 61ab980..fc4a70e 100644 --- a/contracts/cw-cyber-gift/Cargo.toml +++ b/contracts/cw-cyber-gift/Cargo.toml @@ -30,7 +30,7 @@ cw0 = "0.10.3" cw2 = "0.13.4" cw20 = "0.13.4" cw1-subkeys = "0.13.4" -cosmwasm-std = { version = "1.0.0", features = ["staking","stargate"] } +cosmwasm-std = { version = "1.0.0", features = ["staking"] } cyber-std = { version = "0.2.1" } cw-utils = { version = "0.13.4" } cw-cyber-passport = { path = "../cw-cyber-passport", features = ["library"] } diff --git a/contracts/cw-cyber-passport/Cargo.toml b/contracts/cw-cyber-passport/Cargo.toml index e340dc4..7bc273c 100644 --- a/contracts/cw-cyber-passport/Cargo.toml +++ b/contracts/cw-cyber-passport/Cargo.toml @@ -25,7 +25,7 @@ backtraces = ["cosmwasm-std/backtraces"] library = [] [dependencies] -cosmwasm-std = { version = "1.0.0", features = ["staking","stargate"] } +cosmwasm-std = { version = "1.0.0", features = ["staking"] } cosmwasm-storage = { version = "1.0.0" } cw-storage-plus = "0.13.4" cw2 = "0.13.4"

I#8!3n!1mh<+F(xMz%m+E>5840AJXG7_UE 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