diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 150eb0c..abda814 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -12,6 +12,7 @@ jobs: runs-on: macos-latest env: ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }} + NOWNODES_API_KEY: ${{ secrets.NOWNODES_API_KEY }} steps: - name: Checkout repository diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index 97e4abd..9d65f8c 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -65,5 +65,3 @@ jobs: - name: Run Forge tests run: just contracts-test - env: - ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }} diff --git a/Cargo.lock b/Cargo.lock index 4acd347..d04c96b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1642,7 +1642,7 @@ dependencies = [ [[package]] name = "anoma-generic-call-forwarder-bindings" -version = "1.0.0-rc.6" +version = "1.0.0" dependencies = [ "alloy 2.1.0", "alloy-chains", @@ -1657,9 +1657,9 @@ dependencies = [ [[package]] name = "anoma-generic-call-library" -version = "1.0.0-rc.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a4d83b150f927e75c10a99fbedfe59127611d0f531fe696cc3f304f7196420e" +checksum = "5ea59bf3a83848b0fe2f1f34b0587752efce8fb35c518abfacd1995ad56c6445" dependencies = [ "anoma-generic-call-witness", "anoma-rm-risc0", @@ -1670,9 +1670,9 @@ dependencies = [ [[package]] name = "anoma-generic-call-witness" -version = "1.0.0-rc.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d9e4bf8698f18863d7aa381fed1e2e455d1dcaaa60c43524a01665952948ef" +checksum = "ef3e2cd88fa06fdb56f206ff4f2bca488ea13ddba496ae039a10c3f3b497d318" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -1734,9 +1734,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arbitrary" @@ -1749,9 +1749,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -2102,9 +2102,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "async-compression" @@ -2245,9 +2245,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" dependencies = [ "aws-lc-sys", "zeroize", @@ -2255,14 +2255,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -2864,9 +2865,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce8d3bd5823c7504d3f579f13e7b2f3da252fcb938c594d5680ee508bf846f" +checksum = "5f2d30e4173c4026932d51d31d6b0613b1fd3014bf3f9f8943d4ba139c437ba0" dependencies = [ "serde_core", ] @@ -3696,18 +3697,18 @@ dependencies = [ [[package]] name = "enum-ordinalize" -version = "4.3.2" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +checksum = "07f808d588c10e464ea6f7d3eaed500049eff30aaac103460f61828c2d65b3eb" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.2" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +checksum = "42e528e2d34ba8a67a1a650b86beae8ef69fc5fdb638016f386b973226590432" dependencies = [ "proc-macro2", "quote", @@ -4378,9 +4379,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hybrid-array" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" dependencies = [ "typenum", ] @@ -4792,9 +4793,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", @@ -4916,18 +4917,18 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "liblzma" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6033b77c21d1f56deeae8014eb9fbe7bdf1765185a6c508b5ca82eeaed7f899" +checksum = "45aec2360b3933207e27908049d8e4df4e476b58180afb1e56b2a4fb72efe4ba" dependencies = [ "liblzma-sys", ] [[package]] name = "liblzma-sys" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a60851d15cd8c5346eca4ab8babff585be2ae4bc8097c067291d3ffe2add3b6" +checksum = "a046c7f353ba30f810545151e04f63545833803f5b86ee3ddf1517247fe560a5" dependencies = [ "cc", "libc", @@ -4942,9 +4943,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ "libc", ] @@ -6037,9 +6038,9 @@ dependencies = [ [[package]] name = "rapidhash" -version = "4.4.1" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" +checksum = "32b266a82f4aa99bb5c25e28d11cc44ace63d91adbcbcee4d323e2ae3d49ef37" dependencies = [ "rustversion", ] @@ -6769,9 +6770,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "web-time", "zeroize", @@ -7512,9 +7513,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.51" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c17d80feb7334b40c484e45ed1a5273dfd8bfda537c3be2e74a06a6686f327" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" dependencies = [ "deranged", "num-conv", @@ -7532,9 +7533,9 @@ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.30" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcef1a61bdb119096e153208ec5cbec23944ce8bca13be5c7f60c634f7403935" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" dependencies = [ "num-conv", "time-core", @@ -8059,9 +8060,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.23.3" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "wasm-bindgen", @@ -8136,9 +8137,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -8149,9 +8150,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.75" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ "js-sys", "wasm-bindgen", @@ -8159,9 +8160,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8169,9 +8170,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -8182,9 +8183,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -8231,9 +8232,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.102" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index d57a929..82ef13b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ edition = "2024" [workspace.dependencies] alloy = { version = "2.0.5", features = ["full", "eip712", "node-bindings"] } alloy-chains = "0.2.33" -anoma-generic-call-library = "1.0.0-rc.0" +anoma-generic-call-library = "1.0.0" anoma-pa-evm-bindings = "2.3.0" dotenvy = "0.15.7" serde = { version = "1.0.228", default-features = false } diff --git a/bindings/Cargo.toml b/bindings/Cargo.toml index b1be818..ceb9a98 100644 --- a/bindings/Cargo.toml +++ b/bindings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anoma-generic-call-forwarder-bindings" -version = "1.0.0-rc.6" +version = "1.0.0" description = "The generic call forwarder contract bindings and deployments." keywords.workspace = true authors.workspace = true diff --git a/bindings/deployments.json b/bindings/deployments.json index 09208be..3e823e1 100644 --- a/bindings/deployments.json +++ b/bindings/deployments.json @@ -1,10 +1,46 @@ [ { - "chainId": 8453, - "contractAddress": "0x448A6026A836E74feF84Ad971e65ded2e0211b51" + "chainId": 11155111, + "contractAddress": "0x4464b1C0d441C99BdC37a30b1f0d7D4e06927139" + }, + { + "chainId": 1, + "contractAddress": "0x4220bcB4A9c755aeE676c675cCc8a113e2A48274" }, { "chainId": 84532, - "contractAddress": "0x448A6026A836E74feF84Ad971e65ded2e0211b51" + "contractAddress": "0x24843B8F3F5eC2D557217148d6d4E2108497C404" + }, + { + "chainId": 8453, + "contractAddress": "0x24843B8F3F5eC2D557217148d6d4E2108497C404" + }, + { + "chainId": 10, + "contractAddress": "0x24843B8F3F5eC2D557217148d6d4E2108497C404" + }, + { + "chainId": 42161, + "contractAddress": "0x24843B8F3F5eC2D557217148d6d4E2108497C404" + }, + { + "chainId": 56, + "contractAddress": "0xee4b283fA62AE445DcfDf9a34a7569a8Bc6Ba7D5" + }, + { + "chainId": 143, + "contractAddress": "0x354Cd903169af664E03AFDD07df7E8913d48F064" + }, + { + "chainId": 988, + "contractAddress": "0x354Cd903169af664E03AFDD07df7E8913d48F064" + }, + { + "chainId": 4326, + "contractAddress": "0x354Cd903169af664E03AFDD07df7E8913d48F064" + }, + { + "chainId": 1313161554, + "contractAddress": "0x354Cd903169af664E03AFDD07df7E8913d48F064" } ] diff --git a/bindings/src/generated/generic_call_forwarder.rs b/bindings/src/generated/generic_call_forwarder.rs index cbaacd1..37574c8 100644 --- a/bindings/src/generated/generic_call_forwarder.rs +++ b/bindings/src/generated/generic_call_forwarder.rs @@ -21,6 +21,7 @@ interface GenericCallForwarder { error UnregisteredSelector(bytes4 selector); error ZeroLogicRefNotAllowed(); error ZeroProtocolAdapterNotAllowed(); + error ZeroRecipientNotAllowed(); event Executed(Call[] calls, bytes[] execResults); event FallbackHandled(address indexed sender, bytes4 indexed selector, bytes data); @@ -440,6 +441,11 @@ interface GenericCallForwarder { "type": "error", "name": "ZeroProtocolAdapterNotAllowed", "inputs": [] + }, + { + "type": "error", + "name": "ZeroRecipientNotAllowed", + "inputs": [] } ] ```*/ @@ -456,22 +462,22 @@ pub mod GenericCallForwarder { /// The creation / init bytecode of the contract. /// /// ```text - ///0x60e06040523461018357604051601f61102b38819003918201601f19168301916001600160401b038311848410176101515780849260409485528339810103126101835780516001600160a01b03811691828203610183576020015191156101745781156101655760805260a052604051606081016001600160401b03811182821017610151576040908152602782527f616e6f6d612e7472616e7369656e742e73656c6563746f7273546f4d616769636020830152664e756d6265727360c81b918101919091527f93628be762de549f956c268e4d472e33a4b7409276be2b7221bbe3a32df529be5f527faf9e352fdadaaf3b4a499b250a8d882d62ebdf001bf445271cf2d2b998b11b0060c05251610ea39081610188823960805181818161047b0152610510015260a0518181816101d9015261053a015260c0518181816044015281816103fc0152610b0a0152f35b634e487b7160e01b5f52604160045260245ffd5b637af6234160e01b5f5260045ffd5b635f69f90160e11b5f5260045ffd5b5f80fdfe608080604052600436101561015e575b503615610130573461012c577fffffffff000000000000000000000000000000000000000000000000000000005f3516805f527f00000000000000000000000000000000000000000000000000000000000000006020527fffffffff0000000000000000000000000000000000000000000000000000000060405f205c169081156101015760405160208152366020820152365f60408301375f604036830101527ff3e2cf3756f778617a91a49fad5461da98ed05fd4255486327ba937aa2e3af693391604081601f19601f3601168101030190a360405160208101918252602081526100fd604082610c7a565b5190f35b7ff3aee633000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b5f80fd5b6040513481527f9820dd13494dd7d9f03807aa0bb724fe8266855b5ac4db99848a199904f8074b60203392a2005b5f3560e01c9081630d8e6e2c14610b9a575080631626ba7e14610b5f5780632c060ad814610a9657806333a892031461049f5780633db8418c1461044f5780634cdd4e9c146103bd578063b8dc491b146101fc5763cbad00e5146101c2575f61000f565b3461012c575f60031936011261012c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012c57604060031936011261012c5760043573ffffffffffffffffffffffffffffffffffffffff811680910361012c5760243573ffffffffffffffffffffffffffffffffffffffff811680910361012c5781610295579060209147916102648383610cf6565b7f7b09c29f9106defeccc9ac3b823f3aad0b470d120e5df7aed033b5c43a4bf71884604051858152a3604051908152f35b604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa9182156103b2575f9261037e575b5081604051907fa9059cbb000000000000000000000000000000000000000000000000000000005f528260045260245260205f60448180885af19060015f511482161561035d575b6040521561033157602092610264565b827f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661037557843b15153d15161690610321565b503d5f823e3d90fd5b9091506020813d6020116103aa575b8161039a60209383610c7a565b8101031261012c575190836102d9565b3d915061038d565b6040513d5f823e3d90fd5b3461012c57602060031936011261012c577fffffffff000000000000000000000000000000000000000000000000000000006103f7610c26565b165f527f000000000000000000000000000000000000000000000000000000000000000060205260207fffffffff0000000000000000000000000000000000000000000000000000000060405f205c16604051908152f35b3461012c575f60031936011261012c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461012c576104ad36610bd2565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c610a6e5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303610a3f57507f0000000000000000000000000000000000000000000000000000000000000000818103610a1157505081019060208183031261012c5780359067ffffffffffffffff821161012c570181601f8201121561012c5780359161059983610c9d565b916105a76040519384610c7a565b838352602083016020819560051b8301019183831161012c5760208101915b8383106108f757855186886105da83610c9d565b926105e86040519485610c7a565b808452601f196105f782610c9d565b015f5b8181106108e65750505f5b8181106107825750506040519160408301906040845251809152606083019060608160051b85010192915f905b82821061070857505050508181036020830152825180825260208201916020808360051b8301019501925f915b8383106106db577f3109d4a2f155542cb12ec026e6ab03674e7a91dd75eaee26c781420b4ab4473b86880387a16106d760405161069d602082610c7a565b5f81525f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190610c55565b0390f35b90919293956020806106f983601f1986600196030187528a51610c55565b9801930193019193929061065f565b90919293602080610774837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a60019603018652606060408a5173ffffffffffffffffffffffffffffffffffffffff815116845285810151868501520151918160408201520190610c55565b960192019201909291610632565b604061078e8286610cb5565b5101515115610868578060206107a660019387610cb5565b510151610804576107e773ffffffffffffffffffffffffffffffffffffffff6107cf8388610cb5565b51511660406107de8489610cb5565b51015190610d9b565b6107f18288610cb5565b526107fc8187610cb5565b505b01610605565b61084d73ffffffffffffffffffffffffffffffffffffffff6108268388610cb5565b51511660406108358489610cb5565b5101516020610844858a610cb5565b51015191610e2a565b6108578288610cb5565b526108628187610cb5565b506107fe565b60206108748286610cb5565b510151156108be57806108b973ffffffffffffffffffffffffffffffffffffffff6108a160019488610cb5565b51511660206108b08489610cb5565b51015190610cf6565b6107fe565b7f029ef196000000000000000000000000000000000000000000000000000000005f5260045ffd5b8060606020809389010152016105fa565b823567ffffffffffffffff811161012c578201906060601f19838803011261012c57604051916060830183811067ffffffffffffffff8211176109e457604052602081013573ffffffffffffffffffffffffffffffffffffffff8116810361012c57835260408101356020840152606081013567ffffffffffffffff811161012c5760209101019086601f8301121561012c5781359267ffffffffffffffff84116109e4576040516109b3601f8601601f191660200182610c7a565b848152886020868601011161012c575f602086819782809801838601378301015260408201528152019201916105c6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f18f639d8000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7f044a49eb000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461012c57604060031936011261012c57610aaf610c26565b602435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012c57303303610b33577fffffffff00000000000000000000000000000000000000000000000000000000165f527f000000000000000000000000000000000000000000000000000000000000000060205260405f205d005b7f9e4c3fed000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b3461012c57610b6d36610bd2565b50505060206040517f1626ba7e000000000000000000000000000000000000000000000000000000008152f35b3461012c575f60031936011261012c57807f312e302e302d72632e320000000000000000000000000000000000000000000060209252f35b604060031982011261012c576004359160243567ffffffffffffffff811161012c578260238201121561012c5780600401359267ffffffffffffffff841161012c576024848301011161012c576024019190565b600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361012c57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b90601f601f19910116810190811067ffffffffffffffff8211176109e457604052565b67ffffffffffffffff81116109e45760051b60200190565b8051821015610cc95760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b814710610d6b575f80809373ffffffffffffffffffffffffffffffffffffffff829483604051610d27602082610c7a565b52165af115610d3257565b3d15610d43576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b905f809160208151910182855af18080610e17575b15610dd05750506040513d81523d5f602083013e60203d82010160405290565b15610d325773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b503d151580610db05750813b1515610db0565b91804710610e6757815f92916020849351920190855af18080610e175715610dd05750506040513d81523d5f602083013e60203d82010160405290565b477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffdfea164736f6c6343000823000a + ///0x60e06040523461018357604051601f61105938819003918201601f19168301916001600160401b038311848410176101515780849260409485528339810103126101835780516001600160a01b03811691828203610183576020015191156101745781156101655760805260a052604051606081016001600160401b03811182821017610151576040908152602782527f616e6f6d612e7472616e7369656e742e73656c6563746f7273546f4d616769636020830152664e756d6265727360c81b918101919091527f93628be762de549f956c268e4d472e33a4b7409276be2b7221bbe3a32df529be5f527faf9e352fdadaaf3b4a499b250a8d882d62ebdf001bf445271cf2d2b998b11b0060c05251610ed1908161018882396080518181816104a9015261053e015260a0518181816101d90152610568015260c05181818160440152818161042a0152610b380152f35b634e487b7160e01b5f52604160045260245ffd5b637af6234160e01b5f5260045ffd5b635f69f90160e11b5f5260045ffd5b5f80fdfe608080604052600436101561015e575b503615610130573461012c577fffffffff000000000000000000000000000000000000000000000000000000005f3516805f527f00000000000000000000000000000000000000000000000000000000000000006020527fffffffff0000000000000000000000000000000000000000000000000000000060405f205c169081156101015760405160208152366020820152365f60408301375f604036830101527ff3e2cf3756f778617a91a49fad5461da98ed05fd4255486327ba937aa2e3af693391604081601f19601f3601168101030190a360405160208101918252602081526100fd604082610ca8565b5190f35b7ff3aee633000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b5f80fd5b6040513481527f9820dd13494dd7d9f03807aa0bb724fe8266855b5ac4db99848a199904f8074b60203392a2005b5f3560e01c9081630d8e6e2c14610bc8575080631626ba7e14610b8d5780632c060ad814610ac457806333a89203146104cd5780633db8418c1461047d5780634cdd4e9c146103eb578063b8dc491b146101fc5763cbad00e5146101c2575f61000f565b3461012c575f60031936011261012c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012c57604060031936011261012c5760043573ffffffffffffffffffffffffffffffffffffffff811680910361012c5760243573ffffffffffffffffffffffffffffffffffffffff811680910361012c5780156103c3578161029b5790602091479161026a8383610d24565b7f7b09c29f9106defeccc9ac3b823f3aad0b470d120e5df7aed033b5c43a4bf71884604051858152a3604051908152f35b604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa9182156103b8575f92610384575b5081604051907fa9059cbb000000000000000000000000000000000000000000000000000000005f528260045260245260205f60448180885af19060015f5114821615610363575b604052156103375760209261026a565b827f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661037b57843b15153d15161690610327565b503d5f823e3d90fd5b9091506020813d6020116103b0575b816103a060209383610ca8565b8101031261012c575190836102df565b3d9150610393565b6040513d5f823e3d90fd5b7fe3ce2ed9000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461012c57602060031936011261012c577fffffffff00000000000000000000000000000000000000000000000000000000610425610c54565b165f527f000000000000000000000000000000000000000000000000000000000000000060205260207fffffffff0000000000000000000000000000000000000000000000000000000060405f205c16604051908152f35b3461012c575f60031936011261012c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461012c576104db36610c00565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c610a9c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303610a6d57507f0000000000000000000000000000000000000000000000000000000000000000818103610a3f57505081019060208183031261012c5780359067ffffffffffffffff821161012c570181601f8201121561012c578035916105c783610ccb565b916105d56040519384610ca8565b838352602083016020819560051b8301019183831161012c5760208101915b838310610925578551868861060883610ccb565b926106166040519485610ca8565b808452601f1961062582610ccb565b015f5b8181106109145750505f5b8181106107b05750506040519160408301906040845251809152606083019060608160051b85010192915f905b82821061073657505050508181036020830152825180825260208201916020808360051b8301019501925f915b838310610709577f3109d4a2f155542cb12ec026e6ab03674e7a91dd75eaee26c781420b4ab4473b86880387a16107056040516106cb602082610ca8565b5f81525f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190610c83565b0390f35b909192939560208061072783601f1986600196030187528a51610c83565b9801930193019193929061068d565b909192936020806107a2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a60019603018652606060408a5173ffffffffffffffffffffffffffffffffffffffff815116845285810151868501520151918160408201520190610c83565b960192019201909291610660565b60406107bc8286610ce3565b5101515115610896578060206107d460019387610ce3565b5101516108325761081573ffffffffffffffffffffffffffffffffffffffff6107fd8388610ce3565b515116604061080c8489610ce3565b51015190610dc9565b61081f8288610ce3565b5261082a8187610ce3565b505b01610633565b61087b73ffffffffffffffffffffffffffffffffffffffff6108548388610ce3565b51511660406108638489610ce3565b5101516020610872858a610ce3565b51015191610e58565b6108858288610ce3565b526108908187610ce3565b5061082c565b60206108a28286610ce3565b510151156108ec57806108e773ffffffffffffffffffffffffffffffffffffffff6108cf60019488610ce3565b51511660206108de8489610ce3565b51015190610d24565b61082c565b7f029ef196000000000000000000000000000000000000000000000000000000005f5260045ffd5b806060602080938901015201610628565b823567ffffffffffffffff811161012c578201906060601f19838803011261012c57604051916060830183811067ffffffffffffffff821117610a1257604052602081013573ffffffffffffffffffffffffffffffffffffffff8116810361012c57835260408101356020840152606081013567ffffffffffffffff811161012c5760209101019086601f8301121561012c5781359267ffffffffffffffff8411610a12576040516109e1601f8601601f191660200182610ca8565b848152886020868601011161012c575f602086819782809801838601378301015260408201528152019201916105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f18f639d8000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7f044a49eb000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461012c57604060031936011261012c57610add610c54565b602435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012c57303303610b61577fffffffff00000000000000000000000000000000000000000000000000000000165f527f000000000000000000000000000000000000000000000000000000000000000060205260405f205d005b7f9e4c3fed000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b3461012c57610b9b36610c00565b50505060206040517f1626ba7e000000000000000000000000000000000000000000000000000000008152f35b3461012c575f60031936011261012c57807f312e302e3000000000000000000000000000000000000000000000000000000060209252f35b604060031982011261012c576004359160243567ffffffffffffffff811161012c578260238201121561012c5780600401359267ffffffffffffffff841161012c576024848301011161012c576024019190565b600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361012c57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b90601f601f19910116810190811067ffffffffffffffff821117610a1257604052565b67ffffffffffffffff8111610a125760051b60200190565b8051821015610cf75760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b814710610d99575f80809373ffffffffffffffffffffffffffffffffffffffff829483604051610d55602082610ca8565b52165af115610d6057565b3d15610d71576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b905f809160208151910182855af18080610e45575b15610dfe5750506040513d81523d5f602083013e60203d82010160405290565b15610d605773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b503d151580610dde5750813b1515610dde565b91804710610e9557815f92916020849351920190855af18080610e455715610dfe5750506040513d81523d5f602083013e60203d82010160405290565b477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffdfea164736f6c6343000823000a /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xE0`@R4a\x01\x83W`@Q`\x1Fa\x10+8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\x01QW\x80\x84\x92`@\x94\x85R\x839\x81\x01\x03\x12a\x01\x83W\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x91\x82\x82\x03a\x01\x83W` \x01Q\x91\x15a\x01tW\x81\x15a\x01eW`\x80R`\xA0R`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x01QW`@\x90\x81R`'\x82R\x7Fanoma.transient.selectorsToMagic` \x83\x01RfNumbers`\xC8\x1B\x91\x81\x01\x91\x90\x91R\x7F\x93b\x8B\xE7b\xDET\x9F\x95l&\x8EMG.3\xA4\xB7@\x92v\xBE+r!\xBB\xE3\xA3-\xF5)\xBE_R\x7F\xAF\x9E5/\xDA\xDA\xAF;JI\x9B%\n\x8D\x88-b\xEB\xDF\0\x1B\xF4E'\x1C\xF2\xD2\xB9\x98\xB1\x1B\0`\xC0RQa\x0E\xA3\x90\x81a\x01\x88\x829`\x80Q\x81\x81\x81a\x04{\x01Ra\x05\x10\x01R`\xA0Q\x81\x81\x81a\x01\xD9\x01Ra\x05:\x01R`\xC0Q\x81\x81\x81`D\x01R\x81\x81a\x03\xFC\x01Ra\x0B\n\x01R\xF3[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cz\xF6#A`\xE0\x1B_R`\x04_\xFD[c_i\xF9\x01`\xE1\x1B_R`\x04_\xFD[_\x80\xFD\xFE`\x80\x80`@R`\x046\x10\x15a\x01^W[P6\x15a\x010W4a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_5\x16\x80_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16\x90\x81\x15a\x01\x01W`@Q` \x81R6` \x82\x01R6_`@\x83\x017_`@6\x83\x01\x01R\x7F\xF3\xE2\xCF7V\xF7xaz\x91\xA4\x9F\xADTa\xDA\x98\xED\x05\xFDBUHc'\xBA\x93z\xA2\xE3\xAFi3\x91`@\x81`\x1F\x19`\x1F6\x01\x16\x81\x01\x03\x01\x90\xA3`@Q` \x81\x01\x91\x82R` \x81Ra\0\xFD`@\x82a\x0CzV[Q\x90\xF3[\x7F\xF3\xAE\xE63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[_\x80\xFD[`@Q4\x81R\x7F\x98 \xDD\x13IM\xD7\xD9\xF08\x07\xAA\x0B\xB7$\xFE\x82f\x85[Z\xC4\xDB\x99\x84\x8A\x19\x99\x04\xF8\x07K` 3\x92\xA2\0[_5`\xE0\x1C\x90\x81c\r\x8En,\x14a\x0B\x9AWP\x80c\x16&\xBA~\x14a\x0B_W\x80c,\x06\n\xD8\x14a\n\x96W\x80c3\xA8\x92\x03\x14a\x04\x9FW\x80c=\xB8A\x8C\x14a\x04OW\x80cL\xDDN\x9C\x14a\x03\xBDW\x80c\xB8\xDCI\x1B\x14a\x01\xFCWc\xCB\xAD\0\xE5\x14a\x01\xC2W_a\0\x0FV[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W`@`\x03\x196\x01\x12a\x01,W`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W`$5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W\x81a\x02\x95W\x90` \x91G\x91a\x02d\x83\x83a\x0C\xF6V[\x7F{\t\xC2\x9F\x91\x06\xDE\xFE\xCC\xC9\xAC;\x82?:\xAD\x0BG\r\x12\x0E]\xF7\xAE\xD03\xB5\xC4:K\xF7\x18\x84`@Q\x85\x81R\xA3`@Q\x90\x81R\xF3[`@Q\x90\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R0`\x04\x83\x01R` \x82`$\x81\x86Z\xFA\x91\x82\x15a\x03\xB2W_\x92a\x03~W[P\x81`@Q\x90\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x82`\x04R`$R` _`D\x81\x80\x88Z\xF1\x90`\x01_Q\x14\x82\x16\x15a\x03]W[`@R\x15a\x031W` \x92a\x02dV[\x82\x7FRt\xAF\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[\x90`\x01\x81\x15\x16a\x03uW\x84;\x15\x15=\x15\x16\x16\x90a\x03!V[P=_\x82>=\x90\xFD[\x90\x91P` \x81=` \x11a\x03\xAAW[\x81a\x03\x9A` \x93\x83a\x0CzV[\x81\x01\x03\x12a\x01,WQ\x90\x83a\x02\xD9V[=\x91Pa\x03\x8DV[`@Q=_\x82>=\x90\xFD[4a\x01,W` `\x03\x196\x01\x12a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xF7a\x0C&V[\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R` \x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16`@Q\x90\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x01,Wa\x04\xAD6a\x0B\xD2V[\x90\x91\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\\a\nnW`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x803\x03a\n?WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x81\x03a\n\x11WPP\x81\x01\x90` \x81\x83\x03\x12a\x01,W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01,W\x01\x81`\x1F\x82\x01\x12\x15a\x01,W\x805\x91a\x05\x99\x83a\x0C\x9DV[\x91a\x05\xA7`@Q\x93\x84a\x0CzV[\x83\x83R` \x83\x01` \x81\x95`\x05\x1B\x83\x01\x01\x91\x83\x83\x11a\x01,W` \x81\x01\x91[\x83\x83\x10a\x08\xF7W\x85Q\x86\x88a\x05\xDA\x83a\x0C\x9DV[\x92a\x05\xE8`@Q\x94\x85a\x0CzV[\x80\x84R`\x1F\x19a\x05\xF7\x82a\x0C\x9DV[\x01_[\x81\x81\x10a\x08\xE6WPP_[\x81\x81\x10a\x07\x82WPP`@Q\x91`@\x83\x01\x90`@\x84RQ\x80\x91R``\x83\x01\x90``\x81`\x05\x1B\x85\x01\x01\x92\x91_\x90[\x82\x82\x10a\x07\x08WPPPP\x81\x81\x03` \x83\x01R\x82Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x95\x01\x92_\x91[\x83\x83\x10a\x06\xDBW\x7F1\t\xD4\xA2\xF1UT,\xB1.\xC0&\xE6\xAB\x03gNz\x91\xDDu\xEA\xEE&\xC7\x81B\x0BJ\xB4G;\x86\x88\x03\x87\xA1a\x06\xD7`@Qa\x06\x9D` \x82a\x0CzV[_\x81R_\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x0CUV[\x03\x90\xF3[\x90\x91\x92\x93\x95` \x80a\x06\xF9\x83`\x1F\x19\x86`\x01\x96\x03\x01\x87R\x8AQa\x0CUV[\x98\x01\x93\x01\x93\x01\x91\x93\x92\x90a\x06_V[\x90\x91\x92\x93` \x80a\x07t\x83\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x8A`\x01\x96\x03\x01\x86R```@\x8AQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x91\x81`@\x82\x01R\x01\x90a\x0CUV[\x96\x01\x92\x01\x92\x01\x90\x92\x91a\x062V[`@a\x07\x8E\x82\x86a\x0C\xB5V[Q\x01QQ\x15a\x08hW\x80` a\x07\xA6`\x01\x93\x87a\x0C\xB5V[Q\x01Qa\x08\x04Wa\x07\xE7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x07\xCF\x83\x88a\x0C\xB5V[QQ\x16`@a\x07\xDE\x84\x89a\x0C\xB5V[Q\x01Q\x90a\r\x9BV[a\x07\xF1\x82\x88a\x0C\xB5V[Ra\x07\xFC\x81\x87a\x0C\xB5V[P[\x01a\x06\x05V[a\x08Ms\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08&\x83\x88a\x0C\xB5V[QQ\x16`@a\x085\x84\x89a\x0C\xB5V[Q\x01Q` a\x08D\x85\x8Aa\x0C\xB5V[Q\x01Q\x91a\x0E*V[a\x08W\x82\x88a\x0C\xB5V[Ra\x08b\x81\x87a\x0C\xB5V[Pa\x07\xFEV[` a\x08t\x82\x86a\x0C\xB5V[Q\x01Q\x15a\x08\xBEW\x80a\x08\xB9s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08\xA1`\x01\x94\x88a\x0C\xB5V[QQ\x16` a\x08\xB0\x84\x89a\x0C\xB5V[Q\x01Q\x90a\x0C\xF6V[a\x07\xFEV[\x7F\x02\x9E\xF1\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[\x80``` \x80\x93\x89\x01\x01R\x01a\x05\xFAV[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82\x01\x90```\x1F\x19\x83\x88\x03\x01\x12a\x01,W`@Q\x91``\x83\x01\x83\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\t\xE4W`@R` \x81\x015s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01,W\x83R`@\x81\x015` \x84\x01R``\x81\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W` \x91\x01\x01\x90\x86`\x1F\x83\x01\x12\x15a\x01,W\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\t\xE4W`@Qa\t\xB3`\x1F\x86\x01`\x1F\x19\x16` \x01\x82a\x0CzV[\x84\x81R\x88` \x86\x86\x01\x01\x11a\x01,W_` \x86\x81\x97\x82\x80\x98\x01\x83\x86\x017\x83\x01\x01R`@\x82\x01R\x81R\x01\x92\x01\x91a\x05\xC6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7F\x18\xF69\xD8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x7F\x04JI\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R3`$R`D_\xFD[\x7F>\xE5\xAE\xB5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01,W`@`\x03\x196\x01\x12a\x01,Wa\n\xAFa\x0C&V[`$5\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x80\x92\x03a\x01,W03\x03a\x0B3W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R`@_ ]\0[\x7F\x9EL?\xED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R`$_\xFD[4a\x01,Wa\x0Bm6a\x0B\xD2V[PPP` `@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W\x80\x7F1.0.0-rc.2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x92R\xF3[`@`\x03\x19\x82\x01\x12a\x01,W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82`#\x82\x01\x12\x15a\x01,W\x80`\x04\x015\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\x01,W`$\x84\x83\x01\x01\x11a\x01,W`$\x01\x91\x90V[`\x045\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\x01,WV[\x90`\x1F\x19`\x1F` \x80\x94\x80Q\x91\x82\x91\x82\x87R\x01\x86\x86\x01^_\x85\x82\x86\x01\x01R\x01\x16\x01\x01\x90V[\x90`\x1F`\x1F\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\t\xE4W`@RV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\t\xE4W`\x05\x1B` \x01\x90V[\x80Q\x82\x10\x15a\x0C\xC9W` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x81G\x10a\rkW_\x80\x80\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x94\x83`@Qa\r'` \x82a\x0CzV[R\x16Z\xF1\x15a\r2WV[=\x15a\rCW`@Q=_\x82>=\x90\xFD[\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[PG\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x90_\x80\x91` \x81Q\x91\x01\x82\x85Z\xF1\x80\x80a\x0E\x17W[\x15a\r\xD0WPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[\x15a\r2Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x16`\x04R`$_\xFD[P=\x15\x15\x80a\r\xB0WP\x81;\x15\x15a\r\xB0V[\x91\x80G\x10a\x0EgW\x81_\x92\x91` \x84\x93Q\x92\x01\x90\x85Z\xF1\x80\x80a\x0E\x17W\x15a\r\xD0WPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[G\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD\xFE\xA1dsolcC\0\x08#\0\n", + b"`\xE0`@R4a\x01\x83W`@Q`\x1Fa\x10Y8\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\x01QW\x80\x84\x92`@\x94\x85R\x839\x81\x01\x03\x12a\x01\x83W\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x91\x82\x82\x03a\x01\x83W` \x01Q\x91\x15a\x01tW\x81\x15a\x01eW`\x80R`\xA0R`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x01QW`@\x90\x81R`'\x82R\x7Fanoma.transient.selectorsToMagic` \x83\x01RfNumbers`\xC8\x1B\x91\x81\x01\x91\x90\x91R\x7F\x93b\x8B\xE7b\xDET\x9F\x95l&\x8EMG.3\xA4\xB7@\x92v\xBE+r!\xBB\xE3\xA3-\xF5)\xBE_R\x7F\xAF\x9E5/\xDA\xDA\xAF;JI\x9B%\n\x8D\x88-b\xEB\xDF\0\x1B\xF4E'\x1C\xF2\xD2\xB9\x98\xB1\x1B\0`\xC0RQa\x0E\xD1\x90\x81a\x01\x88\x829`\x80Q\x81\x81\x81a\x04\xA9\x01Ra\x05>\x01R`\xA0Q\x81\x81\x81a\x01\xD9\x01Ra\x05h\x01R`\xC0Q\x81\x81\x81`D\x01R\x81\x81a\x04*\x01Ra\x0B8\x01R\xF3[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cz\xF6#A`\xE0\x1B_R`\x04_\xFD[c_i\xF9\x01`\xE1\x1B_R`\x04_\xFD[_\x80\xFD\xFE`\x80\x80`@R`\x046\x10\x15a\x01^W[P6\x15a\x010W4a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_5\x16\x80_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16\x90\x81\x15a\x01\x01W`@Q` \x81R6` \x82\x01R6_`@\x83\x017_`@6\x83\x01\x01R\x7F\xF3\xE2\xCF7V\xF7xaz\x91\xA4\x9F\xADTa\xDA\x98\xED\x05\xFDBUHc'\xBA\x93z\xA2\xE3\xAFi3\x91`@\x81`\x1F\x19`\x1F6\x01\x16\x81\x01\x03\x01\x90\xA3`@Q` \x81\x01\x91\x82R` \x81Ra\0\xFD`@\x82a\x0C\xA8V[Q\x90\xF3[\x7F\xF3\xAE\xE63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[_\x80\xFD[`@Q4\x81R\x7F\x98 \xDD\x13IM\xD7\xD9\xF08\x07\xAA\x0B\xB7$\xFE\x82f\x85[Z\xC4\xDB\x99\x84\x8A\x19\x99\x04\xF8\x07K` 3\x92\xA2\0[_5`\xE0\x1C\x90\x81c\r\x8En,\x14a\x0B\xC8WP\x80c\x16&\xBA~\x14a\x0B\x8DW\x80c,\x06\n\xD8\x14a\n\xC4W\x80c3\xA8\x92\x03\x14a\x04\xCDW\x80c=\xB8A\x8C\x14a\x04}W\x80cL\xDDN\x9C\x14a\x03\xEBW\x80c\xB8\xDCI\x1B\x14a\x01\xFCWc\xCB\xAD\0\xE5\x14a\x01\xC2W_a\0\x0FV[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W`@`\x03\x196\x01\x12a\x01,W`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W`$5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W\x80\x15a\x03\xC3W\x81a\x02\x9BW\x90` \x91G\x91a\x02j\x83\x83a\r$V[\x7F{\t\xC2\x9F\x91\x06\xDE\xFE\xCC\xC9\xAC;\x82?:\xAD\x0BG\r\x12\x0E]\xF7\xAE\xD03\xB5\xC4:K\xF7\x18\x84`@Q\x85\x81R\xA3`@Q\x90\x81R\xF3[`@Q\x90\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R0`\x04\x83\x01R` \x82`$\x81\x86Z\xFA\x91\x82\x15a\x03\xB8W_\x92a\x03\x84W[P\x81`@Q\x90\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x82`\x04R`$R` _`D\x81\x80\x88Z\xF1\x90`\x01_Q\x14\x82\x16\x15a\x03cW[`@R\x15a\x037W` \x92a\x02jV[\x82\x7FRt\xAF\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[\x90`\x01\x81\x15\x16a\x03{W\x84;\x15\x15=\x15\x16\x16\x90a\x03'V[P=_\x82>=\x90\xFD[\x90\x91P` \x81=` \x11a\x03\xB0W[\x81a\x03\xA0` \x93\x83a\x0C\xA8V[\x81\x01\x03\x12a\x01,WQ\x90\x83a\x02\xDFV[=\x91Pa\x03\x93V[`@Q=_\x82>=\x90\xFD[\x7F\xE3\xCE.\xD9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01,W` `\x03\x196\x01\x12a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x04%a\x0CTV[\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R` \x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16`@Q\x90\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x01,Wa\x04\xDB6a\x0C\0V[\x90\x91\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\\a\n\x9CW`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x803\x03a\nmWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x81\x03a\n?WPP\x81\x01\x90` \x81\x83\x03\x12a\x01,W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01,W\x01\x81`\x1F\x82\x01\x12\x15a\x01,W\x805\x91a\x05\xC7\x83a\x0C\xCBV[\x91a\x05\xD5`@Q\x93\x84a\x0C\xA8V[\x83\x83R` \x83\x01` \x81\x95`\x05\x1B\x83\x01\x01\x91\x83\x83\x11a\x01,W` \x81\x01\x91[\x83\x83\x10a\t%W\x85Q\x86\x88a\x06\x08\x83a\x0C\xCBV[\x92a\x06\x16`@Q\x94\x85a\x0C\xA8V[\x80\x84R`\x1F\x19a\x06%\x82a\x0C\xCBV[\x01_[\x81\x81\x10a\t\x14WPP_[\x81\x81\x10a\x07\xB0WPP`@Q\x91`@\x83\x01\x90`@\x84RQ\x80\x91R``\x83\x01\x90``\x81`\x05\x1B\x85\x01\x01\x92\x91_\x90[\x82\x82\x10a\x076WPPPP\x81\x81\x03` \x83\x01R\x82Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x95\x01\x92_\x91[\x83\x83\x10a\x07\tW\x7F1\t\xD4\xA2\xF1UT,\xB1.\xC0&\xE6\xAB\x03gNz\x91\xDDu\xEA\xEE&\xC7\x81B\x0BJ\xB4G;\x86\x88\x03\x87\xA1a\x07\x05`@Qa\x06\xCB` \x82a\x0C\xA8V[_\x81R_\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x0C\x83V[\x03\x90\xF3[\x90\x91\x92\x93\x95` \x80a\x07'\x83`\x1F\x19\x86`\x01\x96\x03\x01\x87R\x8AQa\x0C\x83V[\x98\x01\x93\x01\x93\x01\x91\x93\x92\x90a\x06\x8DV[\x90\x91\x92\x93` \x80a\x07\xA2\x83\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x8A`\x01\x96\x03\x01\x86R```@\x8AQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x91\x81`@\x82\x01R\x01\x90a\x0C\x83V[\x96\x01\x92\x01\x92\x01\x90\x92\x91a\x06`V[`@a\x07\xBC\x82\x86a\x0C\xE3V[Q\x01QQ\x15a\x08\x96W\x80` a\x07\xD4`\x01\x93\x87a\x0C\xE3V[Q\x01Qa\x082Wa\x08\x15s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x07\xFD\x83\x88a\x0C\xE3V[QQ\x16`@a\x08\x0C\x84\x89a\x0C\xE3V[Q\x01Q\x90a\r\xC9V[a\x08\x1F\x82\x88a\x0C\xE3V[Ra\x08*\x81\x87a\x0C\xE3V[P[\x01a\x063V[a\x08{s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08T\x83\x88a\x0C\xE3V[QQ\x16`@a\x08c\x84\x89a\x0C\xE3V[Q\x01Q` a\x08r\x85\x8Aa\x0C\xE3V[Q\x01Q\x91a\x0EXV[a\x08\x85\x82\x88a\x0C\xE3V[Ra\x08\x90\x81\x87a\x0C\xE3V[Pa\x08,V[` a\x08\xA2\x82\x86a\x0C\xE3V[Q\x01Q\x15a\x08\xECW\x80a\x08\xE7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08\xCF`\x01\x94\x88a\x0C\xE3V[QQ\x16` a\x08\xDE\x84\x89a\x0C\xE3V[Q\x01Q\x90a\r$V[a\x08,V[\x7F\x02\x9E\xF1\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[\x80``` \x80\x93\x89\x01\x01R\x01a\x06(V[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82\x01\x90```\x1F\x19\x83\x88\x03\x01\x12a\x01,W`@Q\x91``\x83\x01\x83\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\n\x12W`@R` \x81\x015s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01,W\x83R`@\x81\x015` \x84\x01R``\x81\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W` \x91\x01\x01\x90\x86`\x1F\x83\x01\x12\x15a\x01,W\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\n\x12W`@Qa\t\xE1`\x1F\x86\x01`\x1F\x19\x16` \x01\x82a\x0C\xA8V[\x84\x81R\x88` \x86\x86\x01\x01\x11a\x01,W_` \x86\x81\x97\x82\x80\x98\x01\x83\x86\x017\x83\x01\x01R`@\x82\x01R\x81R\x01\x92\x01\x91a\x05\xF4V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7F\x18\xF69\xD8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x7F\x04JI\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R3`$R`D_\xFD[\x7F>\xE5\xAE\xB5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01,W`@`\x03\x196\x01\x12a\x01,Wa\n\xDDa\x0CTV[`$5\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x80\x92\x03a\x01,W03\x03a\x0BaW\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R`@_ ]\0[\x7F\x9EL?\xED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R`$_\xFD[4a\x01,Wa\x0B\x9B6a\x0C\0V[PPP` `@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W\x80\x7F1.0.0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x92R\xF3[`@`\x03\x19\x82\x01\x12a\x01,W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82`#\x82\x01\x12\x15a\x01,W\x80`\x04\x015\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\x01,W`$\x84\x83\x01\x01\x11a\x01,W`$\x01\x91\x90V[`\x045\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\x01,WV[\x90`\x1F\x19`\x1F` \x80\x94\x80Q\x91\x82\x91\x82\x87R\x01\x86\x86\x01^_\x85\x82\x86\x01\x01R\x01\x16\x01\x01\x90V[\x90`\x1F`\x1F\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\n\x12W`@RV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\n\x12W`\x05\x1B` \x01\x90V[\x80Q\x82\x10\x15a\x0C\xF7W` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x81G\x10a\r\x99W_\x80\x80\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x94\x83`@Qa\rU` \x82a\x0C\xA8V[R\x16Z\xF1\x15a\r`WV[=\x15a\rqW`@Q=_\x82>=\x90\xFD[\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[PG\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x90_\x80\x91` \x81Q\x91\x01\x82\x85Z\xF1\x80\x80a\x0EEW[\x15a\r\xFEWPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[\x15a\r`Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x16`\x04R`$_\xFD[P=\x15\x15\x80a\r\xDEWP\x81;\x15\x15a\r\xDEV[\x91\x80G\x10a\x0E\x95W\x81_\x92\x91` \x84\x93Q\x92\x01\x90\x85Z\xF1\x80\x80a\x0EEW\x15a\r\xFEWPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[G\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD\xFE\xA1dsolcC\0\x08#\0\n", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608080604052600436101561015e575b503615610130573461012c577fffffffff000000000000000000000000000000000000000000000000000000005f3516805f527f00000000000000000000000000000000000000000000000000000000000000006020527fffffffff0000000000000000000000000000000000000000000000000000000060405f205c169081156101015760405160208152366020820152365f60408301375f604036830101527ff3e2cf3756f778617a91a49fad5461da98ed05fd4255486327ba937aa2e3af693391604081601f19601f3601168101030190a360405160208101918252602081526100fd604082610c7a565b5190f35b7ff3aee633000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b5f80fd5b6040513481527f9820dd13494dd7d9f03807aa0bb724fe8266855b5ac4db99848a199904f8074b60203392a2005b5f3560e01c9081630d8e6e2c14610b9a575080631626ba7e14610b5f5780632c060ad814610a9657806333a892031461049f5780633db8418c1461044f5780634cdd4e9c146103bd578063b8dc491b146101fc5763cbad00e5146101c2575f61000f565b3461012c575f60031936011261012c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012c57604060031936011261012c5760043573ffffffffffffffffffffffffffffffffffffffff811680910361012c5760243573ffffffffffffffffffffffffffffffffffffffff811680910361012c5781610295579060209147916102648383610cf6565b7f7b09c29f9106defeccc9ac3b823f3aad0b470d120e5df7aed033b5c43a4bf71884604051858152a3604051908152f35b604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa9182156103b2575f9261037e575b5081604051907fa9059cbb000000000000000000000000000000000000000000000000000000005f528260045260245260205f60448180885af19060015f511482161561035d575b6040521561033157602092610264565b827f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661037557843b15153d15161690610321565b503d5f823e3d90fd5b9091506020813d6020116103aa575b8161039a60209383610c7a565b8101031261012c575190836102d9565b3d915061038d565b6040513d5f823e3d90fd5b3461012c57602060031936011261012c577fffffffff000000000000000000000000000000000000000000000000000000006103f7610c26565b165f527f000000000000000000000000000000000000000000000000000000000000000060205260207fffffffff0000000000000000000000000000000000000000000000000000000060405f205c16604051908152f35b3461012c575f60031936011261012c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461012c576104ad36610bd2565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c610a6e5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303610a3f57507f0000000000000000000000000000000000000000000000000000000000000000818103610a1157505081019060208183031261012c5780359067ffffffffffffffff821161012c570181601f8201121561012c5780359161059983610c9d565b916105a76040519384610c7a565b838352602083016020819560051b8301019183831161012c5760208101915b8383106108f757855186886105da83610c9d565b926105e86040519485610c7a565b808452601f196105f782610c9d565b015f5b8181106108e65750505f5b8181106107825750506040519160408301906040845251809152606083019060608160051b85010192915f905b82821061070857505050508181036020830152825180825260208201916020808360051b8301019501925f915b8383106106db577f3109d4a2f155542cb12ec026e6ab03674e7a91dd75eaee26c781420b4ab4473b86880387a16106d760405161069d602082610c7a565b5f81525f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190610c55565b0390f35b90919293956020806106f983601f1986600196030187528a51610c55565b9801930193019193929061065f565b90919293602080610774837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a60019603018652606060408a5173ffffffffffffffffffffffffffffffffffffffff815116845285810151868501520151918160408201520190610c55565b960192019201909291610632565b604061078e8286610cb5565b5101515115610868578060206107a660019387610cb5565b510151610804576107e773ffffffffffffffffffffffffffffffffffffffff6107cf8388610cb5565b51511660406107de8489610cb5565b51015190610d9b565b6107f18288610cb5565b526107fc8187610cb5565b505b01610605565b61084d73ffffffffffffffffffffffffffffffffffffffff6108268388610cb5565b51511660406108358489610cb5565b5101516020610844858a610cb5565b51015191610e2a565b6108578288610cb5565b526108628187610cb5565b506107fe565b60206108748286610cb5565b510151156108be57806108b973ffffffffffffffffffffffffffffffffffffffff6108a160019488610cb5565b51511660206108b08489610cb5565b51015190610cf6565b6107fe565b7f029ef196000000000000000000000000000000000000000000000000000000005f5260045ffd5b8060606020809389010152016105fa565b823567ffffffffffffffff811161012c578201906060601f19838803011261012c57604051916060830183811067ffffffffffffffff8211176109e457604052602081013573ffffffffffffffffffffffffffffffffffffffff8116810361012c57835260408101356020840152606081013567ffffffffffffffff811161012c5760209101019086601f8301121561012c5781359267ffffffffffffffff84116109e4576040516109b3601f8601601f191660200182610c7a565b848152886020868601011161012c575f602086819782809801838601378301015260408201528152019201916105c6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f18f639d8000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7f044a49eb000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461012c57604060031936011261012c57610aaf610c26565b602435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012c57303303610b33577fffffffff00000000000000000000000000000000000000000000000000000000165f527f000000000000000000000000000000000000000000000000000000000000000060205260405f205d005b7f9e4c3fed000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b3461012c57610b6d36610bd2565b50505060206040517f1626ba7e000000000000000000000000000000000000000000000000000000008152f35b3461012c575f60031936011261012c57807f312e302e302d72632e320000000000000000000000000000000000000000000060209252f35b604060031982011261012c576004359160243567ffffffffffffffff811161012c578260238201121561012c5780600401359267ffffffffffffffff841161012c576024848301011161012c576024019190565b600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361012c57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b90601f601f19910116810190811067ffffffffffffffff8211176109e457604052565b67ffffffffffffffff81116109e45760051b60200190565b8051821015610cc95760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b814710610d6b575f80809373ffffffffffffffffffffffffffffffffffffffff829483604051610d27602082610c7a565b52165af115610d3257565b3d15610d43576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b905f809160208151910182855af18080610e17575b15610dd05750506040513d81523d5f602083013e60203d82010160405290565b15610d325773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b503d151580610db05750813b1515610db0565b91804710610e6757815f92916020849351920190855af18080610e175715610dd05750506040513d81523d5f602083013e60203d82010160405290565b477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffdfea164736f6c6343000823000a + ///0x608080604052600436101561015e575b503615610130573461012c577fffffffff000000000000000000000000000000000000000000000000000000005f3516805f527f00000000000000000000000000000000000000000000000000000000000000006020527fffffffff0000000000000000000000000000000000000000000000000000000060405f205c169081156101015760405160208152366020820152365f60408301375f604036830101527ff3e2cf3756f778617a91a49fad5461da98ed05fd4255486327ba937aa2e3af693391604081601f19601f3601168101030190a360405160208101918252602081526100fd604082610ca8565b5190f35b7ff3aee633000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b5f80fd5b6040513481527f9820dd13494dd7d9f03807aa0bb724fe8266855b5ac4db99848a199904f8074b60203392a2005b5f3560e01c9081630d8e6e2c14610bc8575080631626ba7e14610b8d5780632c060ad814610ac457806333a89203146104cd5780633db8418c1461047d5780634cdd4e9c146103eb578063b8dc491b146101fc5763cbad00e5146101c2575f61000f565b3461012c575f60031936011261012c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461012c57604060031936011261012c5760043573ffffffffffffffffffffffffffffffffffffffff811680910361012c5760243573ffffffffffffffffffffffffffffffffffffffff811680910361012c5780156103c3578161029b5790602091479161026a8383610d24565b7f7b09c29f9106defeccc9ac3b823f3aad0b470d120e5df7aed033b5c43a4bf71884604051858152a3604051908152f35b604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa9182156103b8575f92610384575b5081604051907fa9059cbb000000000000000000000000000000000000000000000000000000005f528260045260245260205f60448180885af19060015f5114821615610363575b604052156103375760209261026a565b827f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661037b57843b15153d15161690610327565b503d5f823e3d90fd5b9091506020813d6020116103b0575b816103a060209383610ca8565b8101031261012c575190836102df565b3d9150610393565b6040513d5f823e3d90fd5b7fe3ce2ed9000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461012c57602060031936011261012c577fffffffff00000000000000000000000000000000000000000000000000000000610425610c54565b165f527f000000000000000000000000000000000000000000000000000000000000000060205260207fffffffff0000000000000000000000000000000000000000000000000000000060405f205c16604051908152f35b3461012c575f60031936011261012c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461012c576104db36610c00565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c610a9c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303610a6d57507f0000000000000000000000000000000000000000000000000000000000000000818103610a3f57505081019060208183031261012c5780359067ffffffffffffffff821161012c570181601f8201121561012c578035916105c783610ccb565b916105d56040519384610ca8565b838352602083016020819560051b8301019183831161012c5760208101915b838310610925578551868861060883610ccb565b926106166040519485610ca8565b808452601f1961062582610ccb565b015f5b8181106109145750505f5b8181106107b05750506040519160408301906040845251809152606083019060608160051b85010192915f905b82821061073657505050508181036020830152825180825260208201916020808360051b8301019501925f915b838310610709577f3109d4a2f155542cb12ec026e6ab03674e7a91dd75eaee26c781420b4ab4473b86880387a16107056040516106cb602082610ca8565b5f81525f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190610c83565b0390f35b909192939560208061072783601f1986600196030187528a51610c83565b9801930193019193929061068d565b909192936020806107a2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a60019603018652606060408a5173ffffffffffffffffffffffffffffffffffffffff815116845285810151868501520151918160408201520190610c83565b960192019201909291610660565b60406107bc8286610ce3565b5101515115610896578060206107d460019387610ce3565b5101516108325761081573ffffffffffffffffffffffffffffffffffffffff6107fd8388610ce3565b515116604061080c8489610ce3565b51015190610dc9565b61081f8288610ce3565b5261082a8187610ce3565b505b01610633565b61087b73ffffffffffffffffffffffffffffffffffffffff6108548388610ce3565b51511660406108638489610ce3565b5101516020610872858a610ce3565b51015191610e58565b6108858288610ce3565b526108908187610ce3565b5061082c565b60206108a28286610ce3565b510151156108ec57806108e773ffffffffffffffffffffffffffffffffffffffff6108cf60019488610ce3565b51511660206108de8489610ce3565b51015190610d24565b61082c565b7f029ef196000000000000000000000000000000000000000000000000000000005f5260045ffd5b806060602080938901015201610628565b823567ffffffffffffffff811161012c578201906060601f19838803011261012c57604051916060830183811067ffffffffffffffff821117610a1257604052602081013573ffffffffffffffffffffffffffffffffffffffff8116810361012c57835260408101356020840152606081013567ffffffffffffffff811161012c5760209101019086601f8301121561012c5781359267ffffffffffffffff8411610a12576040516109e1601f8601601f191660200182610ca8565b848152886020868601011161012c575f602086819782809801838601378301015260408201528152019201916105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f18f639d8000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7f044a49eb000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461012c57604060031936011261012c57610add610c54565b602435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012c57303303610b61577fffffffff00000000000000000000000000000000000000000000000000000000165f527f000000000000000000000000000000000000000000000000000000000000000060205260405f205d005b7f9e4c3fed000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b3461012c57610b9b36610c00565b50505060206040517f1626ba7e000000000000000000000000000000000000000000000000000000008152f35b3461012c575f60031936011261012c57807f312e302e3000000000000000000000000000000000000000000000000000000060209252f35b604060031982011261012c576004359160243567ffffffffffffffff811161012c578260238201121561012c5780600401359267ffffffffffffffff841161012c576024848301011161012c576024019190565b600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361012c57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b90601f601f19910116810190811067ffffffffffffffff821117610a1257604052565b67ffffffffffffffff8111610a125760051b60200190565b8051821015610cf75760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b814710610d99575f80809373ffffffffffffffffffffffffffffffffffffffff829483604051610d55602082610ca8565b52165af115610d6057565b3d15610d71576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b905f809160208151910182855af18080610e45575b15610dfe5750506040513d81523d5f602083013e60203d82010160405290565b15610d605773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b503d151580610dde5750813b1515610dde565b91804710610e9557815f92916020849351920190855af18080610e455715610dfe5750506040513d81523d5f602083013e60203d82010160405290565b477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffdfea164736f6c6343000823000a /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80\x80`@R`\x046\x10\x15a\x01^W[P6\x15a\x010W4a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_5\x16\x80_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16\x90\x81\x15a\x01\x01W`@Q` \x81R6` \x82\x01R6_`@\x83\x017_`@6\x83\x01\x01R\x7F\xF3\xE2\xCF7V\xF7xaz\x91\xA4\x9F\xADTa\xDA\x98\xED\x05\xFDBUHc'\xBA\x93z\xA2\xE3\xAFi3\x91`@\x81`\x1F\x19`\x1F6\x01\x16\x81\x01\x03\x01\x90\xA3`@Q` \x81\x01\x91\x82R` \x81Ra\0\xFD`@\x82a\x0CzV[Q\x90\xF3[\x7F\xF3\xAE\xE63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[_\x80\xFD[`@Q4\x81R\x7F\x98 \xDD\x13IM\xD7\xD9\xF08\x07\xAA\x0B\xB7$\xFE\x82f\x85[Z\xC4\xDB\x99\x84\x8A\x19\x99\x04\xF8\x07K` 3\x92\xA2\0[_5`\xE0\x1C\x90\x81c\r\x8En,\x14a\x0B\x9AWP\x80c\x16&\xBA~\x14a\x0B_W\x80c,\x06\n\xD8\x14a\n\x96W\x80c3\xA8\x92\x03\x14a\x04\x9FW\x80c=\xB8A\x8C\x14a\x04OW\x80cL\xDDN\x9C\x14a\x03\xBDW\x80c\xB8\xDCI\x1B\x14a\x01\xFCWc\xCB\xAD\0\xE5\x14a\x01\xC2W_a\0\x0FV[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W`@`\x03\x196\x01\x12a\x01,W`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W`$5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W\x81a\x02\x95W\x90` \x91G\x91a\x02d\x83\x83a\x0C\xF6V[\x7F{\t\xC2\x9F\x91\x06\xDE\xFE\xCC\xC9\xAC;\x82?:\xAD\x0BG\r\x12\x0E]\xF7\xAE\xD03\xB5\xC4:K\xF7\x18\x84`@Q\x85\x81R\xA3`@Q\x90\x81R\xF3[`@Q\x90\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R0`\x04\x83\x01R` \x82`$\x81\x86Z\xFA\x91\x82\x15a\x03\xB2W_\x92a\x03~W[P\x81`@Q\x90\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x82`\x04R`$R` _`D\x81\x80\x88Z\xF1\x90`\x01_Q\x14\x82\x16\x15a\x03]W[`@R\x15a\x031W` \x92a\x02dV[\x82\x7FRt\xAF\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[\x90`\x01\x81\x15\x16a\x03uW\x84;\x15\x15=\x15\x16\x16\x90a\x03!V[P=_\x82>=\x90\xFD[\x90\x91P` \x81=` \x11a\x03\xAAW[\x81a\x03\x9A` \x93\x83a\x0CzV[\x81\x01\x03\x12a\x01,WQ\x90\x83a\x02\xD9V[=\x91Pa\x03\x8DV[`@Q=_\x82>=\x90\xFD[4a\x01,W` `\x03\x196\x01\x12a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xF7a\x0C&V[\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R` \x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16`@Q\x90\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x01,Wa\x04\xAD6a\x0B\xD2V[\x90\x91\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\\a\nnW`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x803\x03a\n?WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x81\x03a\n\x11WPP\x81\x01\x90` \x81\x83\x03\x12a\x01,W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01,W\x01\x81`\x1F\x82\x01\x12\x15a\x01,W\x805\x91a\x05\x99\x83a\x0C\x9DV[\x91a\x05\xA7`@Q\x93\x84a\x0CzV[\x83\x83R` \x83\x01` \x81\x95`\x05\x1B\x83\x01\x01\x91\x83\x83\x11a\x01,W` \x81\x01\x91[\x83\x83\x10a\x08\xF7W\x85Q\x86\x88a\x05\xDA\x83a\x0C\x9DV[\x92a\x05\xE8`@Q\x94\x85a\x0CzV[\x80\x84R`\x1F\x19a\x05\xF7\x82a\x0C\x9DV[\x01_[\x81\x81\x10a\x08\xE6WPP_[\x81\x81\x10a\x07\x82WPP`@Q\x91`@\x83\x01\x90`@\x84RQ\x80\x91R``\x83\x01\x90``\x81`\x05\x1B\x85\x01\x01\x92\x91_\x90[\x82\x82\x10a\x07\x08WPPPP\x81\x81\x03` \x83\x01R\x82Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x95\x01\x92_\x91[\x83\x83\x10a\x06\xDBW\x7F1\t\xD4\xA2\xF1UT,\xB1.\xC0&\xE6\xAB\x03gNz\x91\xDDu\xEA\xEE&\xC7\x81B\x0BJ\xB4G;\x86\x88\x03\x87\xA1a\x06\xD7`@Qa\x06\x9D` \x82a\x0CzV[_\x81R_\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x0CUV[\x03\x90\xF3[\x90\x91\x92\x93\x95` \x80a\x06\xF9\x83`\x1F\x19\x86`\x01\x96\x03\x01\x87R\x8AQa\x0CUV[\x98\x01\x93\x01\x93\x01\x91\x93\x92\x90a\x06_V[\x90\x91\x92\x93` \x80a\x07t\x83\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x8A`\x01\x96\x03\x01\x86R```@\x8AQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x91\x81`@\x82\x01R\x01\x90a\x0CUV[\x96\x01\x92\x01\x92\x01\x90\x92\x91a\x062V[`@a\x07\x8E\x82\x86a\x0C\xB5V[Q\x01QQ\x15a\x08hW\x80` a\x07\xA6`\x01\x93\x87a\x0C\xB5V[Q\x01Qa\x08\x04Wa\x07\xE7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x07\xCF\x83\x88a\x0C\xB5V[QQ\x16`@a\x07\xDE\x84\x89a\x0C\xB5V[Q\x01Q\x90a\r\x9BV[a\x07\xF1\x82\x88a\x0C\xB5V[Ra\x07\xFC\x81\x87a\x0C\xB5V[P[\x01a\x06\x05V[a\x08Ms\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08&\x83\x88a\x0C\xB5V[QQ\x16`@a\x085\x84\x89a\x0C\xB5V[Q\x01Q` a\x08D\x85\x8Aa\x0C\xB5V[Q\x01Q\x91a\x0E*V[a\x08W\x82\x88a\x0C\xB5V[Ra\x08b\x81\x87a\x0C\xB5V[Pa\x07\xFEV[` a\x08t\x82\x86a\x0C\xB5V[Q\x01Q\x15a\x08\xBEW\x80a\x08\xB9s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08\xA1`\x01\x94\x88a\x0C\xB5V[QQ\x16` a\x08\xB0\x84\x89a\x0C\xB5V[Q\x01Q\x90a\x0C\xF6V[a\x07\xFEV[\x7F\x02\x9E\xF1\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[\x80``` \x80\x93\x89\x01\x01R\x01a\x05\xFAV[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82\x01\x90```\x1F\x19\x83\x88\x03\x01\x12a\x01,W`@Q\x91``\x83\x01\x83\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\t\xE4W`@R` \x81\x015s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01,W\x83R`@\x81\x015` \x84\x01R``\x81\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W` \x91\x01\x01\x90\x86`\x1F\x83\x01\x12\x15a\x01,W\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\t\xE4W`@Qa\t\xB3`\x1F\x86\x01`\x1F\x19\x16` \x01\x82a\x0CzV[\x84\x81R\x88` \x86\x86\x01\x01\x11a\x01,W_` \x86\x81\x97\x82\x80\x98\x01\x83\x86\x017\x83\x01\x01R`@\x82\x01R\x81R\x01\x92\x01\x91a\x05\xC6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7F\x18\xF69\xD8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x7F\x04JI\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R3`$R`D_\xFD[\x7F>\xE5\xAE\xB5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01,W`@`\x03\x196\x01\x12a\x01,Wa\n\xAFa\x0C&V[`$5\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x80\x92\x03a\x01,W03\x03a\x0B3W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R`@_ ]\0[\x7F\x9EL?\xED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R`$_\xFD[4a\x01,Wa\x0Bm6a\x0B\xD2V[PPP` `@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W\x80\x7F1.0.0-rc.2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x92R\xF3[`@`\x03\x19\x82\x01\x12a\x01,W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82`#\x82\x01\x12\x15a\x01,W\x80`\x04\x015\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\x01,W`$\x84\x83\x01\x01\x11a\x01,W`$\x01\x91\x90V[`\x045\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\x01,WV[\x90`\x1F\x19`\x1F` \x80\x94\x80Q\x91\x82\x91\x82\x87R\x01\x86\x86\x01^_\x85\x82\x86\x01\x01R\x01\x16\x01\x01\x90V[\x90`\x1F`\x1F\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\t\xE4W`@RV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\t\xE4W`\x05\x1B` \x01\x90V[\x80Q\x82\x10\x15a\x0C\xC9W` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x81G\x10a\rkW_\x80\x80\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x94\x83`@Qa\r'` \x82a\x0CzV[R\x16Z\xF1\x15a\r2WV[=\x15a\rCW`@Q=_\x82>=\x90\xFD[\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[PG\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x90_\x80\x91` \x81Q\x91\x01\x82\x85Z\xF1\x80\x80a\x0E\x17W[\x15a\r\xD0WPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[\x15a\r2Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x16`\x04R`$_\xFD[P=\x15\x15\x80a\r\xB0WP\x81;\x15\x15a\r\xB0V[\x91\x80G\x10a\x0EgW\x81_\x92\x91` \x84\x93Q\x92\x01\x90\x85Z\xF1\x80\x80a\x0E\x17W\x15a\r\xD0WPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[G\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD\xFE\xA1dsolcC\0\x08#\0\n", + b"`\x80\x80`@R`\x046\x10\x15a\x01^W[P6\x15a\x010W4a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_5\x16\x80_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16\x90\x81\x15a\x01\x01W`@Q` \x81R6` \x82\x01R6_`@\x83\x017_`@6\x83\x01\x01R\x7F\xF3\xE2\xCF7V\xF7xaz\x91\xA4\x9F\xADTa\xDA\x98\xED\x05\xFDBUHc'\xBA\x93z\xA2\xE3\xAFi3\x91`@\x81`\x1F\x19`\x1F6\x01\x16\x81\x01\x03\x01\x90\xA3`@Q` \x81\x01\x91\x82R` \x81Ra\0\xFD`@\x82a\x0C\xA8V[Q\x90\xF3[\x7F\xF3\xAE\xE63\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[_\x80\xFD[`@Q4\x81R\x7F\x98 \xDD\x13IM\xD7\xD9\xF08\x07\xAA\x0B\xB7$\xFE\x82f\x85[Z\xC4\xDB\x99\x84\x8A\x19\x99\x04\xF8\x07K` 3\x92\xA2\0[_5`\xE0\x1C\x90\x81c\r\x8En,\x14a\x0B\xC8WP\x80c\x16&\xBA~\x14a\x0B\x8DW\x80c,\x06\n\xD8\x14a\n\xC4W\x80c3\xA8\x92\x03\x14a\x04\xCDW\x80c=\xB8A\x8C\x14a\x04}W\x80cL\xDDN\x9C\x14a\x03\xEBW\x80c\xB8\xDCI\x1B\x14a\x01\xFCWc\xCB\xAD\0\xE5\x14a\x01\xC2W_a\0\x0FV[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W`@`\x03\x196\x01\x12a\x01,W`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W`$5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x01,W\x80\x15a\x03\xC3W\x81a\x02\x9BW\x90` \x91G\x91a\x02j\x83\x83a\r$V[\x7F{\t\xC2\x9F\x91\x06\xDE\xFE\xCC\xC9\xAC;\x82?:\xAD\x0BG\r\x12\x0E]\xF7\xAE\xD03\xB5\xC4:K\xF7\x18\x84`@Q\x85\x81R\xA3`@Q\x90\x81R\xF3[`@Q\x90\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R0`\x04\x83\x01R` \x82`$\x81\x86Z\xFA\x91\x82\x15a\x03\xB8W_\x92a\x03\x84W[P\x81`@Q\x90\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x82`\x04R`$R` _`D\x81\x80\x88Z\xF1\x90`\x01_Q\x14\x82\x16\x15a\x03cW[`@R\x15a\x037W` \x92a\x02jV[\x82\x7FRt\xAF\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[\x90`\x01\x81\x15\x16a\x03{W\x84;\x15\x15=\x15\x16\x16\x90a\x03'V[P=_\x82>=\x90\xFD[\x90\x91P` \x81=` \x11a\x03\xB0W[\x81a\x03\xA0` \x93\x83a\x0C\xA8V[\x81\x01\x03\x12a\x01,WQ\x90\x83a\x02\xDFV[=\x91Pa\x03\x93V[`@Q=_\x82>=\x90\xFD[\x7F\xE3\xCE.\xD9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01,W` `\x03\x196\x01\x12a\x01,W\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x04%a\x0CTV[\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R` \x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@_ \\\x16`@Q\x90\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W` `@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x01,Wa\x04\xDB6a\x0C\0V[\x90\x91\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\\a\n\x9CW`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x803\x03a\nmWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x81\x03a\n?WPP\x81\x01\x90` \x81\x83\x03\x12a\x01,W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01,W\x01\x81`\x1F\x82\x01\x12\x15a\x01,W\x805\x91a\x05\xC7\x83a\x0C\xCBV[\x91a\x05\xD5`@Q\x93\x84a\x0C\xA8V[\x83\x83R` \x83\x01` \x81\x95`\x05\x1B\x83\x01\x01\x91\x83\x83\x11a\x01,W` \x81\x01\x91[\x83\x83\x10a\t%W\x85Q\x86\x88a\x06\x08\x83a\x0C\xCBV[\x92a\x06\x16`@Q\x94\x85a\x0C\xA8V[\x80\x84R`\x1F\x19a\x06%\x82a\x0C\xCBV[\x01_[\x81\x81\x10a\t\x14WPP_[\x81\x81\x10a\x07\xB0WPP`@Q\x91`@\x83\x01\x90`@\x84RQ\x80\x91R``\x83\x01\x90``\x81`\x05\x1B\x85\x01\x01\x92\x91_\x90[\x82\x82\x10a\x076WPPPP\x81\x81\x03` \x83\x01R\x82Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x95\x01\x92_\x91[\x83\x83\x10a\x07\tW\x7F1\t\xD4\xA2\xF1UT,\xB1.\xC0&\xE6\xAB\x03gNz\x91\xDDu\xEA\xEE&\xC7\x81B\x0BJ\xB4G;\x86\x88\x03\x87\xA1a\x07\x05`@Qa\x06\xCB` \x82a\x0C\xA8V[_\x81R_\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0]`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x0C\x83V[\x03\x90\xF3[\x90\x91\x92\x93\x95` \x80a\x07'\x83`\x1F\x19\x86`\x01\x96\x03\x01\x87R\x8AQa\x0C\x83V[\x98\x01\x93\x01\x93\x01\x91\x93\x92\x90a\x06\x8DV[\x90\x91\x92\x93` \x80a\x07\xA2\x83\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x8A`\x01\x96\x03\x01\x86R```@\x8AQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x91\x81`@\x82\x01R\x01\x90a\x0C\x83V[\x96\x01\x92\x01\x92\x01\x90\x92\x91a\x06`V[`@a\x07\xBC\x82\x86a\x0C\xE3V[Q\x01QQ\x15a\x08\x96W\x80` a\x07\xD4`\x01\x93\x87a\x0C\xE3V[Q\x01Qa\x082Wa\x08\x15s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x07\xFD\x83\x88a\x0C\xE3V[QQ\x16`@a\x08\x0C\x84\x89a\x0C\xE3V[Q\x01Q\x90a\r\xC9V[a\x08\x1F\x82\x88a\x0C\xE3V[Ra\x08*\x81\x87a\x0C\xE3V[P[\x01a\x063V[a\x08{s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08T\x83\x88a\x0C\xE3V[QQ\x16`@a\x08c\x84\x89a\x0C\xE3V[Q\x01Q` a\x08r\x85\x8Aa\x0C\xE3V[Q\x01Q\x91a\x0EXV[a\x08\x85\x82\x88a\x0C\xE3V[Ra\x08\x90\x81\x87a\x0C\xE3V[Pa\x08,V[` a\x08\xA2\x82\x86a\x0C\xE3V[Q\x01Q\x15a\x08\xECW\x80a\x08\xE7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x08\xCF`\x01\x94\x88a\x0C\xE3V[QQ\x16` a\x08\xDE\x84\x89a\x0C\xE3V[Q\x01Q\x90a\r$V[a\x08,V[\x7F\x02\x9E\xF1\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[\x80``` \x80\x93\x89\x01\x01R\x01a\x06(V[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82\x01\x90```\x1F\x19\x83\x88\x03\x01\x12a\x01,W`@Q\x91``\x83\x01\x83\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\n\x12W`@R` \x81\x015s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01,W\x83R`@\x81\x015` \x84\x01R``\x81\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W` \x91\x01\x01\x90\x86`\x1F\x83\x01\x12\x15a\x01,W\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\n\x12W`@Qa\t\xE1`\x1F\x86\x01`\x1F\x19\x16` \x01\x82a\x0C\xA8V[\x84\x81R\x88` \x86\x86\x01\x01\x11a\x01,W_` \x86\x81\x97\x82\x80\x98\x01\x83\x86\x017\x83\x01\x01R`@\x82\x01R\x81R\x01\x92\x01\x91a\x05\xF4V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7F\x18\xF69\xD8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x7F\x04JI\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R3`$R`D_\xFD[\x7F>\xE5\xAE\xB5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01,W`@`\x03\x196\x01\x12a\x01,Wa\n\xDDa\x0CTV[`$5\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x80\x92\x03a\x01,W03\x03a\x0BaW\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16_R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` R`@_ ]\0[\x7F\x9EL?\xED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R`$_\xFD[4a\x01,Wa\x0B\x9B6a\x0C\0V[PPP` `@Q\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01,W_`\x03\x196\x01\x12a\x01,W\x80\x7F1.0.0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x92R\xF3[`@`\x03\x19\x82\x01\x12a\x01,W`\x045\x91`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01,W\x82`#\x82\x01\x12\x15a\x01,W\x80`\x04\x015\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x11a\x01,W`$\x84\x83\x01\x01\x11a\x01,W`$\x01\x91\x90V[`\x045\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\x01,WV[\x90`\x1F\x19`\x1F` \x80\x94\x80Q\x91\x82\x91\x82\x87R\x01\x86\x86\x01^_\x85\x82\x86\x01\x01R\x01\x16\x01\x01\x90V[\x90`\x1F`\x1F\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\n\x12W`@RV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\n\x12W`\x05\x1B` \x01\x90V[\x80Q\x82\x10\x15a\x0C\xF7W` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x81G\x10a\r\x99W_\x80\x80\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x94\x83`@Qa\rU` \x82a\x0C\xA8V[R\x16Z\xF1\x15a\r`WV[=\x15a\rqW`@Q=_\x82>=\x90\xFD[\x7F\xD6\xBD\xA2u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[PG\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x90_\x80\x91` \x81Q\x91\x01\x82\x85Z\xF1\x80\x80a\x0EEW[\x15a\r\xFEWPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[\x15a\r`Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x7F\x99\x96\xB3\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x16`\x04R`$_\xFD[P=\x15\x15\x80a\r\xDEWP\x81;\x15\x15a\r\xDEV[\x91\x80G\x10a\x0E\x95W\x81_\x92\x91` \x84\x93Q\x92\x01\x90\x85Z\xF1\x80\x80a\x0EEW\x15a\r\xFEWPP`@Q=\x81R=_` \x83\x01>` =\x82\x01\x01`@R\x90V[G\x7F\xCFG\x91\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD\xFE\xA1dsolcC\0\x08#\0\n", ); #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] @@ -1702,6 +1708,80 @@ error ZeroProtocolAdapterNotAllowed(); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `ZeroRecipientNotAllowed()` and selector `0xe3ce2ed9`. +```solidity +error ZeroRecipientNotAllowed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ZeroRecipientNotAllowed; + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ZeroRecipientNotAllowed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ZeroRecipientNotAllowed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ZeroRecipientNotAllowed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ZeroRecipientNotAllowed()"; + const SELECTOR: [u8; 4] = [227u8, 206u8, 46u8, 217u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Event with signature `Executed((address,uint256,bytes)[],bytes[])` and selector `0x3109d4a2f155542cb12ec026e6ab03674e7a91dd75eaee26c781420b4ab4473b`. ```solidity event Executed(Call[] calls, bytes[] execResults); @@ -3995,6 +4075,8 @@ function sweep(address token, address to) external returns (uint256 amount); ZeroLogicRefNotAllowed(ZeroLogicRefNotAllowed), #[allow(missing_docs)] ZeroProtocolAdapterNotAllowed(ZeroProtocolAdapterNotAllowed), + #[allow(missing_docs)] + ZeroRecipientNotAllowed(ZeroRecipientNotAllowed), } impl GenericCallForwarderErrors { /// All the selectors of this enum. @@ -4015,6 +4097,7 @@ function sweep(address token, address to) external returns (uint256 amount); [190u8, 211u8, 242u8, 2u8], [207u8, 71u8, 145u8, 129u8], [214u8, 189u8, 162u8, 117u8], + [227u8, 206u8, 46u8, 217u8], [243u8, 174u8, 230u8, 51u8], ]; /// The names of the variants in the same order as `SELECTORS`. @@ -4030,6 +4113,7 @@ function sweep(address token, address to) external returns (uint256 amount); ::core::stringify!(ZeroProtocolAdapterNotAllowed), ::core::stringify!(InsufficientBalance), ::core::stringify!(FailedCall), + ::core::stringify!(ZeroRecipientNotAllowed), ::core::stringify!(UnregisteredSelector), ]; /// The signatures in the same order as `SELECTORS`. @@ -4045,6 +4129,7 @@ function sweep(address token, address to) external returns (uint256 amount); ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ]; /// Returns the signature for the given selector, if known. @@ -4072,7 +4157,7 @@ function sweep(address token, address to) external returns (uint256 amount); impl alloy_sol_types::SolInterface for GenericCallForwarderErrors { const NAME: &'static str = "GenericCallForwarderErrors"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 12usize; + const COUNT: usize = 13usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -4112,6 +4197,9 @@ function sweep(address token, address to) external returns (uint256 amount); Self::ZeroProtocolAdapterNotAllowed(_) => { ::SELECTOR } + Self::ZeroRecipientNotAllowed(_) => { + ::SELECTOR + } } } #[inline] @@ -4254,6 +4342,17 @@ function sweep(address token, address to) external returns (uint256 amount); } FailedCall }, + { + fn ZeroRecipientNotAllowed( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(GenericCallForwarderErrors::ZeroRecipientNotAllowed) + } + ZeroRecipientNotAllowed + }, { fn UnregisteredSelector( data: &[u8], @@ -4410,6 +4509,17 @@ function sweep(address token, address to) external returns (uint256 amount); } FailedCall }, + { + fn ZeroRecipientNotAllowed( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(GenericCallForwarderErrors::ZeroRecipientNotAllowed) + } + ZeroRecipientNotAllowed + }, { fn UnregisteredSelector( data: &[u8], @@ -4493,6 +4603,11 @@ function sweep(address token, address to) external returns (uint256 amount); inner, ) } + Self::ZeroRecipientNotAllowed(inner) => { + ::abi_encoded_size( + inner, + ) + } } } #[inline] @@ -4567,6 +4682,12 @@ function sweep(address token, address to) external returns (uint256 amount); out, ) } + Self::ZeroRecipientNotAllowed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } } } } diff --git a/bindings/tests/contract.rs b/bindings/tests/contract.rs index 409dfcf..da444dc 100644 --- a/bindings/tests/contract.rs +++ b/bindings/tests/contract.rs @@ -4,16 +4,12 @@ extern crate dotenvy; use alloy::primitives::{Address, B256}; use alloy::providers::{DynProvider, Provider, ProviderBuilder}; use alloy_chains::NamedChain; -use anoma_generic_call_forwarder_bindings::generated::generic_call_forwarder; -use anoma_pa_evm_bindings::addresses::protocol_adapter_address; -use anoma_pa_evm_bindings::helpers::rpc_url; use anoma_generic_call_forwarder_bindings::addresses::generic_call_forwarder_deployments_map; use anoma_generic_call_forwarder_bindings::contract::generic_call_forwarder; +use anoma_generic_call_forwarder_bindings::generated::generic_call_forwarder; use anoma_generic_call_forwarder_bindings::generated::generic_call_forwarder::GenericCallForwarder::GenericCallForwarderInstance; - -fn generic_call_id() -> B256 { - B256::from_slice(anoma_generic_call_library::GENERIC_CALL_ID.as_bytes()) -} +use anoma_pa_evm_bindings::addresses::protocol_adapter_address; +use anoma_pa_evm_bindings::helpers::rpc_url; #[tokio::test] async fn deployed_forwarders_point_to_the_current_protocol_adapter_contract() { @@ -59,33 +55,28 @@ async fn deployed_forwarders_reference_the_expected_logic_ref() { #[tokio::test] async fn versions_of_deployed_forwarders_match_the_expected_version() { - // Iterate over all supported chains - for chain in generic_call_forwarder_deployments_map().keys() { - let existing_fwd = fwd_instance(chain).await; - - let current_fwd = generic_call_forwarder::GenericCallForwarder::deploy( - existing_fwd.provider(), - existing_fwd - .getProtocolAdapter() - .call() - .await - .expect("Couldn't get protocol adapter"), - generic_call_id(), - ) + let current_fwd = generic_call_forwarder::GenericCallForwarder::deploy( + ProviderBuilder::new().connect_anvil_with_wallet().erased(), + Address::from([1u8; 20]), + generic_call_id(), + ) + .await + .expect("Couldn't deploy generic call forwarder"); + + let expected_version = current_fwd + .getVersion() + .call() .await - .expect("Couldn't deploy generic call forwarder"); + .expect("Couldn't get version"); - let expected_version = current_fwd - .getVersion() - .call() + // Iterate over all supported chains + for chain in generic_call_forwarder_deployments_map().keys() { + let actual_version: alloy::primitives::FixedBytes<32> = fwd_instance(chain) .await - .expect("Couldn't get version"); - - let actual_version: alloy::primitives::FixedBytes<32> = existing_fwd .getVersion() .call() .await - .expect("Couldn't get protocol adapter version"); + .expect("Couldn't get deployed forwarder version"); // Check that the deployed generic call forwarder version matches the expected version. assert_eq!( @@ -96,13 +87,14 @@ async fn versions_of_deployed_forwarders_match_the_expected_version() { } } +fn generic_call_id() -> B256 { + B256::from_slice(anoma_generic_call_library::GENERIC_CALL_ID.as_bytes()) +} + async fn fwd_instance(chain: &NamedChain) -> GenericCallForwarderInstance { let rpc_url = rpc_url(chain).unwrap(); - let provider = ProviderBuilder::new() - .connect_anvil_with_wallet_and_config(|a| a.fork(rpc_url)) - .expect("Couldn't create anvil provider") - .erased(); + let provider = ProviderBuilder::new().connect_http(rpc_url).erased(); generic_call_forwarder(&provider).await.unwrap() } diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 0673f8f..7e5c424 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -23,25 +23,25 @@ libs = ["dependencies"] auto_detect_remappings = false remappings = [ "@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/", - "anoma-forwarder-bases-1.0.0-rc.4/=dependencies/anoma-forwarder-bases-1.0.0-rc.4/", - "anoma-pa-evm-1.2.0-rc.0/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.3/dependencies/anoma-pa-evm-1.2.0-rc.0/", - "anomapay-erc20-forwarder-1.1.0-rc.3/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.3/", - "elliptic-curve-solidity-0.2.5/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.3/dependencies/anoma-pa-evm-1.2.0-rc.0/dependencies/elliptic-curve-solidity-0.2.5/", + "anoma-forwarder-bases-1.0.0/=dependencies/anoma-forwarder-bases-1.0.0/", + "anoma-pa-evm-1.2.0-rc.0/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.4/dependencies/anoma-pa-evm-1.2.0-rc.0/", + "anomapay-erc20-forwarder-1.1.0-rc.4/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.4/", + "elliptic-curve-solidity-0.2.5/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.4/dependencies/anoma-pa-evm-1.2.0-rc.0/dependencies/elliptic-curve-solidity-0.2.5/", "forge-std-1.16.1/=dependencies/forge-std-1.16.1/", - "openzeppelin/contracts/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.3/dependencies/anoma-pa-evm-1.2.0-rc.0/dependencies/risc0-risc0-ethereum-3.0.1/lib/openzeppelin-contracts/contracts/", + "openzeppelin/contracts/=dependencies/anomapay-erc20-forwarder-1.1.0-rc.4/dependencies/anoma-pa-evm-1.2.0-rc.0/dependencies/risc0-risc0-ethereum-3.0.1/lib/openzeppelin-contracts/contracts/", "solady-0.1.26/=dependencies/solady-0.1.26/", "solmate/=dependencies/uniswap-permit2-0x000000000022D473030F116dDEE9F6B43aC78BA3/lib/solmate/", "uniswap-permit2-0x000000000022D473030F116dDEE9F6B43aC78BA3/=dependencies/uniswap-permit2-0x000000000022D473030F116dDEE9F6B43aC78BA3/", ] ignored_warnings_from = [ "dependencies/@openzeppelin-contracts-5.6.1/utils", # Warning 6335: "error" will be promoted to keyword in the future and will not be allowed as an identifier anymore. - "dependencies/anomapay-erc20-forwarder-1.1.0-rc.3/dependencies/anoma-pa-evm-1.2.0-rc.0/dependencies/risc0-risc0-ethereum-3.0.1/contracts/src", # Warning 9170: Comparison of variables of contract type is deprecated + "dependencies/anomapay-erc20-forwarder-1.1.0-rc.4/dependencies/anoma-pa-evm-1.2.0-rc.0/dependencies/risc0-risc0-ethereum-3.0.1/contracts/src", # Warning 9170: Comparison of variables of contract type is deprecated ] [dependencies] "@openzeppelin-contracts" = "5.6.1" -"anoma-forwarder-bases" = "1.0.0-rc.4" -"anomapay-erc20-forwarder" = "1.1.0-rc.3" +"anoma-forwarder-bases" = "1.0.0" +"anomapay-erc20-forwarder" = "1.1.0-rc.4" "forge-std" = "1.16.1" "solady" = "0.1.26" "uniswap-permit2" = "0x000000000022D473030F116dDEE9F6B43aC78BA3" @@ -74,5 +74,10 @@ tempo = "https://tempo-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}" tempo-moderato = "https://tempo-moderato.g.alchemy.com/v2/${ALCHEMY_API_KEY}" monad = "https://monad-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}" monad-testnet = "https://monad-testnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}" +stable-mainnet = "https://stable-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}" +megaeth = "https://megaeth-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}" + +aurora = "https://aurora.nownodes.io/${NOWNODES_API_KEY}" + localhost = "http://localhost:8545" diff --git a/contracts/soldeer.lock b/contracts/soldeer.lock index aff32d5..1dd7172 100644 --- a/contracts/soldeer.lock +++ b/contracts/soldeer.lock @@ -7,17 +7,17 @@ integrity = "bce03af7ada1eee21a7fff393f238bcd7cd75a022a4db55ffb6b0dbb32433d35" [[dependencies]] name = "anoma-forwarder-bases" -version = "1.0.0-rc.4" -url = "https://soldeer-revisions.s3.amazonaws.com/anoma-forwarder-bases/1_0_0-rc_4_24-06-2026_11:07:37_contracts.zip" -checksum = "d6c026281e2bf1a36e6e993f53f3f73a847495a4b936f6c5709d562107afeb06" -integrity = "f379eb92e564e78ef25b83acfc157c74f894a1f32b0b9b42e448624cb63cc339" +version = "1.0.0" +url = "https://soldeer-revisions.s3.amazonaws.com/anoma-forwarder-bases/1_0_0_02-07-2026_14:20:56_contracts.zip" +checksum = "09c648b05a35ddb6ee490438ebb9f7f1b4d503c092cdf248c2de14bf4bb5c6de" +integrity = "cb7b2674e8cff9aee82276899bd168d9d36364002f08547ddd58f12d1021f0ab" [[dependencies]] name = "anomapay-erc20-forwarder" -version = "1.1.0-rc.3" -url = "https://soldeer-revisions.s3.amazonaws.com/anomapay-erc20-forwarder/1_1_0-rc_3_24-06-2026_13:56:28_contracts.zip" -checksum = "906515fc9c3507a39ec0885d80b1e13114d81fff2beeb6f606f5f59e844ebd6e" -integrity = "20d9a7c94aa9536079d135dd357785effaf1826babc4659230633ce237ab7bb0" +version = "1.1.0-rc.4" +url = "https://soldeer-revisions.s3.amazonaws.com/anomapay-erc20-forwarder/1_1_0-rc_4_02-07-2026_15:06:50_contracts.zip" +checksum = "a96f30e024e1e60daca9a1c0a22c67eb11fa828fec0e1327739040a3cc9f678c" +integrity = "d4fcc45bb723b024b01f7c732dcc041f28ef9f8e5349db96b213bae02e968b6a" [[dependencies]] name = "forge-std" @@ -38,4 +38,4 @@ name = "uniswap-permit2" version = "0x000000000022D473030F116dDEE9F6B43aC78BA3" url = "https://soldeer-revisions.s3.amazonaws.com/uniswap-permit2/0x000000000022D473030F116dDEE9F6B43aC78BA3_11-11-2024_08:00:23_permit2.zip" checksum = "d4fb59a5d0b9bb91c6800b55a0fa4037dcf4d2a17e55750ffb369572a4dd5906" -integrity = "29e54f58902a2d2c7bda307c15b24f1518c5b96d476922ebea9779e1b83b61c7" +integrity = "6a1b1a1a1807633a3d16882fc33da87d5f7fb2b1ff104675b3479c602b661ea7" diff --git a/contracts/src/GenericCallForwarder.sol b/contracts/src/GenericCallForwarder.sol index d7c36df..a6d7160 100644 --- a/contracts/src/GenericCallForwarder.sol +++ b/contracts/src/GenericCallForwarder.sol @@ -3,10 +3,10 @@ pragma solidity ^0.8.30; import {IERC1271} from "@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol"; import {Address} from "@openzeppelin-contracts-5.6.1/utils/Address.sol"; -import {ForwarderBase} from "anoma-forwarder-bases-1.0.0-rc.4/src/ForwarderBase.sol"; -import {IVersion} from "anoma-forwarder-bases-1.0.0-rc.4/src/interfaces/IVersion.sol"; -import {SweepableNativeTokenReceiver} from "anoma-forwarder-bases-1.0.0-rc.4/src/SweepableNativeTokenReceiver.sol"; -import {TransientFallbackHandler} from "anoma-forwarder-bases-1.0.0-rc.4/src/TransientFallbackHandler.sol"; +import {ForwarderBase} from "anoma-forwarder-bases-1.0.0/src/ForwarderBase.sol"; +import {IVersion} from "anoma-forwarder-bases-1.0.0/src/interfaces/IVersion.sol"; +import {SweepableNativeTokenReceiver} from "anoma-forwarder-bases-1.0.0/src/SweepableNativeTokenReceiver.sol"; +import {TransientFallbackHandler} from "anoma-forwarder-bases-1.0.0/src/TransientFallbackHandler.sol"; /// @title GenericCallForwarder /// @author Anoma Foundation, 2026 @@ -56,7 +56,7 @@ contract GenericCallForwarder is /// @inheritdoc IVersion function getVersion() external pure override returns (bytes32 version) { - version = "1.0.0-rc.2"; + version = "1.0.0"; } /// @inheritdoc IERC1271 diff --git a/contracts/test/GenericCallForwarder.unit.t.sol b/contracts/test/GenericCallForwarder.unit.t.sol index 8c1b382..55c383f 100644 --- a/contracts/test/GenericCallForwarder.unit.t.sol +++ b/contracts/test/GenericCallForwarder.unit.t.sol @@ -6,8 +6,9 @@ import {IERC1271} from "@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol"; import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {Errors} from "@openzeppelin-contracts-5.6.1/utils/Errors.sol"; import {ReentrancyGuardTransient} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuardTransient.sol"; -import {IVersion} from "anoma-forwarder-bases-1.0.0-rc.4/src/interfaces/IVersion.sol"; -import {ERC20Example} from "anomapay-erc20-forwarder-1.1.0-rc.3/test/examples/ERC20.e.sol"; +import {IVersion} from "anoma-forwarder-bases-1.0.0/src/interfaces/IVersion.sol"; +import {ERC20Example} from "anoma-forwarder-bases-1.0.0/test/examples/ERC20Example.sol"; + import {Test} from "forge-std-1.16.1/src/Test.sol"; import {WETH} from "solady-0.1.26/src/tokens/WETH.sol"; @@ -188,13 +189,12 @@ contract GenericCallForwarderTest is Test { assertEq(_genericCallFwd.isValidSignature(hash, signature), IERC1271.isValidSignature.selector); } - function test_check_that_the_current_version_is_a_pre_release_of_v1_0_0() public view { - int256 lt = -1; - //int256 eq = 0; - int256 gt = 1; + function test_check_that_the_current_version_is_the_initial_release_v1_0_0() public view { + //int256 lt = -1; + int256 eq = 0; + //int256 gt = 1; - assertEq(SemVerLib.cmp(IVersion(address(_genericCallFwd)).getVersion(), "0.0.0"), gt); - assertEq(SemVerLib.cmp(IVersion(address(_genericCallFwd)).getVersion(), "1.0.0"), lt); + assertEq(SemVerLib.cmp(IVersion(address(_genericCallFwd)).getVersion(), "1.0.0"), eq); } } diff --git a/contracts/test/integration/GenericCallForwarder.native.t.sol b/contracts/test/integration/GenericCallForwarder.native.t.sol index 2f24726..565fec8 100644 --- a/contracts/test/integration/GenericCallForwarder.native.t.sol +++ b/contracts/test/integration/GenericCallForwarder.native.t.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.30; -import {IForwarder} from "anoma-forwarder-bases-1.0.0-rc.4/src/interfaces/IForwarder.sol"; -import {INativeTokenReceiver} from "anoma-forwarder-bases-1.0.0-rc.4/src/interfaces/INativeTokenReceiver.sol"; -import {ERC20Forwarder} from "anomapay-erc20-forwarder-1.1.0-rc.3/src/ERC20Forwarder.sol"; +import {IForwarder} from "anoma-forwarder-bases-1.0.0/src/interfaces/IForwarder.sol"; +import {INativeTokenReceiver} from "anoma-forwarder-bases-1.0.0/src/interfaces/INativeTokenReceiver.sol"; +import {ERC20Forwarder} from "anomapay-erc20-forwarder-1.1.0-rc.4/src/ERC20Forwarder.sol"; import {Test} from "forge-std-1.16.1/src/Test.sol"; import {WETH} from "solady-0.1.26/src/tokens/WETH.sol"; diff --git a/contracts/test/integration/GenericCallForwarder.swap.t.sol b/contracts/test/integration/GenericCallForwarder.swap.t.sol index f0d6c73..098c41f 100644 --- a/contracts/test/integration/GenericCallForwarder.swap.t.sol +++ b/contracts/test/integration/GenericCallForwarder.swap.t.sol @@ -3,11 +3,11 @@ pragma solidity ^0.8.30; import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; import {Time} from "@openzeppelin-contracts-5.6.1/utils/types/Time.sol"; -import {IForwarder} from "anoma-forwarder-bases-1.0.0-rc.4/src/interfaces/IForwarder.sol"; -import {ISweepable} from "anoma-forwarder-bases-1.0.0-rc.4/src/interfaces/ISweepable.sol"; -import {ERC20Forwarder} from "anomapay-erc20-forwarder-1.1.0-rc.3/src/ERC20Forwarder.sol"; -import {ERC20Example} from "anomapay-erc20-forwarder-1.1.0-rc.3/test/examples/ERC20.e.sol"; -import {DeployPermit2} from "anomapay-erc20-forwarder-1.1.0-rc.3/test/script/DeployPermit2.s.sol"; +import {IForwarder} from "anoma-forwarder-bases-1.0.0/src/interfaces/IForwarder.sol"; +import {ISweepable} from "anoma-forwarder-bases-1.0.0/src/interfaces/ISweepable.sol"; +import {ERC20Example} from "anoma-forwarder-bases-1.0.0/test/examples/ERC20Example.sol"; +import {ERC20Forwarder} from "anomapay-erc20-forwarder-1.1.0-rc.4/src/ERC20Forwarder.sol"; +import {DeployPermit2} from "anomapay-erc20-forwarder-1.1.0-rc.4/test/script/DeployPermit2.s.sol"; import {Test} from "forge-std-1.16.1/src/Test.sol"; import { diff --git a/contracts/test/mocks/ReentrantCaller.m.sol b/contracts/test/mocks/ReentrantCaller.m.sol index 9480448..cdadb55 100644 --- a/contracts/test/mocks/ReentrantCaller.m.sol +++ b/contracts/test/mocks/ReentrantCaller.m.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.30; -import {IForwarder} from "anoma-forwarder-bases-1.0.0-rc.4/src/interfaces/IForwarder.sol"; +import {IForwarder} from "anoma-forwarder-bases-1.0.0/src/interfaces/IForwarder.sol"; contract ReentrantCallerMock { IForwarder internal immutable _FORWARDER;